Tytuł pracy w języku polskim
Ruchome oko - śledzenie postaci wykorzystujące
kamerę oraz dwa silniki krokowe
Tytuł pracy w języku angielskim
Moving eye – tracking using a camera and two
stepper motors
A
UTOR:
Jacek Skiba
P
OLITECHNIKA
W
ROCŁAWSKA
W
YDZIAŁ
E
LEKTRONIKI
K
IERUNEK: Automatyka i Robotyka
S
PECJALNOŚĆ: Systemy Informatyczne w Automatyce
P
RACA
D
YPLOMOWA
I
NŻYNIERSKA
P
ROWADZĄCY PRACĘ:
dr inż. Andrzej Rusiecki
Instytut Informatyki, Automatyki i
Robotyki
O
CENA PRACY:
WROCŁAW 2010
2
Spis treści
Rozdział 1. Wstęp ............................................................................................. 4
1.1 Cele pracy ..................................................................................................................... 5
1.2 Struktura logiczna pracy ................................................................................................ 6
Rozdział 2. Detekcja ......................................................................................... 7
2.1 Analiza wideo a wizyjna detekcja ruchu ........................................................................ 7
2.2 Algorytmy detekcji ruchu .............................................................................................. 8
Rozdział 3. Silniki skokowe ............................................................................. 9
3.1 Typy silników skokowych ............................................................................................. 9
3.2 Algorytmy sterowania silnikami skokowymi ............................................................... 11
3.3 Zalety i wady silników skokowych .............................................................................. 13
Rozdział 4. Przykładowa realizacja sterowania kamerą .............................. 14
4.1 Schemat układu sterowania ......................................................................................... 14
4.2 Wykorzystywane algorytmy sterowania ...................................................................... 17
4.3 Parametry wykorzystywanej kamery ........................................................................... 18
Rozdział 5. Podręcznik użytkownika programu Motion detection v.1 ........ 20
5.1 Informacje ogólne ....................................................................................................... 20
5.1.1 Autor, data opracowania podręcznika ............................................................... 20
5.1.2 Opis programu .................................................................................................. 20
5.1.3 Przegląd zastosowań programu ......................................................................... 21
5.1.4 Wymagania techniczne aplikacji ....................................................................... 21
5.2 Środowisko programu ................................................................................................. 21
5.2.1 Sposób korzystania z programu ........................................................................ 21
5.2.2 Przykładowe wykorzystanie aplikacji ............................................................... 21
Rozdział 6. Rozpoznawanie twarzy ............................................................... 27
6.1 Problematyka rozpoznawania twarzy ........................................................................... 27
6.2 Algorytm eigenface ..................................................................................................... 28
3
Rozdział 7. Podręcznik użytkownika programu Eigenface v.1 .................... 29
7.1 Informacje ogólne ....................................................................................................... 29
7.1.1 Autor, data opracowania podręcznika ............................................................... 29
7.1.2 Opis programu .................................................................................................. 29
7.1.3 Przegląd zastosowań programu ......................................................................... 29
7.1.4 Wymagania techniczne aplikacji ....................................................................... 29
7.2 Środowisko programu ................................................................................................. 29
7.2.1 Sposób korzystania z programu ........................................................................ 29
7.2.2 Przykładowe wykorzystanie aplikacji ............................................................... 30
7.3 Sytuacje niepoprawne.................................................................................................. 31
Rozdział 8. Podsumowanie ............................................................................ 32
Literatura ....................................................................................................... 33
4
Rozdział 1
Wstęp
Problemy związane z rozpoznawaniem i śledzeniem postaci przez inteligentny system
komputerowy, stanowią poważne wyzwanie dla obecnej nauki. Złożoność zagadnienia
ukazała wiele metod i algorytmów umożliwiających z większą, bądź z mniejszą skutecznością
sprostanie temu zadaniu. Ujmując rzecz ogólnie, szeroka dziedzina Computer Vision stanowi
bardzo dynamicznie rozwijający się dział, w którego skład możemy zaliczyć m.in. detekcję,
rozpoznawanie wzorców oraz śledzenie ruchu.
Algorytmy rozpoznające posiadają bardzo dużą liczbę zastosować, szczególnie w
systemach bezpieczeństwa. W tym przypadku podstawowym priorytetem jest niezawodność
rozpoznawania, i to ona decyduje o skuteczności oraz praktycznym wykorzystaniu systemu.
Dziedzina pattern recognition obecna jest także w systemach identyfikacji tablic
rejestracyjnych [2]. Technologia ta umożliwia automatyczne określanie średniej prędkości
pojazdu na badanym odcinku drogi, poprzez poprawne odczytanie numeru pojazdu na
wjeździe oraz przy wyjeździe ze strefy kontrolowanej. Dodatkowo, umożliwia ona
generowanie statystyk ruchu mających na celu poprawienie przepustowości dróg w miastach
oraz na drogach wylotowych.
Problematyka rozpoznawania wzorców coraz częściej wykorzystywana jest w medycynie [3].
Dotyczy ona zarówno porównywania zdjęć rezonansu magnetycznego ze wzorcem, jak i
wyników badań z objawami określonych chorób. Tego typu funkcjonalności stanowią
podstawowy element systemów eksperckich, często wykorzystywanych w diagnostyce.
Dział rozpoznawania i śledzenia obiektów stanowi znaczące rozszerzenie dziedziny
pattern recognition. W tym przypadku połączono programowe podejście rozpoznające
wzorzec z automatycznym układem sterowania kamerą. System spełniający dane wymagania
posiada zastosowania w wielu dziedzinach, m.in. umożliwia realizację następujących zadań:
- CCTV: system telewizji dozorowej umożliwia przekazywanie obrazu z określonych
pomieszczeń w zamkniętym systemie odbiorczym. Służy nadzorowaniu i zwiększeniu
bezpieczeństwa przestrzeni, w obrębie której zostały zainstalowane inteligentne kamery,
umożliwiające rozpoznawanie i śledzenie.
- robotyka: rozwijana oraz popularyzowana przez wiele ośrodków akademickich, m.in.
przez wrocławskie koło naukowe „KoNaR” [www.3]. Projekt „Oka Romana” zrealizowany
przez to stowarzyszenie, w pełni ukazuje możliwości oraz ambicje tej dziedziny nauki.
Wykonany projekt przedstawiono na zdjęciu nr 1.
5
1.1 Cele pracy
Niniejszy projekt składa się z dwóch odrębnych aplikacji realizujących następujące
zadania:
- detekcję ruchu w czasie rzeczywistym realizowaną w Visual Studio, wraz z
zaprojektowanym układem sterowania kamerą
- rozpoznawanie twarzy w środowisku MATLAB implementując algorytm
eigenface.
Pierwsza część projektu realizuje zadanie wykorzystujące metody obiektowe oparte na
dedykowanej bibliotece programistycznej. Brak szczegółów implementacyjnych ułatwia
napisanie programu i odciąża twórcę od konkretnych algorytmów.
Druga część realizuje zadanie rozpoznawania. To podejście pokazuje złożoność problemu pod
względem matematycznym, programistycznym oraz obliczeniowym. .
Celem pracy jest przedstawienie podejścia strukturalnego oraz obiektowego, do problematyki
detekcji i rozpoznawania wzorców. Ma to na celu z jednej strony przedstawienie zawiłości
algorytmu, a z drugiej prostoty operującej na gotowych rozwiązaniach w postaci bibliotek.
Dodatkowo w projekcie przedstawiono możliwość wykorzystania silników krokowych, w
zadaniach śledzenia wzorców.
Rys. 1 Projekt umożliwiający rozpoznanie oraz śledzenie twarzy [www.3]
6
1.2 Struktura logiczna pracy
Realizowany projekt inżynierski złożony jest z trzech uzupełniających się wzajemnie
części:
- dwóch programów wraz z kodami źródłowymi i komentarzami
- podręczników użytkownika ukazujących sposób wykorzystywania aplikacji
- opisu teoretycznego realizowanych koncepcji i funkcji.
Uważam, że przyjęta struktura w sposób najpełniejszy oddaje problematykę zagadnienia.
Unikanie w opisie teoretycznym części stricte pochodzących z kodów źródłowych,
spowodowane jest chęcią utrzymania dokumentu w spójnej całości oraz niepowielania
komentarzy zawartych w kodzie oraz w dokumentacji biblioteki AForge.NET.
7
Rozdział 2
Detekcja
2.1 Analiza wideo a wizyjna detekcja ruchu
Detekcja ruchu w najprostszym tłumaczeniu ukazuje różnicę pomiędzy dwoma
klatkami obrazu: sąsiednimi bądź pomiędzy aktualną, a przechowywanym tłem sceny. W tym
rozwiązaniu, algorytm nie jest w stanie odróżnić człowieka np. od samochodu po innym
kryterium, niż rozmiar. Innymi słowy, detekcja ruchu polega tylko i wyłącznie na ocenie
wielkości grupy pikseli. Jeżeli wygenerowany obszar jest wystarczająco duży, to wtedy i
tylko wtedy, zostanie wykryty. Tego typu opis systemu niesie duże ograniczenia w jego
zastosowaniach oraz w jego skuteczności. Do podstawowych niedogodności metody
zaliczamy m.in.:
- dynamizm tła: poruszające się pod wpływem wiatru gałęzie drzew lub falująca woda,
w znaczący sposób utrudniają poprawną detekcję.
- połyskliwe powierzchnie metaliczne, szkło lub duże przedmioty odbijające światło:
wszystkie wyróżnione elementy mogą być przyczyną błędnych rozpoznań.
- brak automatycznej adaptacji systemu do zmieniających się warunków
atmosferycznych.
Wymienione powyżej ograniczenia zawężają skuteczność działania metody detekcji ruchu do
pomieszczeń zamkniętych, czyli do wykorzystywania ich w stabilnych warunkach
środowiskowych oraz oświetleniowych.
Dziedzina analizy wideo jest znacznie bardziej skomplikowana od typowego systemu
detekcji. Termin Video Analytics jest stosowany w odniesieniu do aplikacji umożliwiających
następujące funkcje:
- rzeczywistą detekcję typu obiektu, a nie tylko wykrywanie grupy pikseli.
- separację obiektu zainteresowania od dynamicznie zmieniającego się tła.
- automatyczne dostosowanie systemu do zmieniających się warunków otoczenia.
- śledzenie obiektu w całym polu widzenia.
Dział rozpoznawania tablic rejestracyjnych, rozpoznawania twarzy czy też metod śledzenia
obiektów, zaliczamy do podzbioru analizy wideo. Projektując tego typu system, winniśmy
uwzględniać powyżej omówioną problematykę oraz cele stawiane tym aplikacją.
8
2.2 Algorytmy detekcji ruchu
Każdy implementowany system rejestracji obrazu (np. system monitorowania
obiektu), wymaga algorytmu detekcji ruchu. Główna koncepcja wykrywania ruchu wyróżnia
dwie odrębne metody: porównywanie sąsiednich klatek, bądź też aktualnej klatki z
przechowywanym tłem. W zależności od zastosowania oraz skuteczności, projektowany
system wykorzystuje jeden z tych algorytmów. W tym miejscu nadmienić należy o szeregu
metod przetwarzania obrazu, mających istotny wpływ na jakość detekcji oraz na złożoność
realizowanej procedury.
Metoda porównywania sąsiednich klatek, realizuje proces rozpoznawania poprzez
wykrywanie różnic w kolorach. Założenie to emuluje sposób rozpoznawania ruchu przez
ludzi. W podstawowym ujęciu algorytmu porównujemy składowe R,G,B pikseli, a następnie
sprawdzamy czy różnica jest odpowiednio duża, aby uznać badany punkt obrazu za część
związaną z ruchem. Chcąc polepszyć jakość oraz szybkość procesu detekcji możemy
wykorzystać jedną z niżej opisanych modyfikacji. Zamiast porównywania wszystkich
punktów macierzy, aplikacja generuje siatkę pikseli o odpowiedniej gęstości i regularności.
Dzięki takiemu ograniczeniu, znacząco minimalizujemy ilość elementarnych operacji
wykonywanych w dziedzinie pojedynczych pikseli. Sytuację tą przedstawiono na rysuneku
nr 2. Innym rodzajem modyfikacji jest wprowadzanie uśrednienia kolorystycznego. Przed
porównywaniem obrazów dzielimy każdy z nich na równomierną siatkę. W ramach
wyznaczonego obszaru uśredniamy kolory sumując barwy pikseli, a następnie dzieląc przez
ich ilość. Po operacji tego typu, obraz w niższej rozdzielczości jest poddawany
porównywaniu. Dzięki danej metodzie, porównywanie jest znacznie skrócone, a co
ważniejsze, rola małych obiektów znacząco spada w końcowej analizie.
Odrębnym podejściem jest wykrywanie ruchu poprzez porównywanie każdej klatki
obrazu z przechowywanym tłem. Tło w systemie pozyskiwane jest w sposób automatyczny, a
następnie aktualizowane do wolno przebiegających zmian w polu widzenia kamery. Dzięki
takiemu podejściu uzyskujemy reakcję tła na wolno przebiegające zmiany obrazu – np.
zachmurzenie, zmierzch, mgłę.
Obie wyżej wymienione metody detekcji ruchu wykorzystywane są w praktyce, lecz
obie do różnych celów. Porównywanie sąsiednich klatek wiążę się z ciągłym dynamizmem
sceny, co może mieć wykorzystanie w systemach monitorujących lotniska bądź dworce.
Porównywanie oparte na statycznym tle może z kolei być implementowane w fotoradarach.
Rys. 2 Losowy wybór punktów detekcji
9
Rozdział 3
Silniki skokowe
3.1 Typy silników skokowych
Silniki krokowe są urządzeniami elektromechanicznym, przekształcającymi impulsy
elektryczne w dyskretne ruchy mechaniczne. Obroty silnika związane są bezpośrednio z
podawanymi impulsami na kilka sposobów. Kierunek obrotów jest ściśle związany z
sekwencją ich podawanych, prędkość obrotów zależy od częstotliwości, zaś kąt obrotu - od
ich ilości.
Wyróżniamy trzy podstawowe rodzaje silników skokowych pod względem budowy:
- silniki o zmiennej reluktancji (VR)
- silniki z magnesami trwałymi (PM)
- silniki hybrydowe (HB).
Obecnie w zastosowaniach komercyjnych wykorzystywane są tylko i wyłącznie silnik
hybrydowe [4]. Łączą one w sobie zalety silników ze zmienną reluktancją oraz silników z
magnesem trwałym. Stojan silnika HB posiada przeważnie dwa uzwojenia i osiem biegunów,
zaś rotor magnesy rozmieszczone osiowo. Pod względem budowy, bardzo ważnym
elementem silników hybrydowych są żłobki występujące na czołach biegunów stojana oraz na
powierzchni wirnika. Obecność magnesu stałego powoduje ustawianie ich naprzeciw sobie,
co
wywołane
jest
maksymalnym
przepływem
strumienia
magnetycznego
w
ferromagnetykach. Typowa rozdzielczość silnika wynosi 100 – 400 kroków na obrót.
Schemat budowy silnika HB przedstawiono na rysunku nr 3.
Rys. 3 Schemat budowy stojana silnika hybrydowego
10
Obecnie produkowane silniki posiadają po kilka biegunów, lecz zawsze zawierają tylko dwa
uzwojenia podzielone na sekcje. Wytworzenie wirującego pola magnetycznego będącego
podstawą działania silników, w ogólności można zrealizować dwoma sposobami; zmianą
kierunku przepływu prądu w uzwojeniach, bądź też wykorzystując odczep umożliwiający
przepływ prądu tylko w jednym kierunku. Opisane tutaj dwie odmienne formy sterowania,
wprowadziły podział na silniki bipolarne i unipolarne.
Silnik bipolarny posiada zawsze 4 przewody wyjściowe. Sterowanie realizowane jest
najczęściej z wykorzystaniem dwóch mostków tranzystorowych. Tego typu układ pozwala w
pełni wykorzystać silnik, jednak realizacja sterownika nie jest łatwa – konieczne jest
wysterowanie każdego z ośmiu tranzystorów osobno. Uproszczony schemat sterowania
mostkami H przedstawiono na rysunku 4.
Rys. 4 Przykładowa realizacja sterowania silnikiem bipolarnym [4]
Silnik unipolarny rozpoznajemy po tym, iż posiada 6 przewodów wyjściowych. Zdarza sie że
silnik posiada 5 wyprowadzeń, co jest spowodowane połączeniem przewodów zasilających.
Sterowanie silnikiem unipolarnym jest prostsze niż bipolarnym, ale w zamian otrzymujemy
mniejszy moment obrotowy. Przykładowy układ sterowania silnikiem unipolarnym
przedstawiono na rysunku nr 5.
Rys. 5 Przykładowa realizacja sterowania silnikiem unipolarnym [4]
11
3.2 Algorytmy sterowania silnikami skokowymi
Sterowanie silników bipolarnych, jak i unipolarnych możemy realizować w
różnorodny sposób. Każdy z algorytmów sterujących wykorzystywany jest w praktyce, w
zależności od celów, jakości oraz od stopnia skomplikowania układu docelowego. Ogólny
podział wyróżnia następujące metody:
- sterowanie falowe (wave drive)
- sterowanie pełnokrokowe (full step)
- sterowanie półkrokowe (half step).
Sterowanie falowe jest najprostszym oraz najmniej wydajnym algorytmem. W przypadku
bipolarnym wykorzystujemy w trakcie każdego cyklu pojedyncze uzwojenie, zaś w
przypadku unipolarnym tylko i wyłącznie ¼ wszystkich uzwojeń. Graficzny opis tej metody
przedstawiono na rysunku nr 6.
Rys. 6 Schemat sterowania falowego w silniku unipolarnym [4]
Algorytm pełnokrokowy jest prostą oraz dającą dobry moment obrotowy metodą sterującą. W
każdej fazie cyklu zasilane są oba uzwojenia niezależnie od typu silnika, co znacznie
poprawia m.in. jego moc. Sekwencja sterująca w tym algorytmach powtarza się co cztery
impulsy generatora taktującego. Przedstawia to rysunek nr 7.
Rys. 7 Schemat sterowania pełnokrokowego w silniku bipolarnym [4]
Sterowanie półkrokowe jest najczęściej wykorzystywanym sposobem sterowania, łączącym w
sobie dwa powyżej omówione algorytmy. W tym przypadku zasilane się na przemian jedno
lub dwa uzwojenia silnika. Realizacja tego typu niesie za sobą zmniejszone osiągi układu,
jednak znacząco poprawia precyzje (zmniejsza o połowę skok elementarny) oraz tłumi
skłonność układu do rezonansów mechanicznych. Sekwencja sterująca w tej procedurze
powtarza się co osiem impulsów generatora taktującego. Ogólny schemat zasilania uzwojeń
przedstawiono na rysunek nr 8.
12
Rys. 8 Schemat sterowania półkrokowego w silniku unipolarnym [4]
Sterowanie mikrokrokowe pomimo swoich bezwzględnych zalet dotyczących płynności
ruchu oraz precyzji, nie jest realizowane w zadaniu projektowym. W ogólności, bardzo duża
dokładność wirnika nie ma wymiernego wpływu, na jakość opisywanego układu.
13
3.3 Zalety i wady silników skokowych
Specyficzna (dyskretna) zasada działania silników krokowych, niesie za sobą wiele
możliwości ich wykorzystania. Poniżej przedstawiono główne cechy tych napędów
(niezależnie od rodzaju silnika skokowego):
- precyzja pozycjonowania oraz powtarzalność ruchu
- możliwość szybkiego rozbiegu, hamowania oraz zmiany kierunku
- proporcjonalność kąta obrotu silnika od ilości impulsów wejściowych
- możliwość pracy napędu w układzie pętli otwartej
- brak kumulacji błędu silnika z kroku na krok
- praca z pełnym momentem obrotowym w stanie spoczynku
- osiąganie niskich prędkości obrotowych z obciążeniem umocowanym na osi
- niezawodność mechaniczna wynikająca z braku szczotek oraz komutatora.
Omówiona powyżej konstrukcja typowych silników krokowych nie jest idealna, o czym
świadczą następujące wady tego typu rozwiązań:
- rezonanse mechaniczne wynikające z niewłaściwego sterowania
- małe maksymalne obroty w porównaniu do innych silników o podobnej mocy
- duży pobór prądu
- duża emisja ciepła.
Wszystkie wymienione zalety oraz wady silników krokowych, uwidoczniają możliwe
dziedziny ich wykorzystania, a także sektory w których nie powinny być stosowane – m.in.
przemysł ciężki, napędy pojazdów. Precyzja oraz prostota sterowania w postaci napędów
krokowych wykorzystywana jest w następujących obszarach techniki:
- szeroko rozumiana robotyka. Sterowanie ramionami manipulatorów, kołami w
robotach mobilnych
- mechaniczne urządzenia regulacji
- napędy CD/DVD: sterowanie ruchem głowicy czytającej
- drukarki igłowe i atramentowe, plotery.
14
Rozdział 4
Przykładowa realizacja sterowania kamerą
4.1 Schemat układu sterowania
Dedykowanym w projekcie, prostym sterownikiem kamery jest układ wykorzystujący
port równoległy LPT, transoptory oraz dwie kości ULN2004. Elementem wykonawczym
układu są silniki krokowe unipolarne, realizujące przemieszczanie kamery w poziomie i w
pionie. Podstawowy schemat układu sterowania przedstawiony jest na rysunku nr 9.
Rys 9. Schemat sterowania dwoma silnikami unipolarnymi
Poniżej przedstawiono podstawowe parametry i cechy wykorzystywanych
podzespołów układu sterowania.
Port równoległe LPT jest 25-pinowym złączem wykorzystywanym w komputerach klasy PC.
Magistrala interfejsu składa się z 8 linii danych przesyłających pojedynczy bajt, 4 linii
sterujących oraz 5 linii stanu. Linie magistrali są dwukierunkowe i przesyłają sygnały
odpowiadające standardowi TTL. Porty tego typu głównie wykorzystywane są do podłączania
urządzeń peryferyjnych, np. drukarek, skanerów, ploterów. Układ wyprowadzeń pinów ze
złącza przedstawiono na rysunku nr 10.
15
Rys. 10 Oznaczenie pinów gniazda LPT
Transoptor [5] jest półprzewodnikowym elementem optoelektronicznym, składającym się z
fotoemitera oraz fotodetektora, umieszczonych we wspólnej obudowie. Rolę fotoemitera w
obwodzie wejściowym najczęściej spełnia dioda elektroluminescencyjna. Na wyjściu w tym
przypadku wykorzystujemy fototranzystor. Głównym zastosowaniem transoptorów jest
galwaniczne rozdzielenie obwodów w układach automatyki i sterowania. Wykorzystywane są
również jako przekaźniki optoelektroniczne, wyłączniki krańcowe oraz jako czujniki
położenia.
ULN2004 [6] jest monolitycznym wysokonapięciowym obwodem tranzystorowym
wykonanym w układzie Darlingtona. Zawiera on siedem par Darlingtona NPN z
wysokonapięciowymi wyjściami. Maksymalny prąd kolektora każdej pary tranzystorów to
500 mA. Układ wykorzystywany jest głównie jako sterownik diod, wyświetlaczy LED, bądź
też silników krokowych. Rozmieszczenie pinów w obudowie typu DIL, przedstawiono na
rysunku nr 11.
Rys. 11 Układ ULN2004 w obudowie dwurzędowej (widok z góry)
Wykorzystanie silników unipolarnym firmy Mitsumi M15SP-1N zapewnia łatwość oraz
precyzje sterowania. Małe wymiary, lekka waga oraz wysoki moment obrotowy siników,
umożliwiają kompaktową realizację układu. Podstawowe parametry silników przedstawiono
w tabeli nr 1, a ogólną prezentację na rysunek nr 12.
16
Tabela nr 1. Specyfikacja silnika M15SP-1N [www.2]
Parametr
Wartość
Nominalne napięcie zasilania
DC 5 V
Przedział zasilania
DC (4.5, 5.5) V
Nominalny pobór prądu
357 mA
Liczba faz
2
Rezystancja uzwojeń
14 Ω / faza
7%
Skok elementarny
18˚/ krok
Moment obrotowy
4 mMˑm
Prostota realizacji oraz łatwość wykonania układu na płytce uniwersalnej lub stykowej, są
niewątpliwymi zaletami tego rozwiązania. Dodatkowo, brak pętli zwrotnej w układzie
eliminuje potrzebę stosowania kosztownych urządzeń sprzężenia zwrotnego, takich jak
enkodery optoelektroniczne. Zasada działania układu jest następująca: sygnał wyprowadzony
przez port równoległy, przekazywany jest poprzez separację galwaniczną do układów
scalonych, tam wzmacniany, i następnie doprowadzany do uzwojeń silników. Izolacja w
postaci transoptorów konieczna jest z powodu łatwości uszkodzenia portu LPT oraz w
konsekwencji części płyty głównej.
Rys. 12 Silnik krokowy unipolarny firmy Mitsumi [www.2]
17
4.2 Wykorzystywane algorytmy sterowania
W projekcie zrealizowano sterowanie sinikami unipolarnymi z wykorzystaniem portu
LPT. Główną zaletą tego rozwiązania jest prostota układu, wynikająca z możliwości
przesyłania pojedynczych bajtów. Poniżej przedstawiono sekwencje sterujące realizowane w
zadaniu projektowym:
- sterowanie falowe (tabela nr 2)
- sterowanie pełnokrokowe (tabela nr 3)
- sterownie półkrokowe (tabela nr 4).
Tab. 2 Sterowanie falowe – kierunek CW
Nr taktu
A+
B+
A-
B-
dziesiętnie
1
1
0
0
0
1
2
0
1
0
0
2
3
0
0
1
0
4
4
0
0
0
1
8
Tab. 3 Sterowanie pełnokrokowe – kierunek CW
Nr taktu
A+
B+
A-
B-
dziesiętnie
1
0
1
1
0
6
2
1
1
0
0
12
3
1
0
0
1
9
4
0
0
1
1
3
Tab. 4 Sterowanie półkrokowe – kierunek CW
Nr taktu
A+
B+
A-
B-
dziesiętnie
1
1
0
0
1
9
2
1
0
0
0
8
3
1
0
1
0
10
4
0
0
1
0
2
5
0
1
1
0
6
6
0
1
0
0
4
7
0
1
0
1
5
8
0
0
0
1
1
18
Zmianę kierunku obrotu wirnika - CCW - zrealizowano podając w odwrotnej kolejności
impulsy sterujące. Wykorzystując trzy algorytmy, wprowadzono uniwersalność części
programowej na gabaryty i masę kamery wraz z obudową. Dla dużej masy układu, można
wytworzyć wysoki moment obrotowy w postaci sterowania pełnokrokowego. Zwiększając
precyzję i płynność, wykorzystujemy w systemie sterowanie półkrokowe.
Dostęp do portu równoległego zrealizowano wykorzystując darmową bibliotekę
dynamiczną
InpOut32.dll [www.4].
Sprowadzało się to do podania adresu złącza sprawdzanego z
poziomu systemu operacyjnego, a następnie do przesyłania wartości do portu w postaci dziesiętnej.
Rozwiązanie wykorzystujące bibliotekę dynamiczną kompatybilne jest z innymi systemami z
rodziny Windows – XP, Vista. Innym problemem dotyczącym głównie laptopów, jest nieposiadanie
złącza równoległego. W tym przypadku można wykorzystać konwerter USB – LPT, bądź też
uniwersalne stacje dokujące.
Alternatywnym sposobem sterowania [www.3] - bardziej złożonym pod względem
elektroniki - jest wykorzystanie mikrokontrolera wraz z portem RS-232 lub złączem USB.
Realizacja tego typu jest kompaktowa oraz profesjonalna. Wymaga jednak złożonych
algorytmów sterowania oraz odpowiedniego zaprogramowania uC. W zadaniu projektowym
głównym elementem jest program, dlatego porzucono trudniejszą realizację sterownika.
4.3 Parametry wykorzystywanej kamery
Patrząc na realizowany projekt inżynierski od strony użytkownika, podstawowym
elementem układu jest rodzaj wykorzystywanej kamery. Zastosowanie w systemie zwykłej
kamery internetowej powoduje, iż staje się ona wąskim gardłem układu, zapewniając
poprawną pracę tylko i wyłącznie w idealnych warunkach oświetleniowych. Zapobiegamy
takiemu rozwiązaniu poprzez wybór odpowiedniego typu kamery ze względu na dedykowany
rodzaj pracy, warunki środowiskowe oraz cenę.
Podstawowym parametrem kamery cyfrowej jest rodzaj wykorzystywanego
przetwornika. Wykorzystując w układzie droższe rozwiązania w postaci przetworników CCD,
uzyskujemy znakomitą jakość obrazu oraz bardzo wysoką czułość. Dodatkowo, układy tego
typu znoszą dobrze szybkie zmiany oświetlenia, mające szczególnie znaczenie w monitoringu
ulicznym. Korzystając z technologii CMOS w zamian za pogorszenie wszystkich powyżej
opisanych parametrów, uzyskujemy dużą miniaturyzację układu oraz niską cenę.
Bardzo ważną rolę w procesie akwizycji obrazu odgrywają także dane dotyczące
czułości, rozdzielczości oraz stosunku sygnał/szum. Czułość podawana w luxach, jest
zdolnością widzenia kamery przy słabym oświetleniu. Parametr ten wybierany jest w
zależności od warunków środowiskowych w jakich pracuje układ. Wykorzystując w tym celu
kamerę czarno-białą nastawiamy system na obserwowanie obiektów przy słabym oświetleniu.
Duża czułość, mała wrażliwość na kolor światła padającego na obiekty oraz szeroka
charakterystyka widmowa, umożliwiają poprawną pracę układu w niekorzystnych warunkach.
Wykorzystywanie kamery kolorowej wymagane jest tam, gdzie dobre rozróżnianie osób bądź
przedmiotów jest elementem priorytetowym. W tym celu konieczne jest jednak zapewnienie
dobrych warunków oświetleniowych, spowodowanych mniejszą czułością tego typu kamery.
19
Istotnym elementem w wyborze odpowiedniej kamery jest jej obudowa. W tym
przypadku decydującą rolę odgrywają warunki środowiskowe oraz rodzaj wykonywanego
zadania. Do wyboru mamy następujące typy obudów:
- BOX: najpopularniejsze rozwiązanie, stosowane zarówno wewnątrz pomieszczeń,
jak i na zewnątrz
- DOME: korzystają z obudowy kopułkowej, przeznaczone do zastosowań
wewnętrznych
- płytkowe: dyskretne, wymagające bardzo mało miejsca
- wandaloodporne: wykorzystywane na dworcach, stadionach
Przykłady omawianych obudów przedstawiają fotografie nr 13 oraz 14.
Rys. 13 Kamera cyfrowa w obudowie typu BOX
Obecne rozwiązania technologiczne znacząco wspomagają kamery w problemach
dotyczących monitoringu. Dla przykładu, układy BLC eliminują zjawisko powstające przy
silnym świetle padającym z tyłu obiektu. Automatyczny balans bieli (AWB), zapewnia zaś
otrzymywanie naturalnego obrazu przy różnych rodzajach oświetlenia. Dzięki tego typu
rozwiązaniom znacząco poprawiamy jakość obrazu, lecz ma to oczywiście swoje
odzwierciedlenie w cenie.
Rys. 14 Kamera cyfrowa w obudowie typu DOME
20
Rozdział 5
Podręcznik użytkownika programu
Motion detection v.1
5.1 Informacje ogólne
5.1.1 Autor, data opracowania podręcznika
Program został napisany przez Jacka Skibę, jako jeden z elementów projektu
inżynierskiego. Opracowane zostało napisane dnia 3.12.2010 r. Manual dotyczy pierwszej
wersji aplikacji, w której nie zaimplementowano modułu automatycznego śledzenia wzorców.
5.1.2 Opis programu
Głównym zadaniem aplikacji jest detekcja ruchu przechwytywana z cyfrowej kamery
w czasie rzeczywistym. W tym celu, w programie zaimplementowano dwie metody detekcji:
- porównywanie sąsiednich klatek
- porównywanie z tłem
oraz wprowadzono cztery procedury wyświetlania zmian na scenie:
- podświetlanie powierzchni
- podświetlanie krawędzi
- zliczanie ruchomych obiektów
- siatkę intensywności ruchu.
Sterowanie manualne kamerą w poziomie i w pionie umożliwia myszka komputerowa.
Wraz z wykryciem ruchu, program automatycznie zapisuje analizowaną klatkę obrazu na
dysku. Dodatkowo, aplikacja umożliwia ustawienie podstawowych parametrów detekcji, tj.:
- czułości algorytmu
- interwału czasowego pomiędzy zrzutami
- ścieżki zapisu zdjęć.
W programie wprowadzono także moduł wykorzystujący protokoły sieciowe. Umożliwia on
realizację następujących funkcji:
- zdalne śledzenie sceny wykorzystując przeglądarkę
- zapis detekcji na serwerze FTP
- wysyłanie powiadomień o wykrytym ruchu na pocztę.
21
5.1.3 Przegląd zastosowań programu
Aplikacja może być wykorzystywana w prostych systemach monitoringu oraz
zabezpieczenia. Wiele zaimplementowanych metod detekcji, możliwość archiwizacji oraz
dostęp poprzez sieć, umożliwiają stworzenie systemu ochraniającego małe pomieszczenie,
bądź też komputer sam w sobie.
5.1.4 Wymagania techniczne aplikacji
Dedykowanym środowiskiem programu są systemy operacyjne z rodziny Windows.
Elementem koniecznym jest także platforma
.NET
w wersji co najmniej 3.5 oraz framework
AForge.NET .
Modułami dodatkowymi rozszerzającymi funkcjonalność są dwa darmowe
programy realizujące zdalne śledzenie oraz
upload
na serwer FTP: cam4net i Home Ftp
Server.
5.2 Środowisko programu
5.2.1 Sposób korzystania z programu
Obsługa aplikacji jest prosta oraz intuicyjna. W czasie przechwytywania obrazu z
kamery, użytkownik posiada cały czas możliwość zmiany metody detekcji oraz sposobu
wyświetlania różnic pomiędzy klatkami. Dodatkowo w sposób
online
można zmieniać
parametry związane z czułością wykrywania oraz z interwałem czasowym zrzutów.
5.2.2 Przykładowe wykorzystanie aplikacji
Interfejs programu prezentuje standardowy wygląd oraz parametry dla środowiska Windows.
Wygląd GUI po otwarciu aplikacji przedstawiono na rysunku nr 15.
Rys. 15 Główne okno programu
22
Informacje na temat kamery oraz ustawienia parametrów detekcji regulowane są w zakładce
konfiguracja
. Wygląd zakładki przedstawiono na rysunku nr 16.
Rys. 16 Okno konfiguracji programu Motion Detection
Przykład detekcji piłki wykorzystujący metodę porównywania z tłem, z podświetlaniem całej
powierzchni przedmiotu, przedstawiono na rysunku nr 17.
Rys. 17 Metoda porównująca z tłem, podświetlająca całą powierzchnię
23
Przykład detekcji piłki wykorzystujący metodę porównywania z tłem, z podświetlaniem
krawędzi przedmiotu, przedstawiono na rysunku nr 18.
Rys. 18 Metoda porównująca z tłem, podświetlająca krawędzie przedmiotu
Przykład detekcji piłek wykorzystujący metodę porównywania z tłem, ze zliczaniem
ruchomych obiektów, przedstawiono na rysunku nr 19.
Rys. 19 Metoda porównująca z tłem, zliczająca ruchome obiekty
24
Przykład detekcji piłki wykorzystujący metodę porównywania sąsiednich klatek, z ukazaniem
siatki intensywności ruchu, przedstawiono na rysunku nr 20.
Rys. 20 Metoda porównująca sąsiednie klatki, ukazująca siatkę intensywności ruchu
Interfejs sterowania w aplikacji kamerą cyfrową przedstawiono na rysunku nr 21. Do wyboru
użytkownik posiada sterowanie fazowe, półkrokowe oraz sterowanie z wysokim momentem
obrotowym.
Rys. 21 Moduł umożliwiający sterowanie za pomocą silników krokowych położeniem kamery
25
Wysyłanie komunikatu e-mail realizowane jest po wykryciu odpowiednio dużej liczby klatek
z ruchem. Zadaniem użytkownika jest tylko i wyłącznie podanie adresu poczty. Na rysunku
nr 22 przedstawiono działanie tej usługi.
Rys. 22 Wysyłanie wiadomości e-mail informującej o wykrytym ruchu
Wykorzystując aplikację cam4net działającą w oparciu technologię P2P, umożliwiamy
upload obrazów na stronę internetową. Przykładowy widok sceny z poziomu przeglądarki
przedstawiono na rysunku nr 23.
Rys. 23 Zdalne śledzenie prowadzone ze strony
http://jaco-skiba.w.interia.pl/projekty/projekty.html
26
Archiwizacja zdjęć realizowana jest z wykorzystaniem programu Home Ftp Server.
Użytkownik po podaniu adresu serwera FTP otrzymuje na swoje konto zdjęcia z wykrytym
ruchem. Przykładowy przebieg sesji programu przedstawiono na rysunku nr 24.
Rys. 24 Dostęp do archiwum detekcji wykorzystując serwer FTP
27
Rozdział 6
Rozpoznawanie twarzy
6.1 Problematyka rozpoznawania twarzy
Rozpoznawanie twarzy przez ludzi jest zadaniem realizowanym automatycznie, i w
większości przypadków poprawnie. Stworzenie algorytmu realizującego tę funkcję przez
system komputerowy nie jest niestety zadaniem łatwym. Do dnia dzisiejszego, nie istnieje
metoda dająca stuprocentową pewność poprawnej klasyfikacji twarzy. Główna trudność
dotyczy (mówiąc językiem formalnym) dużej zmienności wewnątrz klasowej przy niewielkiej
zmienności między klasowej. Twarze dwóch różnych osób bywają czasem bardzo podobne,
zaś obraz twarzy pojedynczej osoby może ulegać zmianie w wyniku różnic oświetlenia, kąta
nachylenia głowy, wyrazu twarzy, bądź też przebytej choroby.
Do komputerowego rozpoznawania twarzy używamy obecnie szeregu technik. Jedną
z najpopularniejszym oraz najstarszych procedur rozpoznawania jest metoda eigenface.
Algorytm ten opiera się na obszernej bazie danych poszczególnych twarzy. Po nałożeniu
odpowiednich filtrów uwypuklających najważniejsze elementy (usta, oczy), zdjęcia są
poddawane analizie statystycznej. W wyniku końcowym otrzymujemy ciąg parametrów
reprezentujących badaną twarz. Największym ograniczeniem tej metody oraz jej późniejszych
rozszerzeń jest dwuwymiarowość.
Przy obecnym rozwoju informatyki, coraz częściej wykorzystywaną techniką
rozpoznawania jest modelowanie trójwymiarowe. Pozwala ono weryfikować tożsamość
niezależnie od kąta obserwacji, dzięki czemu można tą procedurę wykorzystać np. do
identyfikacji ludzi w tłumie. Zgoła inne podejście do problematyki rozpoznawania
wykorzystują sieci neuronowe. Nie są one niestety na dzień dzisiejszy tak skuteczne, aby
można je było wykorzystywać w praktyce.
28
6.2 Algorytm eigenface
Głównym założeniem algorytmu jest ustawianie badanych twarzy przodem, przy
jednolitym oświetleniu. Dodatkowym założeniem jest informacja, że zdjęcia są lekko
zaszumione i zawierają dużo nadmiarowości. Dzięki takiemu opisowi możemy przyjąć, że
kierunek największej zmienności danych niesie najwięcej informacji o tych danych.
Parametry zmienności w metodzie
eigenface wyznaczamy wykorzystując analizę głównych
składowych (PCA).
Podstawowy schemat działania algorytmu:
1. Wejście (pojedynczy obraz w postaci bitmapy): M wektorów pionowych
, … ,
o
wymiarze N.
2. Oblicz średnią:
= ∑
.
3. Odejmij średnią:
= −
4. Niech
= (
, … ,
) macierz wymiaru ×
5. Oblicz znormalizowane wektory własne macierzy
(rozmiaru
× )
6. Wybierz K wektorów własnych
, … ,
odpowiadających największym wartością
własnym
W algorytmie kierunek największej zmienności danych odpowiada największej wartości
własnej. W większości przypadków wrażliwość na zmiany jasności i kierunek oświetlenia
kompensowana jest przez odrzucenie kilku początkowych wartości dla danej twarzy.
Istnieje wiele rozwiązań rozszerzających działanie metody
eigenface i zwiększających w ten
sposób skuteczność rozpoznawania. Wyróżnić należy m.in. następujące procedury:
- View-Based Eigenfaces
: oblicza eigenfaces oddzielnie dla kilku orientacji twarzy
- Eigenfeatures: oblicza eigenfaces oddzielnie dla istotnych elementów twarzy; nos,
usta, oczy
- Fisherfaces: wykorzystuje liniową analizę dyskryminacyjną zamiast metody PCA.
29
Rozdział 7
Podręcznik użytkownika programu
Eigenface v.1
7.1 Informacje ogólne
7.1.1 Autor, data opracowania podręcznika
Program został napisany przez Jacka Skibę, jako jeden z elementów projektu
inżynierskiego. Opracowane zostało napisane dnia 28.11.2010 r. Manual dotyczy pierwszej
wersji aplikacji, i nie przewidziano późniejszych zmian w funkcjonalności programu.
7.1.2 Opis programu
Głównym zadaniem aplikacji jest rozpoznawanie twarzy na podstawie zdjęć
przechowywanych w bazie danych. Algorytm programu domyślnie został zaimplementowany
na potrzeby rozpoznawania twarzy, lecz z porównywalną skutecznością poprawnie
klasyfikuje obiekty innego typu, np. wzorce geometryczne, pojazdy.
7.1.3 Przegląd zastosowań programu
Aplikacja w głównej mierze posiada zadanie dydaktyczne. Jej celem jest przybliżanie
użytkownikowi problematyki rozpoznawania złożonych wzorców, wykorzystując w tym celu
narzędzie algebry matematycznej i statystyki. W ogólnym ujęciu, programy oparte na
algorytmie
eigenface
nie powinny być wykorzystywane w problemach dotyczących
bezpieczeństwa i identyfikacji. Spowodowane jest to dużą wrażliwością algorytmu na zmiany
kąta nachylenia i obrotu wzorca, a także na zmiany jasności i kierunku oświetlenia.
7.1.4 Wymagania techniczne aplikacji
Program został napisany w postaci M-pliku w komercyjnym środowisku
programistycznym MATLAB. W celu uruchomienia aplikacji wymagana jest wersja
środowiska co najmniej 5.3 wraz z dodatkową biblioteką Image Processing Toolbox.
Aplikacja została napisana w formie skryptu i nie może być bezpośrednio uruchomiona z
poziomu systemu operacyjnego.
7.2 Środowisko programu
7.2.1 Sposób korzystania z programu
Zasada działania aplikacji polega na stworzeniu przez użytkownika odpowiednio
dużej bazy wzorców, a następnie wprowadzeniu przez niego zdjęcia które system
automatycznie sklasyfikuje. Innymi słowy dążmy do tego, aby każda z klas była jak
najdokładniej przedstawiona - przykładowo wiele zdjęć tej samej twarzy pod różnym kątem.
Następnie, mając dostatecznie dużo klas wprowadzamy fotografię - rozpoznawaną osobę -
którą system przyporządkowuje najbardziej „podobnej” klasie.
30
7.2.2 Przykładowe wykorzystanie aplikacji
Podstawowy interfejs programu jest czytelny oraz łatwy w obsłudze. Wygląd GUI po
otwarciu aplikacji przedstawiono na rysunku nr 25.
Rys. 25 Główne okno programu
Aplikacja domyślnie posiada pustą bazę zdjęć, tak więc pierwszym krokiem jest wypełnienie
jej przez użytkownika. Klikając w
Wybór zdjęcia
przechodzimy do zasobów lokalnego dysku, i
stamtąd pobieramy interesujący Nas wzorzec. Po kliknięciu przycisku
Wprowadź zdjęcie do
bazy danych,
ukazuje się okno dialogowe, proszące o przyporządkowanie zdjęcia do
określonej klasy. Sytuację tego typu przedstawiono na rysunku nr 26
.
Rys. 26 Przyporządkowanie zdjęcia do odpowiedniej klasy
31
Posiadając dostatecznie dużą bazę zdjęć, należy przejść do opcji rozpoznawania. Ponownie
wybieramy fotografię, wprowadzamy ją do programu i klikamy przycisk
Rozpoznaj twarz. Po
krótkiej chwili związanej z obliczeniami, otrzymujemy w konsoli odpowiedź programu. Przykładowy
wynik przedstawiono na listingu nr 1.
Najblizsza klasa to
1
z odlegloscia rowna
3.2907e+004
Dystans do granicy przestrzeni wynosi
7.0035e+004
Listing 1. Program zwraca wynik w postaci najbliższej klasy do rozpoznawanego zdjęcia
Odpowiedź programu zwraca dodatkowo parametry odległość do klasy oraz do przestrzeni
wzorców. Interpretacja tych wartości istotna jest, gdy rozpoznawany obiekt nie posiada
odpowiednika w całej bazie danych. W tym przypadku, wartość dystansu do granicy jest
znacząco większa od odległości do klasy.
Pozostałe opcje programu są proste i nie wymagają komentarza.
7.3 Sytuacje niepoprawne
Aplikacja zwraca błąd wykonania programu w przypadkach wprowadzania zdjęć o
różnej rozdzielczości. Związane jest to z operacjami macierzowymi wykonywanymi na
obrazach. W zadaniu projektowym operowano w rozdzielczości 800x600 pikseli.
MATLAB będący środowiskiem programistycznym ogólnego przeznaczenia, przy
zbyt dużej bazie danych zawiesza wykonywanie programu. Związane jest to kosztem
obliczeniowym wynikającym z wyznaczania wartości własnych macierzy, o rozmiarach
odpowiadających rozdzielczości obrazów.
32
Rozdział 8
Podsumowanie
Niniejsza praca nakreśliła problematykę detekcji oraz identyfikacji wzorców w
podejściu strukturalnym i obiektowym. W projekcie przedstawiono oraz zaimplementowano
następujące zagadnienia:
- problematykę oraz ograniczenia poprawnej detekcji
- schemat układu sterowania kamerą wykorzystującego silniki krokowe
- algorytm eigneface oparty na metodzie PCA.
Pierwsza część projektu przedstawiła łatwość zaprogramowania prostego systemu
monitoringu. Podstawowa znajomość języka C# wraz w połączeniu z odpowiednią biblioteką,
dała w krótkim czasie efektywne wyniki pracy. Problematyka poprawnego rozpoznawania
twarzy była zagadnieniem znacząco trudniejszym. Zmienność twarzy wynikająca z nastroju,
oświetlenia oraz kąta obrotu, w sposób niezaprzeczalny utrudniła zalgorytmizowanie zadania.
Uważam, że praca inżyniera zajmującego się dziedziną Computer Vision nierozłącznie
wiąże się z wykorzystywaniem dedykowanych bibliotek typu AForge.NET bądź OpenCV. Z
drugiej strony każdy zaawansowany użytkownik powinien zdawać sobie sprawę ze
złożoności wykorzystywanych metod lub funkcji.
33
Literatura
[
1] M.Turk, A. Pentland „Eigenfaces for recognition”, MIT 1991
[2]. R. Tadeusiewicz, M. Flasiński „Rozpoznawanie obrazów”
ISBN 83-01-10558-5, Państwowe Wydawnictwo Naukowe, Warszawa 1991
[3] D. Majchrzak „Identyfikacja ruchu postaci. Analiza możliwości, metody,
algorytmy”, Praca Magisterska, Politechnika Wrocławska, Wydział Elektroniki,
Wrocław, 2005
[4] L. Potocki „Silniki krokowe od podstaw”, cykl artykułów z miesięcznika
Elektronika dla Wszystkich, Warszawa, 2002
[5] K. Górski „20 prostych projektów dla elektroników”
ISBN 978-83-60233-29-0, Wydawnictwo BTC, Warszawa, 2008
[6] Toshiba, ULN2004AP 7 Darlington sink driver – Datasheet, kwiecień, 1998
WWW
[www.1] http://www.aforgenet.com/
[www.2] http://www.mitsumi.com/
[www.3] http://www.konar.pwr.wroc.pl/
[www.4] http://ashishrd.blogspot.com/