[PL] [ENG]
logo
- FRED -
wstęp

Dzisiejsze społeczeństwo informacyjne ma coraz więcej danych do przetworzenia. Część z tej analizy to skomplikowane operacje wymagające ludzkiej inteligencji i kreatywności, część jednak to działania czysto schematyczne, które w prosty sposób zawsze doprowadzą do oczekiwanego wyniku. Ten drugi typ przetwarzania może być z powodzeniem wspomagany przez komputery.


Rys. 1 Przykładowe filtry : a) wykrywanie krawędzi b) wyeksponowanie ludzkiej skóry.


Niniejsza publikacja ma na celu przybliżenie roli maszyn cyfrowych w analizie obrazów. Prowadzonych jest wiele badań mających na celu wykorzystanie komputerowego przetwarzania obrazów w bardzo specyficznych dziedzinach: rozpoznawaniu pojazdów militarnych, chorób na różnego rodzaju zdjęciach medycznych czy rekonstruowaniu trójwymiarowej rzeczywistości na podstawie zdjęć. Do realizacji tych celów wykorzystywane są pewne metody. Jedną z nich są sztuczne sieci neuronowe zdolne do przetwarzania obrazu z pewnym zakłóceniami, które mogą w sposób "inteligentny" wyeliminować. Sieć taką należy nauczyć jak obiekt wygląda, w różnych sytuacjach, tak, aby program sam był w stanie podjąć decyzję czy analizowany obraz zawiera poszukiwany obiekt. Samo użycie sieci neuronowych byłoby jednak nieefektywne, ponieważ komputer miałby do przetworzenia zdecydowanie za dużo informacji. Tak więc obszar przeszukiwań należy zawęzić nie tracąc cennych informacji. Tutaj z pomocą przychodzą różnego rodzaju filtry, które wydobywają charakterystykę danych pod interesującym nas kątem, np. wyróżniają krawędzie (Rys.1a) lub rozpoznają ludzką skórę (Rys.1b). Tak wstępnie przetworzony obraz jest gotowy do bardziej skomplikowanej analizy, która ma szanse zakończyć się teraz w znacznie krótszym czasie.

Zagadnieniem, które zostanie szerzej omówione w tej publikacji jest detekcja ruchu oraz śledzenie go. Cały system monitorowania został w szczegółach opisany poniżej.




Rys. 2 Schemat blokowy działania algorytmu detekcji ruchu.
Rys. 3a) Zarejestrowany obraz.

Rys. 3b) Wykryty ruch.
wykrywanie ruchu - algorytm podstawowy

Główny algorytm przetwarzania obrazu podobny jest do rozpoznawania ruchu przez człowieka - poprzez różnice w kolorach. Analizując schemat blokowy (Rys. 2) zauważyć można że przetwarzanie odbywa się pixel po pixelu po całym obrazie. Na wejściu przetwarzania zakładamy, że mamy do dyspozycji dwa obrazy: stan sprzed chwili i stan obecny. Każdy pixel składa się z trzech barw: czerwonej (R), zielonej (G) i niebieskiej (B), które mogą przybierać wartości o 0 do 255 (0x00-0xFF). Te właśnie wartości są porównywane w procesie przetwarzania. Często w analizie obrazu realizowanej w czasie rzeczywistym pojawia się pewne zakłócenia, które należy w jakiś sposób wyeliminować z procesu detekcji ruchu. Jako, że zakłócenia te objawiają się głównie niskokontrastowymi, jednopixelowymi odbarwieniami w ciemnych obszarach, ustalamy pewien poziom błędu (errorLevel). Jego wartość doświadczalnie wyznaczono jako 90 w warunkach typowego światła dziennego.

Śledząc dokładniej wspomniany już schemat blokowy (Rys. 2) można zauważyć, że każda barwa danego punktu porównywana jest osobno, co w typowym zastosowaniu i normalnych warunkach znalazło sobie doświadczalne uzasadnienie. Jako, że w tej wersji algorytmu interesuje nas jedynie, czy danych punkt uznawany jest za część ruchu, jeżeli tylko różnica osiągnie poziom błędu, uznajemy dany pixel za ruch i przechodzimy do analizy następnego (jeśli jakiś pozostał). Na Rys. 3a) widać przetwarzany obraz na Rys.3b) wynik analizy tego obrazu.

Przetwarzany obraz podzielony jest na prostokątną siatkę (domyślnie 5x5). W każdym z obszarów zliczana jest ilość punktów uznanych za ruch. Ten obszar gdzie takich punktów będzie najwięcej uznawany jest za obszar najbardziej ruchliwy i w tamtą stronę kieruje się kamera pobierająca obraz. Dzięki takiemu podejściu uniknięto przypadków gdy pojedyncze zakłócenie przekraczające poziom błędu (ponieważ i takie sytuacje mają miejsce) znacznie zniekształca kierunek poprawnej analizy. Element siatki wybrany jako najbardziej ruchliwy wskazywany jest czerwonym prostokątem w obszarze wyświetlającym rejestrowany obraz (Rys. 3a).

rozszerzenia zastosowanej metody

Powyższy algorytm działa zadowalająco w typowych warunkach, można go jednak ulepszyć i/lub wyspecjalizować. Przede wszystkim znacznym marnotrawstwem czasu procesora jest przetwarzanie całego obrazu. Zdecydowanie lepszym rozwiązaniem jest wybór pewnej siatki punktów o odpowiedniej gęstości i regularności. Autorzy tej publikacji zastosowali do wyboru punktów domyślny generator liczb losowych wirtualnej maszyny Javy (Rys. 4). Naturalnym wydaje się wykorzystanie innych rozkładów liczb, które będą determinowały ułożenie punktów przetwarzającej siatki, np. zagęszczać ją na obrzeżach. Dzięki ograniczeniu ilości przetwarzanych punktów, np. do 1000 (co jest zwykle wystarczające) znacznie ograniczamy przetwarzanie w dziedzinie pojedynczych pixeli (pełny obraz to 320x200=64000, co jest liczbą znacznie większą od tysiąca).


Rys. 4 Losowy dobór punktów detekcji. Rys. 5 Uśrednianie kolorów.

Inną ciekawą modyfikacją jest wprowadzenie uśredniania kolorystycznego (Rys. 5), które pomaga odseparować przemieszczanie się dużych i małych obiektów. Przez porównaniem obrazów dzieli każdy z nich na równomierną siatkę (podobną do tej wykorzystywanej do zliczania punktów jednak gęstszą, domyślnie 10x10). W ramach każdego wyznaczonego obszaru uśredniamy kolory sczytując wartości barw kolorów każdego pixela, sumując i dzieląc przez ich ilość. Otrzymujemy obrazy w niżej rozdzielczości, które dopiero teraz porównujemy. Dzięki zastosowaniu takiej metody, samo porównywanie obrazów jest znacznie skrócone, ale co ważniejsze, małe obiekty i ich ruch, będą miały mały wpływ na uśrednione wartości przez co ich rola znaczenie maleje w końcowej analizie.

Chcąc wyczulić układ pomiarowy na poruszające się obiekty z dużym kontrastem względem tła, można zmodyfikować algorytm tak, aby nie rejestrował tylko samego zaistnienia ruchu, lecz także poziom różnicy w barwach kolorów.

Oczywiście wszystkie modyfikacje można stosować jednocześnie jeżeli ich kombinacja na to pozwala, nie musi to mieć jednak znaczącego wpływu na szybkość przetwarzania, choć może się okazać najbardziej optymalne w jakichś specyficznych warunkach.

realizacjia

Opracowany przez autorów system śledzenia i detekcji ruchu składa się z części programowej oraz sprzętowej. Analizując schemat blokowy (Rys. 6) można zauważyć iż aplikacja zarządzająca urządzeniem po stronie komputera podzielona jest na bloki funkcjonalne odpowiedzialne za przechwytywanie obrazu, komunikację z urządzeniem wykonawczym oraz co najważniejsze za przetwarzanie obrazu. Dzięki implementacji programu w Javie udało się teoretycznie uniezależnić kod od platformy sprzętowej.


Rys. 6 Struktura stworzonego systemu detekcji ruchu.


W skład części sprzętowej (Rys. 7) wchodzą następujące moduły :

  • moduł komunikacyjny - odpowiedzialny za wymianę informacji pomiędzy komputerem a kamerami oraz modułem mikrokontrolera.
  • moduł mikrokontrolera - zarządza pracą całej części wykonawczej, komunikuje się z komputerem oraz steruje sinikami (kontrolując również ich położenie za pomocą optycznych sensorów).
  • moduł mechaniczny - zestaw silników oraz przełożeń zębatych tworzący mechanizm, który umożliwia obrót kamery w dwóch osiach.


Rys. 7 Schemat blokowy części sprzętowej.



Rys. 8 Centrum kontroli systemu detekcji.



Rys. 9 Fotografia FRED`a podczas pracy.


podsumowanie

Przeprowadzane przez autorów badania dotyczące parametrów przetwarzania wskazują, iż stworzony system może pracować w każdych warunkach o ile pozwoli na to część sprzętowa. Część tą można jedna dowolnie wymieniać pozostawiają cześć programową właściwe bez zmian. Zastosowana jako system wizyjny kamerka internetowa jest wąskim gardłem tego systemu, gdyż właściwą pracę zapewnia tylko w warunkach idealnego oświetlenia.

Omówiony tutaj system detekcji , posiadający własne centrum kontroli (Rys. 8), został stworzony niskim kosztem, może jednak z powodzeniem pełnić rolę "strażnika" ogrodu czy magazynu. Dzięki zastosowanym bibliotekom dodanie funkcji zapisywania rejestrowanego obrazu do plików wideo jest zadaniem dosyć prostym. Dopełniłoby to funkcjonalności układu, która w stosunku do kosztów jest zadowalająca.

autorzy

Referat pt. "Komputerowo wspomagana analiza obrazów" - autorstwa Szymona Kulisa i Mateusza Bilińskiego, został wygłoszony na XLII Sesji Studenckich Kół Naukowych Pionu Hutniczego AGH w Sekcji Informatyki Stosowanej oraz wyróżniony I nagrodą. Opiekun naukowy referatu : mgr Barbara Kawecka-Magiera.


Copyright © 2004 - 2008 , wykonał: Szymon Kulis