Wrocław, 1 lipca 2009

Raport z projektu kursu: METODY I ALGORYTMY SZTUCZNEJ INTELIGENCJI

Prowadzący:
dr inż. Witold Paluszyński

Autorzy:
Grzegorz Węglarz
Sebastian Szczęch



Rozpoznawanie drogowej i kolejowej sygnalizacji świetlnej


Streszczenie

Najważniejszą sprawą w transporcie lądowym jest bezpieczeństwo ruchu. Bardzo ważne jest właściwe rozpoznawanie przez osoby kierujące pojazdami, sygnałów podawanych przez specjalne sygnalizatory świetlne. Możliwość niewłaściwego odczytania sygnałów może być przyczyną katastrofy w ruchu lądowym, która może przynieść spore straty materialne, jak i ofiary w ludziach.
Dlatego też postanowiliśmy zbadać możliwość zbudowania inteligentnego systemu wspomagającego osoby kierujące pojazdami w ocenie sytuacji, opartego na kamerze cyfrowej i programie obsługującym, który wykrywałby sygnalizatory i sygnały na nich wyświetlane.



This report describes a project for the course: METHODS AND ALGORITHMS OF ARTIFICIAL INTELLIGENCE

Conducted by:
dr inż. Witold Paluszyński

Authors:
Grzegorz Węglarz
Sebastian Szczęch



Recognition of the road and rail traffic lights



Abstract

Paramount thing in overland transport is movement safeness. Very important is right recognizing through people who driving vehicles, administration signals through special traffic lights. Possibility wrongly signals recording can be reason to accident in overland transport which perhaps bring huge material incurs, and in people too.
That's why we decide to explore possibility creating intelligent system. Which help people who driving vehicles to estimate situation, founded on camases and operating programme. Who will be detect traffic lights tread signals in this display.



Wstęp

System rozpoznający sygnały na semaforach i sygnalizatorach ulicznych postanowiliśmy zbudować korzystając z kamery cyfrowej zamontowanej na pojeździe (obserwującej widok z perspektywy osoby kierującej pojazdem) podłączonej do komputera, na którym będzie istniał program obsługujący ją, dokonujący odczytu pojedynczych klatek filmu oraz lokalizujący na każdej klatce (o ile w rzeczywistości na niej jest) sygnalizator i określający jaki sygnał on wyświetla. Następnie dostarczałby prowadzącemu pojazd komunikat o rozpoznanym sygnale. Przykładowo: "STOP", "WOLNA DROGA" czy "ZWOLNIJ DO 40 KM/H" itp.

Typowa sygnalizacja drogowa w Polsce
Fot. 1. Wrocław. Typowa sygnalizacja drogowa w Polsce

Sygnalizacja drogowa

Sygnalizacja świetlna jaką można spotkać na polskich drogach, w przeciwieństwie do kolejowej, na początku wydawała się nam jednolita pod względem konstrukcji. Zazwyczaj składa się z pojedynczych sygnalizatorów 3-komorowych (górny czerwony, środkowy żółty i dolny koloru zielonego). Wyświetlane są sygnały: czerwony, żółty, czerwono-żółty oraz zielony. Jednakże analizując wygląd różnych skrzyżowań wrocławskich ulic i przeglądając strony www firm zajmujących się produkcją i montażem takich urządzeń okazało się, że jest cała gama sygnalizatorów, które znacząco różnią się od siebie rozmiarem, rozłożeniem soczewek oraz dołączeniem ekranów kontrastowych. Wydawało się nam, że na klatce filmu będziemy wyszukiwać jeden taki sam kształt sygnalizatorów, a okazało się, że będzie inaczej. Dlatego postanowiliśmy zająć się od razu tylko sygnalizatorami z ekranami kontrastowymi (Fot. 1.), które stanowią już większość, a ich liczba będzie stale wzrastać, gdyż właśnie takiego typu sygnalizatory są lepiej widoczne dla kierowców i projektanci skrzyżowań głównie je biorą pod uwagę. Pominęliśmy już na początku sygnalizatory świetlne typu "zielona strzałka" czy tzw. znaki o zmiennej treści.

Sygnalizator z zielona strzalka Fot. 2. Podwójny sygnalizator uliczny z zieloną strzałką, bez ekranu kontrastowego, połączony z sygnalizatorem dla pieszych.

Sygnalizatory różniące się zastosowaniem ekranu kontrastowego Fot. 3. Sygnalizatory różniące się zastosowaniem ekranu kontrastowego. Typowa sygnalizacja przy jednym kierunku jazdy.

Różne sygnalizatory na tym samym skrzyżowaniu
Fot. 4. Zastosowanie różnych typów sygnalizatorów na tym samym skrzyżowaniu.
Na górze sygnalizator z coraz częściej stosowanym ekranem kontrastowym.

Sygnalizatory tylko na górze
Fot. 5. Skrzyżowanie z sygnalizatorami dotyczącymi różnych kierunków jazdy.
Brak dodatkowego sygnalizatora zamontowanego z boku, jak to jest na Fot. 3 i 4.

Sygnalizacja kolejowa

Kolejowa sygnalizacja świetlna używana w Polsce musi być zgodna z dwoma instrukcjami wydanymi przez PKP Polskie Linie Kojowe S.A. i zatwierdzonymi rozporządzeniem Ministra Infrastruktury. Są to:

Dzięki temu wszystkie sygnalizatory (semafory) w Polsce mają podobny kształt i identyczny rozmiar soczewek. Różnią się tylko kolorystyką słupów (biało-czerwone dotyczą pociągów, koloru szarego tylko manewrów). W przypadku rozpoznawania sygnałów, co jest głównym celem tego projektu, słupy sygnalizatorów w ogóle nas nie interesują. Naszym zainteresowaniem jest objęta tylko sama głowica semafora, bo to ona zawiera komory z soczewkami. Tło głowic zawsze jest koloru czarnego. Jedynym problemem jeżeli chodzi o kształt semaforów, jest różna ilość świateł. W Polsce stosuje się semafory jedno-, dwu-, trzy-, cztero- i pięciokomorowe. Oznacza to różne wysokości głowic semaforów. W szczególnych przypadkach, aby zwiększyć ilość możliwych sygnałów, na semaforze, tuż pod głowicą montuje się tzw. pas świetlny, który może wyświetlić kolor zielony lub pomarańczowy. Aby ułatwić sobie pracę nad semaforami kolejowymi postanowiliśmy zajmować się tylko semaforami 5-komorowymi bez pasów świetlnych, gdyż to ten rodzaj jest najczęściej spotykany na polskiej sieci kolejowej.

Widok z lokomotywy Fot. 6. Widok z kabiny lokomotywy serii SP32. Widoczny semafor 5-komorowy.

Inne semafory kolejowe Fot. 7. Stacja Wrocław Sołtysowice. Semafory trzy- i cztero-komorowe, które nie objęliśmy naszym projektem.

Taki semafor pięciokomorowy wyświetla największą ilość dopuszczalnych sygnałów ze wszystkich typów kolejowych sygnalizatorów (pomijamy te z pasami świetlnymi, gdyż takie stawia się bardzo rzadko). Sygnały te mogą być kombinacją nie więcej niż dwóch kolorów z pośród takich kolorów jak: czerwony, biały, pomarańczowy i zielony. Dodatkowo jeden z nich może być sygnałem migającym (z częstotliwością 1 Hz). Taki semafor ma następujące rozłożenie soczewek (patrząc od góry): zielona, pomarańczowa, czerwona, pomarańczowa, biała.

Typowy semafor 5-komorowy.
Fot. 8. Stacja Wrocław Kuźniki. Typowy semafor 5-komorowy.

Rzadko spotykany semafor 5-komorowy z pasem świetlnym
Fot. 9. Dąbrowa Oleśnicka. Ciekawy semafor 4-komorowy z pasem świetlnym.

Zainteresowanych co znaczy dana konfiguracja świateł odsyłamy do literatury [7].

Przebieg prac nad projektem

Rozpoczęliśmy prace od zgromadzenia obrazów przedstawiających semafory 5-komorowe oraz sygnalizatory drogowe. W przypadku tych drugich wykonaliśmy przejazd samochodem po ulicach Wrocławia, w czasie którego nakręciliśmy kilka filmów kamerą cyfrową. Postanowiliśmy wykorzystać do tego kamerę internetową typu LOGITECH V-UB2, gdyż można było ją w prosty sposób unieruchomić. Dodatkowo przypuszczaliśmy, że kamera internetowa będzie wydajniejsza w przypadku testów, które również polegały na przejeździe po mieście samochodem. Jej mankamentem była nienajlepsza jakość obrazu, jednakże i tak lepsza niż gdybyśmy zdecydowali się kręcić film aparatem cyfrowym.
Podobnie powinniśmy postąpić z semaforami kolejowymi i również nakręcić film z przejazdu lokomotywą, ale ze zrozumiałych powodów musieliśmy zadowolić się zdjęciami semaforów wykonanymi aparatem cyfrowym typu SONY DSC S-85. Zdjęcia imitowały klatki filmu nakręconego w lokomotywie.

Kolejnym etapem była obróbka filmu i zdjęć. Do tego postanowiliśmy wykorzystać bibliotekę OpenCV:

OpenCV

OpenCV (Open Source Computer Vision Library) jest biblioteką funkcji wykorzystywanych podczas obróbki obrazu, opartą o otwarty kod, którego tworzenie rozpoczął Intel, a potem udostępnił wszystkim chętnym na zasadach OpenSource. Najważniejszą jej cechą dla nas było to, że jest ona zoptymalizowana pod kątem operacji w czasie rzeczywistym. Wykorzystaliśmy następujące jej możliwości:

Po zapoznaniu się z biblioteką OpenCV rozpoczęliśmy kolejny etap prac polegający na segmentacji obrazów z kamery i aparatu w celu stworzenia wektora uczącego sieć neuronową. Na tym etapie jeszcze myśleliśmy, że będziemy korzystać z dwóch sieci neuronowych, które nauczymy rozpoznawać osobno kolejowe i drogowe sygnalizatory. Jednak natrafiliśmy tutaj na spory problem, gdyż nie mogliśmy odkryć jednoznacznej metody wyodrębniającej sygnalizatory. Bez niej stworzenie wektora uczącego byłoby po prostu niewykonalne, nie mówiąc już o tym, że sam proces rozpoznawania sygnalizatorów na podstawie nauczonej sieci neuronowej też potrzebuje metod segmentacji. Po tym doświadczeniu rozpoczęliśmy poszukiwania gotowych klasyfikatora rozpoznających zadany kształt. Przyszła nam z pomocą znów biblioteka OpenCV, która posiada narzędzia do tworzenia własnych klasyfikatorów hierarchicznych opartych na cechach wywiedzionych z funkcji Haara (ang. Haar-like features), które po analizie kształtu potrafią wykryć obiekty o takich kształtach jakimi zostały wytrenowane. Okazało się, że jest to potężne i obiecujące narzędzie.

Klasyfikator kaskadowy cech Haar-podobnych

Detektor obiektów jaki umieszczono w bibliotece OpenCV został pierwotnie zaproponowany przez Pawła Viola i poprawiony przez Rainera Lienharta z Intel Labs. Klasyfikator ten został oparty o cechy Haar-podobne wywodzące się z funkcji falkowych zaproponowanych na początku XX wieku przez niemieckiego matematyka Alfreda Haara. Jest tworzony na podstawie wektora uczącego, który powinien składać się z co najmniej kilkuset próbek danego obiektu (noszą one nazwę "próbek pozytywnych" gdyż zawierają dany obiekt) oraz jeszcze większej ilości "próbek negatywnych" które powinny być tej samej wielkości co pozytywne, z tym warunkiem, że nie powinny w ogóle zawierać szukanego obiektu. Posłużą za tło w procesie uczenia i dopasowywania wzorca.
Do stworzenia wektora uczącego służy program createsamples.exe. Otrzymamy plik formatu VEC.
Wektor uczący stanowi wejście innego programu haartraining.exe, dzięki któremu otrzymujemy plik formatu XML.

Sposób w jaki stworzyliśmy własny klasyfikator nie będziemy tutaj omawiali. Zainteresowanych odsyłamy do podanej na końcu literatury, pozycje [3] i [4] oraz dokumentacji biblioteki OpenCV. Mimo pewnych problemów, które wyeliminowaliśmy żmudną metodą "prób i błędów", udało się nam stworzyć własne 2 klasyfikatory, osobno do lokalizowania semaforów i sygnalizatorów drogowych.

Lokalizacja obiektów za pomocą klasyfikatora cech Haar-podobnych

Przeszkolony klasyfikator lokalizuje obiekty na podstawie weryfikacji hipotezy podzielonej na etapy. Ostateczna decyzja podejmowana jest na podstawie decyzji podjętych w wcześniejszych etapach (na "niższym szczeblu"). Na każdym etapie weryfikacji wykorzystywany jest tzw. klasyfikator złożony wykorzystujący 4 różne techniki pobudzania (obliczające wagi). Są to: Discrete Adaboost, Real Adaboost, Gentle Adaboost i Logitboost.
Podstawowym klasyfikatorem jest drzewo decyzyjne (z co najmniej 2 liśćmi). Decyzje „najniższego szczebla” podejmowane są w oparciu o cechy Haar-podobne, którymi są proste "maski" mierzące podstawowe cech obrazu. Jest ich 14 i zostały przedstawione na Rys. 1.

cechy Haar

Rys.1. Graficzne przedstawienie 14 cech Haar-podobnych.

Obraz jest skanowany klasyfikatorem w celu znalezienia pozycji obiektu. Klasyfikator został tak stworzony aby mógł wykrywać te same obiekty o różnych rozmiarach (np. gdy obiekty znajdowały się w różnych odległościach od obserwatora). Jest to możliwie dzięki procedurom przeszukiwującym w różnych skalach. Dodatkowo stosowana jest tzw. "technika przesuwnego okna", dzięki której żadna część obrazu nie jest pomijana w poszukiwaniach.

Więcej o stosowanych cechach Haar-podobnych i budowie drzewa decyzyjnego można znaleźć w literaturze [2].

Działanie programu

Program jaki napisaliśmy w języku C++ przy użyciu środowiska programistycznego Dev C++ 4.9.9.2 dostępnego na zasadach "freeware", był wzorowany na kodzie źródłowym przykładowego programu facedetect.exe dostępnego wraz z biblioteką OpenCV. Posiada on funkcję cvHaarDetectObjects, która korzystając z również dostępnych w bibliotece OpenCV własnych klasyfikatorów cech Haar-podobnych formatu XML, potrafi ze sporymi sukcesami poprawnie wykrywać na filmach i fotografiach ludzkie twarze. Nic nie stało na przeszkodzie, aby skorzystać z gotowego kodu, do którego dopisano własną metodę rozpoznawania kolorów opierającą się na funkcji CV_RGB2HSV, która dokonuje konwersji przestrzeni barw z RGB na HSV. Na podstawie wartości rozpiętości barwy H (Hue - barwa jest wartością kołową z zakresu 0 do 360 stopni), nasza metoda bada kolor pikseli leżących na linii symetrii znalezionego obiektu. Przykładowo kolor czerwony mieści się w zakresie barwy (H) od 354 do 6 stopni.

Testy

Testy rozpoczęliśmy najpierw tylko na zdjęciach i od razu okazało się, że metoda jaką wybraliśmy do określania kolorów soczewek zapalonych na sygnalizatorach uniemożliwia poprawne działanie całości. Postanowiliśmy kolejne testy przeprowadzić tylko w celu zbadania skuteczności obydwu naszych klasyfikatorów.
Działanie program zostało ograniczone do otworzenia zadanego obrazu w osobnym okienku i rysowaniu prostokątów na badanym obrazie, tam gdzie klasyfikator cech Haar-podobnych zlokalizował sygnalizatory.

Rozpoznawanie sygnalizacji kolejowej

Klasyfikator mający rozpoznawać semafory 5-komorowe, po wykonaniu testów na 10 zdjęciach zawierających te sygnalizatory, nie zlokalizował poprawnie żadnego, w 3 przypadkach narysował "prostokąt" będący w rzeczywistości linią zawierającą górną krawędź zdjęcia.
Sądzimy, że było spowodowane tym, iż przy tworzeniu go, a dokładniej w etapie treningu, posiadaliśmy zbyt mały zbiór próbek negatywnych.

Porażka klasyfikatora rozpoznającego semafory
Rys. 2. Czerwona linia u góry - jedyny zauważalny efekt działania klasyfikatora mającego rozpoznawać semafory.

Rozpoznawanie sygnalizacji drogowej

Do testowania rozpoznawania sygnalizacji drogowej program został zmodyfikowany, tak aby obsługiwał kamerę cyfrową. Dzięki funkcjonalności biblioteki OpenCV polegało to na zamianie kilku funkcji i dopisaniu kilku linii kodu. Testowanie klasyfikatora zostało przeprowadzone podczas kolejnej przejażdżki samochodem po ulicach Wrocławia. Poniżej przedstawione zostały zrzuty z ekranu pokazujące najciekawsze efekty działania programu.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 3. Poprawne rozpoznanie jednego sygnalizatora i brak wykrycia drugiego, identycznego. Przechylenie obrazu wywołane wstrząsami od jazdy po uszkodzonej nawierzchni ulicy.

Efekty rozpoznawania sygnalizacji ulicznej
Rys. 4. Błędne zaklasyfikowanie świateł samochodowych jako sygnalizatorów, przy niewykryciu dwóch prawdziwych sygnalizatorów. Obiektyw kamery jest skierowany "pod słońce".

Efekty rozpoznawania sygnalizacji ulicznej Rys. 5. Zaskakujące wykrycie obu sygnalizatorów, w tym też takiego typu, którego klasyfikator nie znał, gdyż był uczony tylko sygnalizatorów z ekranami kontrastowymi.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 6. Wszystkie sygnalizatory zostały wykryte poprawnie.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 7. Zupełnie niezrozumiałe wykrycie tylko jednego z dwóch identycznych sygnalizatorów.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 8. Zaskakująca sytuacja. W rzeczywistości jest to nadmiarowe wykrycie sygnalizatora dolnego, przy nie wykryciu jednego z umieszczonych u góry. Jednakże niewykryty sygnalizator dotyczy tylko autobusów i tramwajów.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 9. Sztandarowy przykład niewykrycia sygnalizatora.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 10. Brak wykrycia jednego z sygnalizatorów, najprawdopodobniej spowodowane "zlaniem się" sygnalizatora z tłem.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 11. Bardzo ciekawy efekt rozpoznania sygnalizacji ulicznej. Wykryty został prawdziwy sygnalizator umieszczony daleko od samochodu. Niestety, klasyfikator zaklasyfikował światło samochodu również jako jeszcze jeden sygnalizator.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 12. Poprawne wykrycie wszystkich 3 sygnalizatorów wraz z całkowicie błędnym zaklasyfikowaniem zaciemnionego obszaru jako czwartego sygnalizatora.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 13. Idealne wręcz wykrycie obu sygnalizatorów.

Efekty rozpoznawania sygnalizacji ulicznej Rys. 14. Kolejna ciekawostka. Zaklasyfikowanie dwóch sygnalizatorów dla samochodów i autobusów jako całości, przy poprawnym wykryciu dwóch pozostałych i pominięciu sygnalizatora, który został wyłączony z powodu zmiany organizacji ruchu na skrzyżowaniu.


Przedstawione powyżej 12 przykładów działania klasyfikatora zostały tak dobrane, aby pokazywały różne jego reakcje na świat rzeczywisty. Niestety takie sytuacje jak przedstawiona na Rys. 9. stanowiły około połowy z jakimi się spotkaliśmy. Przedstawiliśmy tylko jeden taki przykład, bo nie ma sensu pokazywać w większej ilości zupełnego braku rozpoznania jakichkolwiek sygnalizatorów. Trudno ocenić nasz klasyfikator ilościowo, jednak pojawiły się sytuacje zupełnie poprawnego wykrycia wszystkich sygnalizatorów (Rys. 6 i 13) co daje nam sporo satysfakcji.

Wnioski

Klasyfikator "Haar-like features" z biblioteki OpenCV

Użyty klasyfikator cech Haar-podobnych okazał się narzędziem mającym wielkie możliwości, a prostota jego skonstruowania i użycia jest największym atutem. Możliwość wyuczenia lokalizowania dowolnych obiektów nadaje temu narzędziu wielorakie zastosowanie w przeszukiwaniu wzorca na obrazach. Największą wadą jest to, że w procesie uczenia trzeba korzystać najlepiej z potężnej bazy wcześniej przygotowanych obrazów-próbek. Dokumentacja klasyfikatora wspomina, że dopiero przy zastosowaniu około 1500 próbek pozytywnych i 3500 negatywnych efektywność poprawnego wykrycia wyuczonego obiektu na zdecydowanej ilości obrazów jest wysoka. Niestety pozyskanie takich ilości materiałów uczących może być co najmniej czasochłonne, jak i trudne i nużące.
Najprawdopodobniej to zastosowanie przez nas mniejszej ilości próbek uczących spowodowało, że mieliśmy tak dużo przypadków niepoprawnego wykrycia lub w ogóle nie wykrycia niektórych sygnalizatorów. Sądzimy jednak, że posiadając więcej filmów, zdjęć oraz czasu, potrafilibyśmy stworzyć tak samo dobry klasyfikator rozpoznający drogową albo kolejową sygnalizację jaki jest dołączony do biblioteki OpenCV, a wykrywający tylko ludzkie twarze.

Skuteczność naszego systemu rozpoznającego sygnały

Przeprowadzone doświadczenia i testy wykazały błędność niektórych wstępnych założeń oraz uwydatniły problemy, których nie braliśmy pod uwagę.
Chcielibyśmy je poniżej wymienić i krótko scharakteryzować:

  1. Balans kolorów kamer i aparatów cyfrowych.
    Związane to jest z niedoskonałością tych urządzeń, które bardzo często fałszują rzeczywiste kolory, niepotrzebnie rozjaśniając lub zmieniając kontrast. Dzieje się tak gdyż reagują na takie zdarzenia jak zmiana nasłonecznienia, niepełne zachmurzenie, skierowanie obiektywu w stronę słońca, itp.
    W naszym przypadku bardzo często kolor zielony kamera widziała jako biały, albo nie rozróżniała między kolorami czerwonym i pomarańczowym. To wszystko ma ogromne znaczenie, gdyż podczas jazdy zawsze niektóre sygnały będą musiały być rozpoznane przy niekorzystnych warunkach. Obecne urządzenia cyfrowe nie są tak doskonałe jak ludzkie oko i długo nie będą...
  2. Właściwe zamontowanie urządzeń rejestrujących obraz na pojeździe
    Urządzenia powinny być zamontowane w taki sposób aby były trwale unieruchomione, a zarazem niepodatne na drgania podczas jazdy. W przypadku zamontowania ich na pojazdach drogowych, mamy do czynienia ze szczególnie dużą ilość wstrząsów (nierówności i uszkodzenia nawierzchni, przejazdy przez tory tramwajowe i kolejowe). W przypadku pojazdów szynowych problem ten ma inne przyczyny. W kabinach lokomotyw występują spore drgania wytwarzane przez silniki, sprężarki, przetwornice, itp. Wstrząsy związane z jazdą są mniejsze i dotyczą głównie przejeżdżania po rozjazdach. Niezastosowanie przy montażu kamery podzespołów amortyzujących drgania ma bezpośredni wpływ na jakość obrazu i możliwość błędnego wykrywania sygnalizatorów.
  3. Stracenie z pola widzenia sygnalizatora
    Jak już napisaliśmy we wstępie, kamera będzie zamontowana na pojeździe tak, aby sczytywany przez nią obraz pokrywał się z tym co widzi osoba kierująca pojazdem.
    W przypadku pojazdów szynowych, gdzie kabina jest umieszczona wysoko nad torami, nie ma żadnych problemów z zamontowaniem urządzenia rejestrującego na takiej samej wysokości na jakiej znajdują się głowice semaforów.
    Zupełnie inaczej to wygląda w ruchu drogowym. Większość skrzyżowań, na których można jechać w co najmniej dwóch kierunkach posiada tylko sygnalizatory umieszczone wysoko nad jezdnią (co można zobaczyć na Fot. 5). Jeżeli nasz pojazd będzie pierwszym lub drugim w kolejce ustawionej pod sygnalizatorami, kamera może stracić je z pola widzenia. Rozwiązaniem problemu może być zamontowanie w samochodzie dodatkowej kamery awaryjnej, która przejmowałaby rolę przewodnią w przypadku podjechania pojazdem pod same światła.
  4. Poprawny wybór "naszego" sygnalizatora
    Jest to najpoważniejszy problem w przypadku rozpoznawania sygnalizatorów kolejowych i drogowych. Problem tak bardzo złożony, gdyż w przypadku wykrycia w polu widzenia kamery większej ilości sygnalizatorów, system nie będzie wiedział czy nadmiarowe sygnalizatory są faktycznie prawdziwymi sygnalizatorami. Przypuśćmy, że nasz system jest jednak tak doskonały, że zawsze wykrywa prawdziwe sygnalizatory. Wówczas musimy się zmierzyć z problemem: "który sygnalizator pokazuje sygnał przeznaczony dla naszego pojazdu?" Przyjęcie prostej zasady: w ruchu drogowym, jest nim sygnalizator najbliższy środka obrazu, a w przypadku ruchu kolejowego, sygnalizator najbliższy prawej stronie, dawałoby rezultaty tylko w przypadku drogi po linii prostej. Problem można byłoby rozwiązać tworząc dodatkowe algorytmy śledzące na obrazie toki szyn i pasy namalowane na jezdniach. Sądzimy jednak, że tak rozbudowany system popełniałby jeszcze więcej błędnych decyzji.
  5. Odległość od sygnalizatora i dynamiczna zmiana rejestrowanego obrazu
    Problem dotyczący w największym stopniu pojazdów szynowych. Masy pociągów, dochodzące w przypadku towarowych do około 3200 ton, sprawiają, że trzeba brać pod uwagę bardzo dużą drogę hamowania. W przypadku poruszania się z prędkością do 120 km/h przyjmuje się, że wynosi ona 1000 metrów, powyżej tej prędkości, 1300 m. Drogę hamowania wynoszącą 1600 m. przyjęto dla pociągów ekspresowych i Intercity, które mogą się poruszać w polskich warunkach z prędkością maksymalną 160 km/h. To wszystko oznacza, że sygnał z semafora powinien być rozpoznawany już z odległości co najmniej 1000 metrów. Obecne kamery z tym problemem mogą sobie znakomicie poradzić, gdyż posiadają bardzo duże przybliżenia. Wystarczy właściwie dopasować funkcję zmiany "zooma" do prędkości lokomotywy, przy zbliżaniu się do semafora. Bez tego nasz system nie mógłby zapewniać bezpieczeństwa w ruchu kolejowym, a stosowanie podglądu na stałym dużym zoomie oznaczałoby w pewnej chwili stracenie z pola widzenia sygnalizatora.

Literatura

[1] Biblioteka OpenCV - opis instalacji, dokumentacja. http://opencv.willowgarage.com/wiki/

[2] Jak działa klasyfikator kaskadowy oparty na cechach Haar-podobnych, http://www.lienhart.de/ICIP2002.pdf

[3] Jak zbudować własny klasyfikator kaskadowy bazujący na cechach Haar-podobnych, http://note.sonots.com/SciSoftware/haartraining.html

[4] Przykład konstrukcji klasyfikatora kaskadowego cech Haar-podobnych, http://robotik.inflomatik.info/other/opencv/OpenCV_ObjectDetection_HowTo.pdf

[5] Projekt dotyczący rozpoznawania ludzkich twarzy oparty o klasyfikator kaskadowy bazujący na cechach Haar-podobnych, http://www.cs.put.poznan.pl/kkrawiec/ro/lab/2006-1/ro.pdf

[6] Strona www jednej z firm zajmujących się sprzedażą drogowych sygnalizatorów świetlnych, http://www.apm.pl/oferta-ekrany_kontrastowe.php/

[7] Instrukcja sygnalizacji Ie-1, http://kolej.krb.com.pl/e1/e1.htm

[8] Instrukcja Ie-4 "Wytyczne techniczne budowy urządzeń SRK w PKP", http://kolej.krb.com.pl/wtbe10/wtbe10.htm


Valid HTML 4.0 Transitional