projekt inzynierski

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

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

background image

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























background image

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.





background image

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]










background image

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.



























background image

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







background image

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

background image

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






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

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]














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

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


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
















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/


Wyszukiwarka

Podobne podstrony:
Metodologia projektowania inzynierskiego
projekt 3, Inżynieria Środowiska PŚk, Semestr 2, Hydrogeologia 1, projekt, czyjeś projekty
Projekt Inzynierski Obliczenia wiązara kratowego G3 mitek
projekt inzynierski wskazowki w Nieznany
strona tytułowa projektu inżynierskiego pwr, Uczelnia PWR Technologia Chemiczna, Semestr 7, Różne pr
Materiały do projektu 1, Inżynieria Środowiska, Migracje Zanieczyszczeń
Strona tytułowa projektu, Inżynieria
Podstawy projektowania inzynierskiego
projekt inzynierski Jurowicz
Projekt 4 Inżynieria ruchu
Przedszkole2, Zarządzanie i inżynieria produkcji, Semestr 6, Podstawy projektowania inżynierskiego,
Instalacje sanitarne - projekt, Inżynieria Środowiska, Różne
Projekt[1]., Inżynieria Środowiska, Konstrukcje inżynierskie
projektowanie inżynierskie, Proj.inż.-Podstawowe zasady proj.- WYKŁAD 2, 4
strona pierwsza projektu inzynierskiego
Projektowanie strona tytulowa, STUDIA, IV SEMESTR, projektowanie inżynierskie
sprawko 3, studia, semestr V, podstawy projektowania inzynierskiego II, Podstawy projektowania inżyn
drzewo niezdatności, Podstawy projektowania inżynierskiego
projektowanie inżynierskie, Komp wspomag CAD - WYKlAD 7, 10

więcej podobnych podstron