background image

 

 

 

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 

 

background image

 

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 

 

 

 

 

 

 

background image

 

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 

 

 

 
 
 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

 

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.   
 
 
 

 

 
 

 
 
 

background image

 

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] 

 
 
 
 
 
 
 
 
 
 

background image

 

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. 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

 

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ą.   
 
 
 
 
 
 
 

 
 

background image

 

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 

background image

 

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 

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 

 
 
 
 
 
 

background image

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] 

 

 

 

 
 
 
 

background image

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. 

background image

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.  

 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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. 

 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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.  

background image

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.  

 
 

background image

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 

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] 

 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

background image

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 

 

 
 

Tab. 3 Sterowanie pełnokrokowe – kierunek CW

 

 

Nr taktu 

A+ 

B+ 

A- 

B- 

 

dziesiętnie 

 

12 

 
 

Tab. 4 Sterowanie półkrokowe – kierunek CW 

 

Nr taktu 

 

A+ 

 

B+ 

A- 

B- 

dziesiętnie 

10 

 
 

 

background image

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.  

 
 
 

background image

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 

 
 
 
 

 

background image

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ę. 

 
 
 
 
 

background image

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 

background image

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ę  

 
 

background image

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 

 

background image

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 

 

background image

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 

 
 

background image

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 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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.   
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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. 

 

 
 
 
 
 
 
 
 
 
 
 
 

background image

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.  
 
 

background image

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 

background image

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 

 

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.  
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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.  

 

 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

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/