• Nie Znaleziono Wyników

Index of /rozprawy2/10920

N/A
N/A
Protected

Academic year: 2021

Share "Index of /rozprawy2/10920"

Copied!
167
0
0

Pełen tekst

(1)WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI, INFORMATYKI I INŻYNIERII BIOMEDYCZNEJ KATEDRA AUTOMATYKI I INŻYNIERII BIOMEDYCZNEJ. ROZPRAWA DOKTORSKA. Artur Zawadzki. Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu. PROMOTOR: dr hab. inż. Marek Gorgoń, prof. AGH. Kraków 2014.

(2) FACULTY OF ELECTRICAL ENGEENERING, AUTOMATICS, COMPYTER SCIENCE AND BIOMEDICAL ENGEENERING DEPARTMENT OF AUTOMATICS AND BIOMEDICAL ENGEENERING. PH.D. THESIS. Artur Zawadzki. Moving device reconfigurable controller based on vision feedback using object tracking algorithm. SUPERVISOR: Marek Gorgoń Ph.D., D.Sc.. Kraków 2014.

(3) Chciałbym w tym miejscu serdecznie podziękować mojemu Promotorowi,. Panu. za wszelką pomoc,. dr. hab.. której. inż.. udzielał. Markowi mi. Gorgoniowi,. w trakcie. prac. nad niniejszą pracą.. Szczególne podziękowania należą się mojej Rodzinie. Mamie, za to że stworzyła mi warunki, dzięki którym mogłem dążyć do obranych celów. Żonie, za cierpliwość i wyrozumiałość, o którą czasami na pewno było trudno. Synowi Mateuszowi, za zrozumienie dla mojego deficytu czasu..

(4) 1. Spis treści 1 Wstęp.............................................................................................................................3 1.1 Motywacja..............................................................................................................3 1.2 Cele i teza pracy.....................................................................................................4 1.3 Zawartość rozprawy...............................................................................................5 2 Przegląd literatury..........................................................................................................6 2.1 Inteligentne kamery...............................................................................................6 2.2 Algorytmy śledzenia............................................................................................13 3 Zagadnienia teoretyczne i ich weryfikacja..................................................................17 3.1 Budowa układów FPGA......................................................................................17 3.2 Geometryczne przekształcenia obrazu.................................................................21 3.3 Wybrane algorytmy przetwarzania i analizy obrazu............................................23 3.3.1 Konwolucja..................................................................................................23 3.3.2 Filtracje konwolucyjne.................................................................................24 3.3.3 Detekcja krawędzi .......................................................................................26 3.3.4 Binaryzacja...................................................................................................29 3.4 Algorytmy detekcji krawędzi Canny w FPGA....................................................30 3.5 Zastosowany algorytm śledzenia obiektu............................................................32 3.5.1 Ogólna postać algorytmu.............................................................................32 3.5.2 Zagadnienia porównywania cech obrazów..................................................35 3.6 Weryfikacja software'owa algorytmu śledzenia...................................................37 3.6.1 Założenia wstępne........................................................................................37 3.6.2 Opis implementacji......................................................................................38 3.6.3 Wyniki eksperymentu...................................................................................39 3.7 Zagadnienia związane z dynamiką ruchomej kamery.........................................41 3.7.1 Charakter ruchu urządzenia..........................................................................41 3.7.2 Model ruchomej kamery..............................................................................41 3.7.3 Wyniki symulacji..........................................................................................43 4 Konstrukcja urządzenia...............................................................................................46 4.1 Opis ogólny..........................................................................................................46 4.2 Moduł główny – budowa elektroniczna...............................................................49 4.2.1 Układ FPGA.................................................................................................49 4.2.2 Pamięci.........................................................................................................55 4.2.3 Układ konfiguracji.......................................................................................57 4.2.4 Pamięć pomocnicza EEPROM.....................................................................59 4.2.5 Sygnał zegarowy..........................................................................................60 4.2.6 Sygnalizacja.................................................................................................61 4.2.7 Złącze...........................................................................................................61 4.3 Moduł główny – płytka PCB...............................................................................62 4.3.1 Wstęp............................................................................................................62 4.3.2 System zasilania ..........................................................................................62 4.3.3 Warstwy........................................................................................................66 4.3.4 Prowadzenie ścieżek....................................................................................67 4.3.5 Montaż..........................................................................................................69 4.4 Płyta bazowa – budowa elektroniczna.................................................................69 4.5 Kamery.................................................................................................................71 4.6 Sterownik silników krokowych...........................................................................76 4.7 Zespół napędowy i obudowa...............................................................................78 5 Implementacja w FPGA..............................................................................................79 A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(5) 2 5.1 Metody projektowania logiki dla układów FPGA...............................................79 5.2 Podział zadań pomiędzy część sprzętową a programową....................................82 5.3 Założenia implementacji......................................................................................84 5.4 Projekt VHDL......................................................................................................84 5.4.1 Top level.......................................................................................................84 5.4.2 Przepływ danych obrazowych......................................................................86 5.4.3 Generacja sygnałów zegarowych.................................................................88 5.4.4 Blok Microblaze...........................................................................................88 5.4.5 Obsługa pamięci SRAM..............................................................................90 5.4.6 Zarządzanie pamięciami...............................................................................91 5.4.7 Moduł kamery..............................................................................................94 5.4.8 Podgląd obrazu.............................................................................................95 5.4.9 Przetwarzanie wstępne.................................................................................97 5.4.10 Wykrywanie krawędzi................................................................................98 5.4.11 Wyznaczanie wektora przesunięcia............................................................99 5.4.12 Kontrola....................................................................................................101 5.5 Wyniki implementacji........................................................................................101 6 Uruchamianie i testowanie........................................................................................104 6.1 Ocena rozwiązania sprzętowego........................................................................104 6.1.1 Energochłonność........................................................................................104 6.1.2 Porównanie wydajności.............................................................................106 6.2 Prędkość nadążania............................................................................................109 6.2.1 Ograniczenia systemu mechanicznego.......................................................109 6.2.2 Ograniczenia systemu wizyjnego...............................................................109 6.2.3 Test prędkości śledzenia.............................................................................110 6.3 Testy śledzenia...................................................................................................114 7 Podsumowanie...........................................................................................................121 Bibliografia....................................................................................................................125 Spis skrótów..................................................................................................................133 Załącznik A - Schematy elektryczne..............................................................................138 Załącznik B - Płytka PCB .............................................................................................155 Załącznik C - Protokół komunikacyjny ........................................................................163. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(6) 3. 1 Wstęp 1.1 Motywacja Zagadnienia śledzenia obiektów mogą znajdować zastosowanie wszędzie tam, gdzie istnieje konieczność obserwacji otoczenia i reagowania na zmiany w nim zachodzące bez udziału operatora. W ostatnich latach obserwuje się duży rozwój systemów monitoringu. Zwiększanie liczby kamer monitorujących wywołuje duże trudności obserwacyjne. Operator kamer musi na bieżąco obserwować nieraz dziesiątki obrazów, z których część jest przez większość czasu statycznych, podczas gdy inne charakteryzują się dużą ilością zmiennej treści. Zdarza się też, że obiekt warty obserwacji przemieszcza się poza obszar widziany przez daną kamerę. W takiej sytuacji, gdy pojedyncza kamera ma za zadanie obserwować obszar większy niż jej pole widzenia, stosuje się kamery wyposażone w ruchome głowice. Łatwo można sobie wyobrazić sytuację, w której operator takiej kamery jednak nie zauważy w porę sytuacji wymagającej reakcji, obiekt obserwowany opuści pole widzenia kamery, a kamera nie zostanie obrócona w jego kierunku. Wówczas poza zakresem obserwacji mogą zajść wydarzenia, które nie zostaną zarejestrowane, a ewentualna akcja z nimi związana nie zostanie podjęta. Rozwiązaniem zapobiegającym takim zdarzeniom mogłoby być zastosowanie kamery, która automatycznie wykrywałaby i obserwowała poruszający się w jej polu widzenia obiekt, nie powodując utraty potencjalnie ważnych informacji. Kamery posiadające funkcję interakcji z otoczeniem nazywane są kamerami inteligentnymi. Istnieje wiele strategii wskazujących, jak zachowywać ma się taka kamera. Jedną z możliwych jest funkcja śledzenia. Pełnione funkcje zależą od stopnia zaawansowania całego systemu, a możliwości śledzenia znacznie zwiększa obecność sterowania położeniem urządzenia. Wymaga to obecności sterownika, którego zadaniem jest określenie sygnałów dla modułów wykonawczych decydujących o orientacji kamery. Sterownik taki może być w znacznym stopniu autonomiczny i samodzielnie podejmować decyzję o śledzeniu. Istotnym zagadnieniem jest przy tym szybkość reakcji urządzenia. Z jednej strony wymagane jest szybkie przetwarzanie obrazu, z drugiej określenie wartości sygnałów sterujących położeniem kamery tak, aby obiekt śledzony utrzymywany był w polu widzenia kamery. Autor postanowił skupić się na budowie kamery zdolnej do śledzenia i podążania za obiektem. Potencjalnych obszarów zastosowań jest oczywiście bardzo wiele, między innymi zadania monitoringu miejsc publicznych, nadzoru samotnie mieszkających osób starszych i inne zastosowania telemedycyny. Równie korzystne byłoby stosowanie inteligentnych kamer do sterowania oświetlenia, na przykład scenicznego, w czasie przedstawień teatralnych bądź koncertów. Możliwe byłoby również użycie ich do interaktywnego oświetlania przestrzeni A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(7) 4 wystawowych, w muzeach czy galeriach, jako systemów reagujących na obecność widza. Cechą wspólną takich urządzeń powinna być autonomiczność, praca w czasie rzeczywistym, kompaktowe rozmiary, a także energooszczędność. W zamiarze Autora, skonstruowanie kamery inteligentnej z wykorzystaniem układu reprogramowalnego, pozwoli na implementację, testowanie i ewaluację algorytmów śledzenia. Możliwe będzie dzięki temu określenie, w jakim stopniu kamera inteligentna będzie przydatna w zadaniach śledzenia w czasie rzeczywistym, a także jakie ograniczenia niesie za sobą takie rozwiązanie. Równocześnie możliwe będzie przeanalizowanie różnych architektur systemu obliczeniowego i konfiguracji układu reprogramowalnego.. 1.2 Cele i teza pracy Celem pracy było skonstruowanie i zbadanie możliwości wykorzystania, w zadaniach śledzenia obiektu ruchomego, zintegrowanego urządzenia wizyjnego, które również znajdujące się w ruchu. Zintegrowanie systemu wykonawczego z kamerą i jednostką obliczeniową stosowane jest względnie rzadko [6]. W takich przypadkach, w celu zapewnienia odpowiednich mocy obliczeniowych, wystarczających do wykonywania zadań przetwarzania i analizy obrazów, przy zachowaniu wymagań dotyczących systemów typu embedded, korzystne jest stosowanie układów rekonfigurowalnych [36] [52]. Wykorzystanie układu FPGA daje możliwość realizacji zadań obliczeniowych w czasie rzeczywistym, zazwyczaj przy znacznej liczbie klatek obrazu przetwarzanych na sekundę, niskim zużyciu energii i kompaktowych rozmiarach urządzenia [37]. Te kryteria są szczególnie ważne w rozpatrywanym zagadnieniu, co znajduje odzwierciedlenie w postawionej tezie pracy, która brzmi: ADAPTACJA I ZRÓWNOLEGLENIE ALGORYTMÓW ŚLEDZENIA OBIEKTÓW I ICH IMPLEMENTACJA NA REKONFIGUROWALNEJ PLATFORMIE OBLICZENIOWEJ, POZWOLI NA REALIZACJĘ SPRZĘŻENIA WIZYJNEGO W STEROWNIKU KONTROLUJĄCYM W CZASIE RZECZYWISTYM URZĄDZENIE RUCHOME. Przedmiotem niniejszej pracy jest skonstruowanie urządzenia względnie taniego, łatwego w ewentualnej produkcji. Urządzenie powinno stanowić niezależny, zwarty gabarytowo i energooszczędny składnik systemu monitorowania, nadzoru lub sterowania automatycznego, zdolnego reagować na ruch obiektu znajdujący się w polu widzenia kamery. Ze względu na uniwersalną architekturę urządzenia, możliwe jest zastosowanie go w całej gamie mobilnych aparatów stosowanych w urządzeniach automatyki i robotyce [5], w tym wykorzystanie tego typu systemów do śledzenia osób w systemach monitoringu, nadzoru, w telemedycynie, w systemach wykrywających obecność ludzi w zasięgu jego działania, a także w inteligentnych systemach oświetlenia [83], interaktywnie iluminujących otoczenie.. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(8) 5. 1.3 Zawartość rozprawy Rozprawę podzielono na 7 rozdziałów, w których starano się w sposób metodyczny przejść od podstaw teoretycznych, poprzez opis budowy inteligentnej kamery, aż po implementację algorytmu śledzenia obiektu i dyskusję uzyskanych wyników. W rozdziale 1: „Wstęp” przedstawiono wprowadzenie do tematyki rozprawy, a więc omówiono istotę wybranego kierunku badań, możliwe i wybrane sposoby jego realizacji. Przedstawiono cel, tezę oraz zawartość rozprawy. W rozdziale 2: „Przegląd literatury” zaprezentowano, na podstawie badań literaturowych, rozwój idei inteligentnych kamer na przestrzeni lat i przegląd algorytmów śledzenia obiektów. W rozdziale 3 : „Zagadnienia teoretyczne i ich weryfikacja” nakreślono teoretyczne podstawy realizowanego zadania, a więc wyjaśniono, czym są układy FPGA, przedstawiono podstawy geometrycznych przekształceń obrazu i wybranych algorytmów przetwarzania i analizy obrazów, opisano użyty algorytm śledzenia obiektu wraz z jego weryfikacją programową, a także omówiono zagadnienia związane z dynamiką ruchomej kamery. Ponadto przedstawiono wyniki implementacji zastosowanego w pracy algorytmu detekcji krawędzi w układach FPGA. W rozdziale 4 : „Konstrukcja urządzenia” opisano najważniejsze i kluczowe dla działania urządzenia szczegóły jego budowy, wraz z wyszczególnieniem najważniejszych elementów składowych. W rozdziale 5 : „Implementacja w FPGA” przedstawiono metodologię projektowania układów FPGA i założenia implementacyjne oraz zebrano opisy bloków projektu odpowiedzialnych za poszczególne etapy algorytmu, z odniesieniami do odpowiednich podrozdziałów z rozdziału 3. W rozdziale 6 : „Uruchamianie i testowanie” zaprezentowano wyniki doświadczalne uzyskane w trakcie pracy kamery inteligentnej w różnych warunkach otoczenia i dla różnych śledzonych obiektów. Przeanalizowano skuteczność i osiąganą szybkość śledzenia. Ponadto rozważono zagadnienia energetyczne i związane z wydajnością zastosowanego układu. W rozdziale 7 : „Podsumowanie” dokonano zebrania najważniejszych rezultatów rozprawy, przeprowadzono dyskusję ze wskazaniem możliwych dalszych kierunków prac oraz sformułowano wnioski. W załącznikach przedstawiono szczegółowe schematy ideowe części elektronicznej, projekty płytek PCB oraz protokół komunikacyjny interfejsu nadzorczego.. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(9) 6. 2 Przegląd literatury 2.1 Inteligentne kamery Inteligentne kamery (ang. smart cameras, intelligent cameras) są urządzeniami, które integrują w sobie funkcje akwizycji obrazu oraz system przetwarzania i analizy obrazu, a celem tego nie jest jedynie poprawa jakości rejestrowanego obrazu, lecz uzyskanie określonej zawartej w nim informacji. Sygnałem wyjściowym zatem nie musi być obraz, ale może być to zestaw jego cech, wektory ruchu poruszających się obiektów, informacja o typach i lokalizacji obiektów. Ponadto kamera inteligentna może podejmować akcje, takie jak zmiana kierunku obserwacji, stopnia powiększenia czy parametrów ekspozycji, a także generować komunikaty do systemu nadzorczego. Może być wykorzystana do sterowania ramieniem manipulatora czy nawet całym poruszającym. się. obiektem. (na. przykład. pojazdem. samobieżnym,. autonomicznym. samochodem). Według Automated Imaging Association (AIA), organizacji skupiającej podmioty zaangażowane w zagadnienia między innymi wizji maszynowej, kamera inteligentna powinna się charakteryzować następującymi cechami [10]: –. integracja w urządzeniu kluczowych funkcji, takich jak na przykład optyka, oświetlenie, system akwizycji obrazu, przetwarzanie obrazu,. –. użycie jednostki obliczeniowej i oprogramowania w celu realizacji pewnej inteligencji,. –. zdolność do realizacji powierzonych funkcji bez zewnętrznej ingerencji.. Formalna definicja kamery inteligentnej i stawiane jej wymagania, przy spojrzeniu na historyczny rozwój tego typu platformy, a także spektrum i sposoby jej wykorzystania we współczesnym świecie, wskazują na bardzo szeroki, wzajemnie się przenikający i zmieniający się na przestrzeni lat zakres zagadnienia. Urządzenia do przetwarzania i analizy obrazu zwane inteligentnymi kamerami budowane są w oparciu o różne elementy obliczeniowe oraz z zastosowaniem rozmaitych architektur obliczeniowych. To, co kilkadziesiąt lat temu było określane mianem smart camera, obecnie określić można raczej jako rozproszony systemem wizji maszynowej. Wynika to głównie z postępu technicznego związanego z miniaturyzacją urządzeń. Systemy zajmujące kiedyś całe pomieszczenia i wymagające obecności wielu różnych elementów składowych, obecnie można umieścić z pojedynczym urządzeniu. Podobnie, dzisiejsze kompaktowe kamery inteligentne w przyszłości być może będą postrzegane jako odpowiedniki lokalnych wysoce zintegrowanych systemów analizy obrazu, podczas gdy współczesne systemy rozproszone oparte o komputery PC wyewoluują w kierunku zintegrowanych urządzeń wizyjnych. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(10) 7 Za prekursorskie rozwiązania, posiadające cechy kamery inteligentnej, należałoby uznać prace dotyczące zastosowania autonomicznych systemów wizyjnych w badaniach kosmicznych [60]. Proponowane było tam połączenie mozaikowych fotodetektorów z lokalnym, umieszczonym bezpośrednio z sondzie kosmicznej, systemem obliczeniowym. Cyfrowa analiza obrazu względnego położenia gwiazd i planet wykorzystana byłaby do nawigacji i korekty ruchu w misjach sond kosmicznych. Koncepcja ta przedstawiona została na początku lat 60-tych XX wieku. Powiązane było to z konstruowaniem w tamtych czasach, obok elektronowych lamp analizujących, pierwszych w miarę użytecznych cyfrowych rejestratorów obrazu, takich jak na przykład sensory oparte o fotodiody i fototranzystory. W uzupełnieniu o istniejące w tamtych czasach systemy komputerowe stwarzało to nowe obszary rozwoju. Warto tutaj wspomnieć o pierwszych autonomicznych pojazdach (w zamyśle, gdyż gabaryty ówczesnych komputerów nie pozwalały na pełną autonomiczność), jak na przykład ten zaprezentowany na rysunku 2-1, których kolejne wersje były wówczas rozważane na Uniwersytecie Stanforda [146]. Koncepcja była rozwijana, aby w latach 70-tych powstała w pełni autonomiczna jednostka zdolna do realizacji podejmowanych przez siebie decyzji polegających na odszukaniu określonego prostego obiektu i skierowaniu się w jego kierunku [96]. Mimo, że konstrukcje te należałoby określić raczej autonomicznymi łazikami, ich systemy obliczeniowe posiadają jednak cechy kamer inteligentnych i w dzisiejszej realizacji mogłyby być takimi określone.. Rysunek 2-1: Stanford Cart konstrukcji James L. Adamsa, 1961 Urządzeniami, które w pełni zasługują na określenie mianem smart camera, mimo prostoty i niepozorności w zestawieniu z łazikami, są kontrolery myszy optycznych. Pierwszym takim urządzeniem był układ firmy Xerox (rysunek 2-2) [68], wyposażony w 16-pikselową matrycę optyczną i system detekcji ruchu w tym samym układzie scalonym. System śledził ruch jasnych punktów na ciemnym tle na drukowanej podkładce. Idea optycznej detekcji ruchu A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(11) 8 w podłożu jest wykorzystywana we współczesnych myszach. Służą do tego zintegrowane bardzo szybkie kamery (do 1500 klatek na sekundę) o niskiej rozdzielczości i podsystem detekcji ruchu. Występuje tutaj typowa cecha inteligentnej kamery – wyjściem nie jest obraz, lecz informacja – w tym przypadku wektor przesunięcia.. Rysunek 2-2: Chip myszy optycznej Xerox Wraz z rozwojem techniki, czego głównym przejawem był wzrost będących do dyspozycji mocy obliczeniowych, koncepcja kamer inteligentnych rozwijała się. Możliwe stało się budowanie urządzeń typu embedded, charakteryzujących się kompaktowymi rozmiarami, niskim poborem mocy i możliwością realizacji realnych zadań przetwarzania i analizy obrazów w czasie rzeczywistym. Trzeba tutaj przy okazji wyjaśnić, że niemal każda współczesna kamera konsumencka posiada funkcje przetwarzania i analizy obrazów. Podstawowymi celami analizy jest wykonanie analizy balansu bieli, ustalanie ostrości, parametrów ekspozycji czy realizacja korekty zniekształceń. Nie czyni to jednak kamery „inteligentną”, gdyż zabiegi te mają na celu jedynie polepszenie odbioru obrazu, a nie jego analizę zmierzającą do wyodrębnienia cech o charakterze niewizyjnym. System kamery inteligentnej ma bowiem za zadanie określić, co dzieje się na obrazie. Wykrystalizował się pewien podział ze względu na to, jak duża część informacji wizyjnej powinna być przetwarzana w samej kamerze. Według jednej koncepcji kamera jest autonomiczna i sama dokonuje całości obliczeń. Według drugiej natomiast, jednostki odpowiedzialne za funkcje rejestracji i przetwarzania obrazu są fizycznie oddzielone. Wówczas zazwyczaj nie jest istotna energochłonność, gabaryty czy specjalizowana konstrukcja zdalnego systemu obliczeniowego [57]. Pierwszą grupę można określić mianem zintegrowanych kamer inteligentnych. Jej przedstawicielem są wspomniane wcześniej myszy optyczne (np. współczesny układ [86], rysunek 2-3), ale także wszystkie urządzenia wyposażone w układy scalone, które integrują funkcje rejestracji obrazu z jego przetwarzaniem i analizą (tzw. camera on a chip). Są to zazwyczaj urządzenia o małych gabarytach charakteryzujące się bardzo małym poborem mocy, ale za to wysoce specjalizowane, czasem o charakterze eksperymentalnym [2]. Ich zakres zastosowania jest zwykle ograniczony do aplikacji, dla której zostały opracowane. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(12) 9. Rysunek 2-3: Chip myszy optycznej ADNS-2700 Klasycznym reprezentantem kamery inteligentnej jest tzw. kamera „wolnostojąca” (ang. stand-alone). Urządzenie, którego budowy podjął się Autor, jest przedstawicielem tej właśnie grupy. W systemie wbudowanym kamery „wolnostojącej”, moc obliczeniowa, a co za tym idzie możliwości systemu, najczęściej ograniczone są zależnie od zastosowanego elementu obliczeniowego i architektury systemu. Konstruując lub dobierając kamerę należy uwzględnić wiele ograniczeń, takich jak dopuszczalne gabaryty obudowy, sposób zasilania, zakładany stopień mobilności urządzenia i, co bardzo istotne, kosztu wytworzenia [64]. Wśród urządzeń omawianej grupy kamer inteligentnych, bardzo dużą podgrupę stanowią systemy wizji maszynowej. W wizji maszynowej często stosuje się uproszczone graficzne interfejsy programistyczne, umożliwiające realizację złożonych operacji wizyjnych w kamerach [76], które sprzężone są z systemami automatyki linii produkcyjnej. Możliwe jest na przykład sortowanie, inspekcja wyrobów, pakowanie czy pozycjonowanie. Spotykane są również urządzenia określane mianem inteligentnych, w których sama kamera nie jest wyposażona w funkcje przetwarzające i analizujące obraz. Jest ona natomiast połączona za pomocą szybkiego interfejsu ze znajdującą się w pobliżu jednostką obliczeniową, którą może być wyspecjalizowana karta w komputerze PC albo wręcz sam komputer. Duża część systemów wizji maszynowej oparta jest na tej koncepcji (np. [23]). Znane są systemy rozproszone, w których zestaw współpracujących ze sobą kamer tworzy jedną wirtualną, inteligentną kamerę. W systemach takich pojedyncze kamery mogą być inteligentne, ale równie dobrze kamery mogą być zwykłe, a funkcję integrującą pełni jednostka centralna. W odniesieniu do operacji wizyjnych przeprowadzanych w tego typu systemach, spotyka się określenie wielowidokowej analizy obrazu. Systemy takie często są budowane w oparciu o kamery IP i specjalizowane, również komercyjnie stosowane, oprogramowanie [50]. Wśród kamer inteligentnych najczęściej spotyka się urządzenia wykorzystujące system mikroprocesorowy. Mogą to być procesory [76] [136] lub mikrokontrolery ogólnego przeznaczenia [46] [97], procesory DSP [75] [33] lub specjalizowane procesory, tzw. media processors [116] [110]. Wśród rozwiązań alternatywnych dużą popularność zyskują systemy. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(13) 10 z układami rekonfigurowalnymi. Jako zalety takiego rozwiązania należy wskazać możliwość realizacji zadań przetwarzania obrazów operujących na bardzo dużej ilości danych wizyjnych i wymagających znacznej mocy obliczeniowej w czasie rzeczywistym, nawet dla kilku równoległych strumieni wideo. Ponadto istnieje możliwość integracji w jednym układzie scalonym również innych funkcji koniecznych do wykonywania przez system (jak na przykład kontrola modułów wykonawczych, warstwa komunikacyjna i inne), przy zachowaniu niskiego poboru energii i względnie prostej konstrukcji elektronicznej. Zastosowanie układów FPGA jest bardzo dobrym rozwiązaniem w aplikacjach wymagających dużej wydajności, rozumianej głównie. jako zdolność. przetwarzania. w. czasie. rzeczywistym obrazów o dużych. rozdzielczościach, ale w urządzeniach o małych lub średnich wolumenach. Czasami korzystne jest połączenie zalet układów FPGA i procesorów w jednym systemie. Wówczas podsystem FPGA odpowiada za przetwarzanie wstępne i przepływ danych obrazowych, zaś procesor za nieliniową analizę obrazu. Możliwa jest zmiana części algorytmicznej bez zmiany opisu konfiguracji układu FPGA [94]. Na rynku obecne są rozwiązania inteligentnych kamer z układami FPGA. Przykładem są kamery firmy Optomotive [81]. Najbardziej zaawansowaną oferowaną obecnie kamerą serii (wg stanu z września 2014 roku) jest kamera Velociraptor (rysunek 2-4), oparta na układzie Spartan-6, wyposażona w dwa banki pamięci dynamicznej SDRAM i interfejs GigE. Przeznaczona jest do systemów wizji maszynowej, oferując, wg zapewnień producenta, wysoką wydajność w zadaniach przetwarzania obrazów, zwłaszcza kompresji JPEG.. Rysunek 2-5: Inteligentna kamera rezeCam z układem Zynq Rysunek 2-4: Inteligentna kamera Optomotive Velociraptor z układem Spartan-6 Podobnym urządzeniem jest inteligentna kamera FSI Technologies RazerCam [32] (rysunek 2-5), z układem Xilinx Zync, z dwoma rdzeniami ARM Cortex A9. Nieco prostszą konstrukcją, gdzie układ FPGA (Xilinx Artix) pełni funkcje pomocnicze, ale także może wykonywać preprocessing, jest seria kamer Tattile S50, S100 i S200 [109]. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(14) 11 Ciekawą platformę stanowi tzw. Open Smart Camera [1] (rysunek 2-6), firmowana przez Actuation and Control Technologies. Prezentowana inteligentna kamera jest skalowalną wielopłytową konstrukcją, składającą się z sensora optycznego CMOS, układu FPGA Altera Cyclone-III współpracującego z zestawem pamięci statycznych (głównie jako podwójny bufor ramki) oraz płyty mikroprocesorowej pracującej pod kontrolą systemu Linux z silnym procesorem Atom N450 i 1 GB pamięci DDR RAM.. Rysunek 2-6: Open Smart Camera W pracy [142] opisano system (rysunek 2-7) wykorzystujący kamerę pracującą w zakresie bliskiej podczerwieni podłączoną do płyty z układem FPGA Spartan-6 LX45 i pamięcią dynamiczną, służący do zadań analizy ruchu ulicznego. W urządzeniu tym układ FPGA nie służy jednak do wykonywania obliczeń, lecz odpowiada za akwizycję obrazu i przesłanie danych do jednostki obliczeniowej, którą jest komputer PC. Nie jest to zatem inteligentna kamera typu stand-alone, chociaż posiada zasoby niezbędne do zbudowania systemu analizy obrazu. Inną inteligentną kamerę, z układem FPGA Xilinx Spartan-3 i pamięcią dynamiczną, przedstawiono w pracy [7] (rysunek 2-8). Układ FPGA ma tu za zadanie wykonywanie przetwarzania wstępnego oraz detekcję obiektów.. Rysunek 2-7: Smart camera z układem Spartan-6. Rysunek 2-8: Smart camera z układem Spartan-3. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(15) 12 W pracy [61] opisano 1,3-megapikselową kamerę CMOS sprzęgniętą z płytą ewaluacyjną z układem FPGA Virtex-6, tworzącą system inteligentnej kamery, w której użyto algorytmów. wstępnego. przetwarzania. w. celu. poszerzenia. zakresu. dynamicznego. rejestrowanych obrazów. Z kolei w pracy [80] przedstawiono inteligentną kamerę z układem Virtex-5 (rysunek 2-9) zastosowaną do śledzenia obiektów.. Rysunek 2-9: Inteligentna kamera z układem Virtex-5 Dyskusję nad różnymi koncepcjami inteligentnych kamer, w tym kilka propozycji opartych na układzie FPGA, także Spartan-6, zawarto w prezentacji [31]. Układ FPGA pełnić może funkcje zarządzania sensorem optycznym, akwizycji i wstępnego przetwarzania obrazu, a także pewnych operacji graficznych, jak wykrywanie wierzchołków czy też, we współpracy z procesorem, wyliczanie przepływu optycznego. Modularną kamerę inteligentną opisano w pracy [12]. Wykorzystano w niej układ FPGA Altera Cyclone-III oraz sześć bloków pamięci RAM. Kamera z założenia ma umożliwiać wykonywanie przetwarzania obrazów w czasie rzeczywistym. Jako przykład uruchomiono na niej algorytmy filtracji obrazu. Wśród ciekawszych urządzeń typu smart camera zawierających układ FPGA, które dedykowane są do realizacji operacji śledzenia, można wymienić urządzenia firmy TYZX realizujące proste śledzenie osób w pomieszczeniach [112]. Wartym odnotowania jest system ułatwiający manewrowanie robotów podwodnych [48]. Z kolei w pracy [144] przedstawiono inteligentną kamerę z układem Xilinx Virtex-II Pro z opcją dynamicznej rekonfiguracji. Zaprezentowano efekty działania kilku modułów, w tym śledzenia trzech regionów na obrazie. Wynik przeglądu i analizy dostępnych rozwiązań kamer inteligentnych z układami FPGA wskazuje na to, że zintegrowane kamery wyposażone w możliwość ruchu nie są urządzeniami powszechnie spotykanymi. Możliwe jest ich zestawienie z niezależnych urządzeń – głowicy i kamery. Jedną z nielicznych konstrukcji tego typu jest kamera opisana w [150], składająca się z karty z układem Virtex-II i kamery typu PTZ (ang. pan-tilt-zoom, czyli mającej możliwość obrotu wokół dwóch osi i funkcję powiększania optycznego). W większości przypadków jednak układy FPGA realizują funkcje wstępnego przetwarzania, ewentualnie A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(16) 13 kompresji, dość często stanowią swoisty interkonektor pośredniczący w przepływie danych obrazowych do mikroprocesorowych jednostek obliczeniowych. Ze względu na charakter obliczeń, w którym wymagane są duże pojemności pamięci do akwizycji obrazów o dużych rozdzielczościach, w urządzeniach takich prawie zawsze używane są pamięci dynamiczne. Na tym tle opisana w rozprawie inteligentna kamera znacząco się wyróżnia – zawiera zintegrowane w obudowie urządzenia elementy wykonawcze zapewniające zmianę położenia i wykorzystuje wyłączenie pamięci statyczne. Do przechowywania danych zastosowano wiele modułów pamięci statycznej RAM, połączonych bezpośrednio z układem FPGA. Zastosowanie pamięci statycznych daje sporo korzyści, ze względu na łatwy i szybki dostęp do danych. Dostęp do każdej lokacji adresowej odbywa się z tą samą prędkością, niezależnie od tego, do której lokacji adresowej odbywał się poprzedni dostęp. Oznacza to, że możliwy jest zapis lub odczyt danych w dowolnej kolejności bez żadnych zbędnych opóźnień. Jest to główna różnica w stosunku do pamięci dynamicznych, w których szybki dostęp do danych (zorganizowanych w matrycę) jest możliwy w obrębie danego wiersza, zmiana kolumny wnosi zaś pewne opóźnienia. Ponadto odczyt pamięci niesie konieczność odświeżania ładunku, co powoduje dodatkowe opóźnienia. Zaletą pamięci dynamicznych jest z kolei większa pojemność (wynikająca z mniejszego kosztu produkcji). W przypadku skonstruowanej kamery inteligentnej przewidziana pojemność (osiem pamięci o pojemności 2 MB każda) jest jednak w pełni wystarczająca dla przewidywanych zadań.. 2.2 Algorytmy śledzenia Na przestrzeni lat zostało opracowanych wiele algorytmów śledzenia obiektów. Dostępne są w literaturze zarówno opisy samych algorytmów, jak i ich zastosowania w różnych aplikacjach. Obiekty można śledzić przy wykorzystaniu informacji o cechach, takich jak kolor, kształt, tekstura, krawędzie, które dotyczą obrazu lub jego wyodrębnionych obszarów. Można również wykorzystać informacje o zachodzącym pomiędzy kolejnymi klatkami ruchu fragmentów obrazu. Możliwe jest wówczas śledzenie trajektorii i relacji przestrzennych pomiędzy kolejnymi ujęciami, co prowadzi do wykrycia poruszających się obiektów. Podzielenie obrazów na tło oraz obiekty podlegające detekcji jest podstawową ideą detekcji z wykorzystaniem metod ekstrakcji tła. Do zdefiniowania obrazu tła można użyć wielu metod uwzględniających możliwą zmienność obserwowanej sceny w czasie. Tło definiowane jest przy tym jako obraz bez obiektów. Może się ono jednak zmieniać w czasie, na przykład wskutek zmiany oświetlenia, ruchów innych obiektów (drzewa, fale, chmury), a także ruchu samej kamery. Stąd też stosuje się szereg metod mających na celu polepszenie działania grupy algorytmów odpowiedzialnych za ekstrakcję. Kilka z nich omówiono w pracy [11]. Różnice. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(17) 14 w algorytmach sprowadzają się do metody wyznaczenia i adaptowania w czasie obrazu tła. Najprostszą metodą jest sukcesywna aktualizacja tego obrazu. Dokonuje się tego poprzez zmieszanie dotychczasowego tła z kolejnym obrazem, ale w taki sposób, żeby udział nowego obrazu był dużo mniejszy niż poprzedniego tła. Bardziej złożone metody bazują na wyznaczaniu tła bądź jego modelowaniu w oparciu o funkcje gęstości prawdopodobieństwa. Przykładowo w pracy [145] przedstawiono metodę modelowania tła z wykorzystaniem prawdopodobieństwa GMM (ang. Gaussian Mixture Model). Możliwa jest dzięki temu estymacja tła zawierającego pewne zmienne fragmenty, nie będące obiektami. Stosowane są również metody oddzielenia tła od obiektów w oparciu o różne miary prawdopodobieństwa, także ze zmiennymi progami, zależnymi od lokalnej struktury obrazu [54]. Spotyka się też metody oparte na estymacji KDE (ang. Kernel Density Estimation). Piksele tła są obliczane z uwzględnieniem okna i określonej liczby poprzednich obrazów. Eksperymenty z użyciem KDE można zobaczyć w pracy [151]. W kilku pracach można znaleźć informacje o użyciu ukrytych modeli Markowa do klasyfikacji małych bloków obrazu jako należących do tła lub obiektu [137]. Podstawową metodą służącą do oddzielenia obiektu od reszty obrazu z wykorzystaniem wyznaczonego tła jest odejmowanie go od obrazu. Technika ta nosi nazwę background subtraction (BS) i została szeroko omówiona w [29]. W podstawowej wersji detekcji ruchomego obiektu metodą BS tworzony jest obraz, którego każdy piksel przyjmie wartość 1, gdy różnica pomiędzy pikselem obrazu tła a pikselem aktualnego obrazu jest mniejsza niż ustalony próg, albo wartość 0 w przeciwnym wypadku [143]. Można przyjmować różne miary różnicy pomiędzy obrazami, na przykład różnice jasności i ich kombinacje dla poszczególnych składowych w różnych przestrzeniach barw. Możliwe jest również przyjęcie innych miar, jak w pracy [98] albo w [65] [55] [59], jako implementacja FPGA. Wykorzystanie wykluczania zakłóceń (np. cieni) w procesie oddzielania obiektów od tła zastosowano z kolei w [102] oraz [118], implementując algorytm w układzie FPGA. Inna grupą algorytmów śledzenia obiektów są metody oparte na detekcji cech obiektów. Są one dość popularne, gdyż umożliwiają wykrycie na obrazie wielu obiektów, które mogą być indywidualnie śledzone, także przy zaburzonym i złożonym tle, trudnym do modelowania przez techniki BS. Znane są na przykład metody oparte na aktywnym konturze (ang. Active Contour Model), w tym na przykład tzw. snaxels stosowane w [42]. Przykładowe wykorzystanie cech SIFT (ang. Scale Invariant Features Transform) do śledzenia obiektów w celu późniejszego tworzenia trójwymiarowej mapy przedstawiono w [147], zaś detekcji Haara w ruchomej kamerze w [13]. Szeroką dyskusję na temat metod konturowych przedstawiono również w pracy [51]. Należy podkreślić, że metody z tej grupy umożliwiają śledzenie wybranych obiektów o zdefiniowanych wcześniej cechach, których odpowiednie określenie może być A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(18) 15 realizowane w procesach adaptacji. Przykłady można znaleźć w pracy [8], która sygnalizuje problem częściowego przesłaniania obiektów. Szersze ujęcie problemu, wraz z propozycją algorytmu umożliwiającego śledzenie wielu osób, zaprezentowano w [21]. Pewną podgrupą metod opartych na detekcji cech są metody wykorzystujące modele śledzonych obiektów. Przykład takiego śledzenia przedstawiono w [58]. Znane są algorytmy śledzenia oparte na analizie rozkładu kolorów na obrazie i na tej podstawie wykrywające określone obiekty. Można tutaj wyróżnić kilka metod, takich jak metody proste MS (ang. mean-shift) lub adaptacyjne CMS i CAM-shift. Podstawowa metoda mean-shift, polagająca na przesuwaniu okna w ślad za zagęszczeniem punktów o określonych cechach, omówiona na przykład w [24], została zaadaptowana do zagadnień śledzenia obiektów [114] [103]. Metoda CAM-shift jest adaptacyjnym rozwinięciem metody mean-shift i bardzo dobrze nadaje się do śledzenia obiektów o wyróżnialnych cechach morfologicznych (np. twarzy), dostosowując się do zmian oświetlenia i rozmiaru (np. w wyniku zbliżania się lub oddalania od kamery). Jej działanie polega na wyliczeniu okna dla określonej cechy (np. tekstury twarzy) i szukaniu okna z największą intensywnością badanej cechy na kolejnych obrazach. Dzięki temu można uzyskać dobre śledzenie wyróżnialnych obiektów. Metoda jest dość popularna począwszy od [15], a jej przykładowe implementacje można znaleźć w pracy [101], także w układzie FPGA [117]. Spotkać można również algorytmy wykorzystujące specyfikę geometrycznych przejść pomiędzy kolejnymi ramkami dla obrazów syntetycznych, co zaprezentowano w [91]. Popularną metodą, przydatną nie tylko w zadaniach śledzenia, jest metoda przepływu optycznego (ang. motion flow). Wyznaczenie przepływu optycznego opiera się na założeniu, że zmiany jasności pikseli nie następują nagle w ramach kolejnych ramek obrazu oraz że są niezmienne w czasie dla tych samych rejestrowanych punków obserwowanej sceny. Inaczej rzecz ujmując, dziedzina obrazu musi być ciągła w przestrzeni i czasie [9]. Ponadto ruch punktów obrazu musi być niewielki pomiędzy sąsiednimi analizowanymi klatkami. W ramach metod grupy przepływu optycznego opracowano wiele algorytmów służących do wyznaczania gęstej lub rzadkiej mapy przepływu. Wprowadzenie modyfikacji miało na celu polepszenie jakości obliczeń dla realnych obrazów, nie zawsze zgodnych z teoretycznymi założeniami metody [120]. Jednym z takich algorytmów jest adaptacja algorytmu Lucas-Kanade [67] do zadania wyznaczania mapy przepływu [79]. Spotyka się również propozycje implementacji w układach FPGA [89]. Inną modyfikacją gradientowej metody przepływu optycznego, zaimplementowaną w układzie FPGA, przedstawiono w pracy [115]. Dość szeroko stosowanym jest algorytm Horn-Schunk [47], którego różne modyfikacje, jak na przykład [90], można spotkać również jako implementacje w układach FPGA [43][58]. Połączenie metod konturowych z przepływem optycznym zaprezentowano w [138]. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(19) 16 Metody przepływu optycznego mogą być stosowane również dla kamer znajdujących się w ruchu. Często stosuje się opisane metody do przypadku odwrotnego, w którym estymuje się nie ruch obiektów, lecz ruch kamery [107]. Do śledzenia obiektów wykorzystuje się też czasem metody częstotliwościowe, wykorzystujące na przykład filtr Gabora. Pozwalają one na wykrywanie ruchu trudnego do uchwycenia metodami operującymi w dziedzinie przestrzennej. Jedną z implementacji w układzie FPGA przedstawiono w pracy [80]. Odmianą algorytmów służących wyznaczaniu przepływu optycznego są algorytmy korelacyjne typu BMA (ang. Block Matching Algorithm). Najczęściej spotyka się je w kodowaniu obrazów, jednak można je również stosować w zagadnieniach śledzenia. Wykorzystuje się wówczas dodatkowe miary błędu służące odpowiedniemu dopasowaniu okien, takie jak SAD (ang. Sum of Absolute Difference), MAD (ang. Mean Absolute Distortion), SSD (ang. Sum of Squared Differences) lub NCC (ang. Normalized Cross-Correlation) [56]. Implementację algorytmu SAD w układzie FPGA (z uzupełnieniem o generację tła) można znaleźć na przykład w [38]. Przykładowe wykorzystanie miary SSD do śledzenia ruchomych obiektów przez ruchomą kamerę przedstawiono w [95]. Zastosowanie metod stereoskopowych daje możliwości syntezy kilku metod, jak na przykład segmentacji oraz dopasowania do modeli na podstawie wyznaczenia głębi. Jeden z przykładów zaprezentowano w [74].. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(20) 17. 3 Zagadnienia teoretyczne i ich weryfikacja 3.1 Budowa układów FPGA Układy FPGA (ang. Field Programmable Gate Array) są przedstawicielami szerszej grupy programowalnych układów logicznych PLD (ang. Programmable Logic Devices). Do grupy tej zaliczają się również układy SPLD (ang. Simple Programmable Logic Devices), czyli proste układy programowalne pierwszej generacji, zastępujące układy logiczne starszych typów (przedstawicielami były na przykład układy typu PAL, GAL), a także układy CPLD (ang. Complex Programmable Logic Devices), będące rozwinięciem układów SPLD pod względem złożoności architektury. Logiczne układy programowalne posiadają funkcjonalność zbliżoną do układów ASIC (ang. Application Specific Integrated Circuit), czyli układów scalonych zaprojektowanych do realizacji z góry wyspecyfikowanego zadania. Tym, co je jednak wyróżnia, jest możliwość określenia przez użytkownika funkcji logicznych układu (jego konfiguracji) w drodze opisu programowego po zakończeniu cyklu produkcyjnego. W przypadku układów FPGA może się to odbywać wielokrotnie, po zamontowaniu układu w urządzeniu docelowym. Ceną, którą płaci się za możliwość rekonfiguracji układu w gotowym już urządzeniu, jest zazwyczaj wolniejsza praca i większy pobór mocy w porównaniu z układami ASIC. Zyskuje się jednak niepodważalną zaletę, jaką jest możliwość zaprojektowania nawet bardzo złożonych operacji logicznych, w tym nawet syntezowalnych procesorów, w urządzeniach produkowanych w niewielkich seriach. Realizacja tych samych funkcji w układzie ASIC dla krótkich serii produkcyjnych byłaby nieporównywalnie bardziej kosztowna. Układy FPGA produkowane są przez kilka firm, wśród których dominują Altera oraz Xilinx. W celu zaprezentowania ogólnej budowy układów FPGA wybrano układ zastosowany w skonstruowanej inteligentnej kamerze, a mianowicie układ Spartan-6 firmy Xilinx. Układ ten jest typowym przedstawicielem rodziny układów FPGA, przy czym należy pamiętać, że inne układy FPGA mogą się różnić budową wewnętrzną. Układy z rodziny Spartan lokowane są wśród układów firmy Xilinx jako układy klasy popularnej. Zapewniają wystarczające w wielu zastosowaniach zasoby logiczne, aczkolwiek dużo mniejsze od dostępnych największych układów. Pełna dokumentacja udostępniana jest przez producenta układu jako obszerny zestaw dokumentów pdf. Zwięzłe porównanie najważniejszych parametrów rodzin układów FPGA Xilinx zawiera tabela 3-1.. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(21) 18 Spartan-6. Artix-7. Kintex-7. Virtex-7. Kintex Ultra Scale. Virtex Ultra Scale. Komórki logiczne. 147 443. 215 360. 477 760. 1 954 560. 1 160 880. 4 407 480. Pamięć BlockRAM. 4,8 Mb. 13 Mb. 34 Mb. 68 Mb. 76 Mb. 132,9 Mb. Jednostki DSP slices. 180. 740. 1920. 3600. 5520. 2880. Prędkość portów. 3,2 Gb/s. 6,6 Gb/s. 12,5 Gb/s. 28,05 Gb/s. 16,3 Gb/s. 32,75 Gb/s. Liczba linii we/wy. 576. 500. 500. 1200. 832. 1456. Tabela 3-1: Porównanie rodzin układów FPGA firmy Xilinx (09.2014). Układ Spartan-6 przechowuje konfigurację w wewnętrznych zasobach pamięci SRAM. Pojemność tej pamięci waha się w zależności od typu układu od 2,6 Mb do 33 Mb. Konfiguracja układu jest tracona po wyłączeniu zasilania, zatem trzeba ją każdorazowo odświeżać, na przykład z zewnętrznej pamięci typu flash. Struktura wewnętrzna układu Spartan-6 oparta jest na matrycy konfigurowalnych bloków logicznych (ang. CLB – Configurable Logic Block). Strukturę bloku CLB przedstawiono na rysunku 3-1 [121]. Fragment oznaczony „Switch Matrix” odpowiada za komunikację pomiędzy blokiem CLB a pozostałą częścią układu FPGA.. Rysunek 3-1: Blok CLB w układzie Spartan-6 [121] Każdy blok CLB zawiera dwie jednostki slice. W układzie Spartan-6 występują trzy rodzaje takich jednostek: SLICEM (25% jednostek slice), SLICEL (25%) oraz SLICEX (50%). Jednostka SLICEM składa się z czterech 6-wejściowych i 1-wyjściowych bloków LUT (ang. look-up table), mogących realizować asynchroniczne funkcje logiczne. Alternatywnie jednostki LUT można zorganizować jako jeden podwójny blok 5-wejściowy i 2-wyjściowy. Jednostki LUT mogą również pełnić funkcję 64-bitowej pamięci RAM, zorganizowanej jako pojedyncza jednostka 64-bitowa lub dwie jednostki 32-bitowe, także w formie rejestrów przesuwnych o konfigurowalnej długości. Każdy slice zawiera również synchroniczny element pamięci. Element ten stanowi osiem przerzutników typu D, które mogą być wykorzystywane. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(22) 19 również jako zatrzaski (ang. latch). Ponadto jednostki CLB zawierają mechanizm propagacji bitów przeniesienia dla realizacji operacji arytmetycznych. Zatem pojedyncza jednostka CLB, zawierająca dwie jednostki slice, posiada zamiennie 8 jednostek LUT, 16 flip-flop, łańcuch przeniesień carry logic, 256 bitów pamięci RAM lub 128 bitów rejestrów przesuwnych. Jednostki typu SLICEL posiadają takie same funkcjonalności jak jednostki SLICEM, ale pozbawione są możliwości realizacji funkcji pamięci i rejestrów przesuwnych. Z kolei jednostki SLICEX są okrojoną wersją jednostek SLICEL, w których zrezygnowano z funkcji propagacji przeniesienia (carry) i rozbudowanych multiplekserów. Wyjaśnienia wymagają funkcje jednostek LUT, pełniących funkcje generatorów funkcyjnych. Ogólną strukturę blokową pojedynczej jednostki LUT przedstawiono na rysunku 3-2. Jak widać, jednostki tego typu (LUT6) mogą być dzielone na mniejsze (LUT5). Umożliwia to realizacje dowolnych 6- lub 5-wejściowych funkcji logicznych z jednym lub dwoma wyjściami. Zasoby logiki uzupełnione są o multipleksery, finalnie umożliwiając realizację nawet 7-wejściowych funkcji logicznych. Funkcje o większej liczbie wejść są możliwe do realizacji przy użyciu kaskadowo połączonych jednostek slice. Dzięki temu programy implementacyjne uzyskują dużą swobodę w realizacji nawet złożonych funkcji. Możliwości te są zwiększane o rozbudowane funkcje typu distributed RAM oraz rejestrów przesuwnych, realizowanych na tych samych jednostkach. Przykładowo, każdy LUT potrafi opóźnić szeregowy sygnał wejściowy od 1 do 32 cykli zegara, co przy kaskadowym połączeniu w obrębie SLICEM daje maksymalnie 128-bitowy rejestr przesuwny. Ponadto LUT może realizować funkcje multipleksera 4:1, a przy większej liczbie połączonych jednostek może dać również multipleksery o większej szerokości (w tym 16:1 w obrębie jednego SLICEM).. Rysunek 3-2: Jednostka LUT w układzie Spartan-6 [121] Bloki wejścia/wyjścia (ang. IOB – Input Output Block) w wersji zwanej SelectIO [122] służą jako połączenie pomiędzy zewnętrznymi wyprowadzeniami (pinami) układu a strukturą wewnętrzną układu FPGA. Ich schemat blokowy przedstawiono na rysunku 3-3. Jednostki IOB umożliwiają szeroki wybór (w tym wejść typu pojedynczego albo różnicowego), standardu elektrycznego, w tym LVTTL, LVCMOS, PCI, I 2C, SMBUS, SDIO, HSTL, LVDS, MobileDDR. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(23) 20 i wielu innych. Możliwe jest ustalenie wydajności prądowej wyjścia, szybkości narastania sygnału, konfiguracji rezystorów terminujących i podciągających. Piny zgrupowane są w banki napięciowe,. które. mogą. posiadać. różne. napięcia. zasilania.. W. efekcie. układ. Spartan-6 posiada bardzo duże możliwości w zakresie dopasowania elektrycznego z układami peryferyjnymi.. Rysunek 3-3: Budowa portu I/O układu Spartan-6 W układzie Spartan-6 zaprojektowano specjalizowane jednostki akumulująco-mnożące nazwane DSP slice w wersji DSP48A1 [123]. Układy z rodziny Spartan-6 mogą zawierać od 8 do 180 jednostek DSP48A1. Uproszczony schemat funkcjonalny tych bloków przedstawiono na rysunku 3-4. Najprościej rzecz ujmując, jednostka ta umożliwia dodawanie dwóch 18-bitowych liczb, mnożonych z trzecią, a następnie dodanie liczby 48-bitowej w celu uzyskania 48-bitowego wyniku. Ponadto DSP48A1 wyposażona jest w funkcjonalność kaskadowego łączenia z innymi DSP48A1, przez co uzyskać można bardzo szybkie złożone funkcjonalnie filtry, przydatne w przetwarzaniu sygnałów.. Rysunek 3-4: Jednostka DSP48A1 w układzie Spartan-6 Jako zasoby pamięciowe, oprócz wspomnianej pamięci typu Distributed RAM (w ramach bloków CLB), układ Spartan-6 zawiera specjalizowane zasoby pamięciowe, nazwane Block RAM [124]. Są to pamięci, które można skonfigurować w bardzo elastyczny sposób. Pojedynczy blok pamięci może pracować jako blok o pojemności 18 Kb albo dwa bloki po 9 Kb, posiadając organizację od 1 do 36 bitów, oferując możliwość pracy jedno- lub dwuportowej (równoczesny zapis i odczyt danej). Zasoby tej pamięci w największym układzie Spartan-6 wynoszą do 4824 Kb. Wszystkie jednostki typu CLB, IOB, DSP slice, Block RAM łączone są przez konfigurowalną matrycę. Matryca ta umożliwia kilka rodzajów połączeń, dzięki którym narzędzie implementacyjne ma możliwość optymalizacji połączenia zasobów w celu uzyskania wysokiej wydajności lub minimalizacji zajętych zasobów. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(24) 21 Warto wspomnieć o generacji i sposobie dystrybucji sygnałów zegarowych wewnątrz układu Spartan-6 [125]. Każdy układ rodziny wyposażony jest w dedykowane 16 globalnych linii zegarowych (GCLK), mających za zadanie dystrybuować sygnał zegarowy do różnych rejonów struktury FPGA z pominięciem standardowej matrycy połączeń, przez co sygnał zegarowy wolny jest od trudnych do określenia opóźnień i przesunięć fazowych. Z zewnątrz sygnał zegarowy można doprowadzić (i podłączyć do linii globalnych) poprzez maksymalnie 40 dedykowanych linii I/O. Do dyspozycji są również specjalizowane bloki CMT (ang. Clock Management Tile), zawierające po dwie jednostki DCM (ang. Digital Clock Manager) i jedną PLL (ang. Phase Lock Loop). Liczba tych jednostek sięga 6 w największych układach Spartan-6. Bloki CMT umożliwiają generację (na podstawie zewnętrznego sygnału zegarowego) wewnętrznych sygnałów zegarowych, o definiowanych mnożnikach, dzielnikach, wzajemnych przesunięciach fazowych. Uzyskuje się dzięki temu duże możliwości w zakresie doboru domen zegarowych i właściwego taktowania bloków funkcjonalnych projektów rekonfigurowalnych.. 3.2 Geometryczne przekształcenia obrazu W kamerze perspektywicznej (rysunek 3-5) zachodzi relacja pomiędzy współrzędnymi przestrzennymi X, Y, Z a współrzędnymi obrazowymi x, y, przy znanej ogniskowej f, opisana zależnościami (3-1) i (3-2).. Rysunek 3-5: Model kamery perspektywicznej x= f. X Z. (3-1). y= f. Y Z. (3-2). A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(25) 22 Zmiana obrazu rejestrowanego przez kamerę, której ruch zachodzi jedynie jako obrót wokół jednej z trzech osi (X,Y, Z), jest jednoznacznie opisywalna [108]. Należy rozważyć przejście pomiędzy trójwymiarową przestrzenią obserwowaną przez kamerę a dwuwymiarową powierzchnią obrazową, stanowiącą odwzorowanie tej przestrzeni w postaci rejestrowanego obrazu. Punkt przestrzeni trójwymiarowej P jest opisany w układzie (X,Y,Z) poprzez wektor:. []. X P= Y Z. Punkt w tych samych współrzędnych, po wykonaniu ruchu przez kamerę, ma współrzędne. []. X' P'= Y ' Z'. Współrzędne punktu P' po wykonaniu ruchu obrotowego przez kamerę (wektor translacji jest zerowy) określone są przez równanie 3-3:. P ' =Rγ R β Rα P. (3-3). gdzie macierze rotacji są równe odpowiednio:. [ [ [. Rα =. cos α 0 sin α. 0 −sin α 1 0 0 cos α. 1 0 Rβ= 0 cos β 0 −sin β cos γ Rγ = −sin γ 0. 0 sin β cos β. sin γ cos γ 0. 0 0 1. ] ] ]. (3-4). (3-5). (3-6). Przy założeniu, że kamera wykonuje obroty jedynie wokół osi X i Y, czyli Rγ=Ι , uwzględniając relacje 3-1 i 3-2, uzyskuje się wzory 3-7 i 3-8 na współrzędne ekranowe (x',y') punktu o pierwotnych współrzędnych (x,y) po wykonaniu przez kamerę obrotu wokół osi OX oraz OY:. x '=x cos α − f sin α. (3-7). y ' =x sin α sin β + y cos β + f cos α sin β. (3-8). A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(26) 23 Ogniskowa f oraz wartości x i y mogą być wyrażone w takich jednostkach, w których obraz jest rejestrowany przez kamerę. Przykładowo, jeżeli pojedynczy piksel ma fizycznie rozmiar 10μm, a ogniskowa kamery wynosi 16mm, to można stwierdzić, że f wynosi 1600 szerokości piksela. W efekcie wszystkie wymiary można wyrażać w szerokości piksela, co jest wygodne obliczeniowo.. 3.3 Wybrane algorytmy przetwarzania i analizy obrazu 3.3.1 Konwolucja Konwolucja [106] jest operacją przetwarzającą obraz, która zawiera się w grupie operacji kontekstowych. Oznacza to, że do wygenerowania wyniku dla danego piksela potrzebuje informacji o innych pikselach go otaczających. Z matematycznego punktu widzenia konwolucję należy rozpatrywać jako splot funkcji. Ogólnie definiuje się ją wzorem 3-9: ∞. g ( x)=( f ×h)( x)= ∫ f ( x−t) h(t) dt. (3-9). −∞. gdzie f i h to splatane funkcje, dające w wyniku funkcję g. Obrazy cyfrowe ze swej natury mają charakter dyskretny, zarówno ze względu na dziedzinę, jak i wartości. Wobec tego konwolucję dla obrazu cyfrowego P(x,y) z maską W(i,j) (rysunek 3-6) przedstawia się w postaci dyskretnej wzorem 3-10:. P ' (x , y )=(w×P)( x , y)=. ∑. 1 ∑ P (x−i , y− j)w (i , j) w(i , j) i , j ∈W. (3-10). i , j ∈W. gdzie w(i,j) oznacza wartości maski W.. Rysunek 3-6: Idea konwolucji 3x3 We wzorze tym założono ponadto warunek normalizacji, dzięki któremu, jeżeli współczynniki W(i,j) są wartościami całkowitymi nieujemnymi o tym samym zbiorze wartości co obraz P(x,y), to również obraz wyjściowy P'(x,y) będzie posiadał ten sam zakres wartości. Widać, że w przypadku obrazów cyfrowych konwolucja polega na wyliczeniu każdego z pikseli obrazu wynikowego. przez. wykonanie. operacji. mnożenia,. dodawania. i. dzielenia. zgodnie. z wzorem 3-11. Oznacza to duży nakład obliczeniowy, rosnący wraz ze wzrostem rozmiaru okna. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(27) 24 9. ∑ W i Pi. P= i=09. (3-11). ∑Wi i=0. Kontekstowość operacji powoduje, że nie jest możliwe wyliczenie wartości pikseli znajdujących się na granicy obrazu, dla których nie istnieje pełen kontekst. Jest to pewne ograniczenie, które efektywnie zmniejsza wynikowy obraz o pewien margines zależny od wielkości kontekstu. Znacznego zniekształcenia obrazu w obszarze brzegowym można uniknąć poprzez zastosowanie modyfikacji algorytmu dla pikseli brzegowych. Operacje konwolucji mogą w istotny sposób wpływać na zawartość wynikowego obrazu, pozwalając dzięki temu realizować szereg funkcji mających na celu usunięcie pewnych niepożądanych efektów z obrazu albo uwypuklenie takich jego cech, które nie są normalnie widoczne. Stąd też konwolucję stosować można do różnych rodzajów filtracji, takich jak filtry dolnoprzepustowe lub górnoprzepustowe.. 3.3.2 Filtracje konwolucyjne Filtracja wykonywana jest jako konwolucja, opisana w rozdziale 3.3.1, z odpowiednią maską. Można wyróżnić szereg masek filtrów dolnoprzepustowych, które w przypadku obrazu usuwają z niego składowe wysokoczęstotliwościowe widoczne jako nagłe zmiany jasności. Przykładową maską jest maska filtru Gaussa przedstawiona na rysunku 3-7. 2. 4. 5. 4. 2. 4. 9 12 9. 4. 5 12 15 12 5 4. 9 12 9. 4. 2. 4. 2. 5. 4. Rysunek 3-7: Maska dla filtru Gaussa Zastosowanie maski Gaussa w konwolucji 5x5 powoduje usunięcie zakłóceń poprzez silne rozmycie obrazu, co w wielu zadaniach przetwarzania obrazów ma korzystny wpływ na dalsze operacje. Następuje bowiem usunięcie drobnych szczegółów obrazu często nieistotnych z punktu widzenia wielu zadań przetwarzania i analizy obrazów. Z drugiej strony może jednak doprowadzić do utraty wyrazistości krawędzi na obrazie, co w zadaniach analizy może być efektem bardzo niepożądanym. Filtry górnoprzepustowe zwane są gradientami. Filtry tego typu mogą służyć do wydobywania z obrazu fragmentów charakteryzujących się szybkimi zmianami jasności, A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(28) 25 czyli takich elementów jak na przykład krawędzie czy narożniki, ale również drobne elementy faktury. Wśród przykładowych filtrów można wymienić wybrane gradienty Robertsa (rysunek 3-8), Prewitta (rysunek 3-9), Sobela (rysunek 3-10) - jako filtry wykrywające krawędzie o określonej orientacji, filtr wykrywający narożniki (rysunek 3-11), a także tak zwane laplasjany, którego jeden z przykładów przedstawiono na rysunku 3-12.. 0. 0. 0. -1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. -1. 0. 1. 0. Rysunek 3-8: Przykładowe maski gradientów Robertsa -1. -1. -1. 0. 0. 0. 1. 1. 1. -1. 0. 1. -1. 0. 1. -1. 0. 1. Rysunek 3-9: Maski gradientów Prewitta (pozioma i pionowa) -1. -2. -1. 0. 0. 0. 1. 2. 1. -1. 0. 1. -2. 0. 2. -1. 0. 1. Rysunek 3-10: Maski gradientów Sobela (pozioma i pionowa) 1. 1. 1. -1. -2. 1. -1. -1. 1. Rysunek 3-11: Przykład filtru wykrywającego narożnik. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(29) 26 0. -1. 0. -1. 4. -1. 0. -1. 0. Rysunek 3-12: Maska laplasjanu Warto tutaj przy okazji zauważyć, że wynik wygenerowany poprzez splot dyskretny ze współczynnikami maski mogącymi przyjmować wartości ujemne również może posiadać wartości ujemne. W przypadku obrazu oznacza to konieczność dokonania normalizacji związanej z przesunięciem wartości zerowej tak, aby najmniejsza wartość ujemna po normalizacji przyjęła wartość nieujemną. Można również zastosować prezentację wartości bezwzględnej z wyliczonych liczb. Niekiedy stosuje się alternatywnie rozszerzenie zakresu reprezentacji zapisu liczb opisujących piksele. Inne metody polegają na przeskalowaniu lub ograniczeniu zakresu (obcięciu).. 3.3.3 Detekcja krawędzi Algorytm detekcji krawędzi metodą Canny [18] można przedstawić w postaci uszeregowanego schematu blokowego (rysunek 3-13) [140]. Za jego pomocą możliwe jest wykrycie z dużą skutecznością krawędzi na obrazie.. directional non-maximum konwolucja filtrem Gaussa. gradient poziomy i pionowy. „non maximum suppression”. moduł i faza. binaryzacja z histerezą. Rysunek 3-13: Schemat blokowy algorytmu Canny Pierwszym etapem algorytmu wykrywania krawędzi jest dolnoprzepustowa filtracja obrazu. Krok ten jest zazwyczaj wykonywany zaraz po odczycie obrazu z kamery w celu eliminacji zakłóceń wnoszonych głównie przez szumy matrycy. Etap filtracji przy wykrywaniu krawędzi jest bardzo istotny, gdyż ma za zadanie usunięcie szumów z obrazu przez nieznaczne rozmycie, co zachowuje informację o krawędziach przy jednoczesnym pozbyciu się z obrazu drobnych,. aczkolwiek. kontrastowych. szczegółów.. W. reprezentowanego cyfrowo, z natury dyskretnego, zamiast. zastosowaniu. do. obrazu. ciągłego wyrażenia na rozkład. Gaussa, stosuje się konwolucję 5x5 z maską Gaussa wg rysunku 3-7.. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(30) 27 Kolejny krok algorytmu to wyliczenie poziomych i pionowych pochodnych kierunkowych. Idea liczenia gradientu polega na wykryciu szybkich zmian jasności obrazu. Dla przykładu, pierwsza pochodna dla dwóch przejść tonalnych jest przedstawiona na rysunku 3-14.. Rysunek 3-14: Pochodne na obrazie krawędzi Realizacja tego etapu oznacza policzenie dla obrazu wejściowego pochodnych kierunkowych poziomych i pionowych jako dwóch konwolucji z maskami 3x3 (rysunek 3-15).. 0. 0. 0. -1. 0. 1. 0. 0. 0. 0. -1. 0. 0. 0. 0. 0. 1. 0. Rysunek 3-15: Maski do obliczania pochodnych kierunkowych Po wyliczeniu obu gradientów obraz poddawany jest operacji directional non-maximum. Zadaniem etapu jest uzyskanie jednego obrazu krawędzi, na podstawie wyliczonych w poprzednim kroku dwóch pochodnych kierunkowych. Ponadto krawędzie zostaną wyostrzone, poprzez operacje porównywania wartości sąsiednich pikseli. Wykorzystując dane o pochodnych kierunkowych liczy się moduł oraz fazę, przy czym dokładny wzór na moduł w postaci (3-12). ∣G∣=√ ( dx 2+dy 2 ). (3-12). ∣G∣=∣dx∣+∣dy∣. (3-13). zamienia się często na (3-13):. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(31) 28 Fazę można obliczyć na podstawie wzoru:. θ =arctan (. dy ) dx. (3-14). Jednak ze względu na złożoność obliczenia operacji arctan stosuje się szacowanie na podstawie wartości pochodnych dx i dy, co pokazuje tzw. koło gradientowe (rysunek 3-16).. Rysunek 3-16: Koło gradientowe Poprzez porównywanie znaków pochodnych dx i dy oraz ich wartości określamy, w którym przedziale kątów leży szukany kąt Θ. Uzyskiwana w ten sposób dokładność oszacowania kąta jest wystarczająca dla obliczeń na obrazie. W trakcie tego samego etapu dokonywany jest proces wyostrzania krawędzi (ang. thinning). Zakłada się, że teoretyczna krawędź przebiega tak, jak zaznaczono to na rysunku 3-17.. Rysunek 3-17: Przebieg krawędzi Wartości pikseli oblicza się według uproszczonych wzorów na moduł:. P x , y =∣dx x , y∣+∣dy x , y∣. (3-15). Ponieważ wartości pikseli dla teoretycznej linii krawędzi wyrażone są przez wzory:. P a=. P x+1, y−1+P x+1, y 2. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu. (3-16).

(32) 29 gdzie:. P x+1, y−1=∣dx x+1, y−1∣+∣dy x+1, y−1∣. (3-17). P x+1, y =∣dx x+1, y∣+∣dy x+1, y∣. (3-18). oraz. P b=. P x−1, y + P x−1, y+1 2. (3-19). gdzie:. P x−1, y+1=∣dx x−1, y+1∣+∣dy x−1, y+1∣. (3-20). P x , y+1=∣dx x , y+1∣+∣dy x , y+1∣. (3-21). to dokonując odpowiednich porównań stwierdzamy, który piksel obrazu dyskretnego zostanie zaliczony jako należący do krawędzi, a który zostanie wyeliminowany. Jeżeli spełnione są warunki:. P x , y >P a. (3-22). P x , y >P b. (3-23). oraz. to piksel traktowany jest jako krawędziowy; w przeciwnym przypadku jest eliminowany.. 3.3.4 Binaryzacja Binaryzacja polega na zamianie obrazu wieloodcieniowego na obraz binarny, w którym każdy piksel może przyjąć jedynie dwie wartości, najczęściej 0 i 1. Przekształcenie to jest bardzo często wykorzystywane w aplikacjach przetwarzania i analizy obrazów, gdyż duża gama operacji może być wykonywana tylko na obrazach binarnych. Ponadto analiza obrazu jest znacznie ułatwiona, gdy informacje zawarte w obrazie wieloodcieniowym zostały wykorzystane we wcześniejszych etapach, a do wyciągania końcowych wniosków wykorzystywany jest obraz binarny. Obliczeniowo binaryzacja polega na przypisaniu pikselowi wartości 1, jeżeli jego wartość. na. obrazie. wejściowym. jest. większa. lub. równa. od. ustalonego. progu,. a wartości 0, gdy jest mniejsza. Możliwy jest też przypadek odwrotny. Są to tak zwane binaryzacje z progiem górnym i dolnym. Możliwe są też binaryzacje dwuprogowe, w których wartości 1 (ewentualnie 0) przyjmują tylko te piksele, których wartości na obrazie wejściowym mieszczą się w ustalonym przedziale. Stosuje się również binaryzację z histerezą, gdzie wartość piksela zostanie A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

(33) 30 zakwalifikowana jako 1 po przekroczeniu wyższego z dwóch progów, ale powrót do wartości 0 nastąpi, jeżeli jasność piksela spadnie poniżej progu niższego. Oznacza to, że wymagane jest sprawdzenie jasności pikseli sąsiednich. Istnieją też inne odmiany binaryzacji, jak na przykład wielokryterialna, hybrydowa lub lokalna. Zawsze celem binaryzacji jest takie stworzenie obrazu binarnego, aby wydobyć interesujące cechy obrazu bez utraty istotnych z punktu widzenia dalszych operacji informacji. Może okazać się w wielu aplikacjach skuteczną metodą służącą segmentacji obiektów. W przypadku algorytmu detekcji krawędzi Canny binaryzacja służy do stworzenia binarnego obrazu krawędzi. Poprzez dobór progu (lub progów w przypadku binaryzacji z histerezą) określa się czułość detekcji. Przy niskim progu możliwe jest pozostawienie na obrazie binarnym wielu, nawet mało wyrazistych krawędzi, ale często z obecnością szumów. Z kolei zbyt wysoki próg zachowa jedynie niektóre, najbardziej wyraźne krawędzie. Optymalny próg powinien zatem wyeksponować maksymalną wymaganą w danej aplikacji szczegółowość obrazu krawędziowego, przy jednoczesnym niskim poziomie zakłóceń.. 3.4 Algorytmy detekcji krawędzi Canny w FPGA Algorytm detekcji krawędzi Canny został opisany w szczegółach w rozdziale 3.3.3. W największym skrócie składa się on z kilku elementarnych kroków: –. filtracja wstępna Gaussa usuwająca zakłócenia wysokoczęstotliwościowe z obrazu,. –. wyliczenie poziomych i pionowych pochodnych kierunkowych,. –. wyliczenie dla każdego piksela modułu gradientu oraz kąta hipotetycznej krawędzi,. –. pocienienie krawędzi, tzw. etap non-maximum supression,. –. binaryzacja z histerezą.. Należy zauważyć, że realizacja algorytmu na mikroprocesorze oznacza wykonanie kolejno każdego z powyższych etapów. Powoduje to, że dla obrazów w wyższych rozdzielczościach wykrywanie krawędzi nie będzie odbywać się w czasie rzeczywistym. Cecha algorytmu, którą jest możliwość potokowego przetwarzania kolejnych pikseli, sprawia jednak, że możliwe jest zaimplementowanie algorytmu Canny w układzie FPGA. Dzięki temu możliwe jest generowanie pikseli obrazu krawędzi z taką samą częstotliwością, z jaką napływają piksele obrazu wejściowego. Jedyną niedogodnością jest występowanie opóźnienia (ang. latency), czyli przesunięcia czasowego pomiędzy podaniem na wejście pierwszego piksela a wygenerowaniem pierwszego piksela krawędziowego. Opóźnienie to wynosi zazwyczaj kilka linii obrazu.. A.Zawadzki Rekonfigurowalny sterownik urządzenia ruchomego oparty na sprzężeniu wizyjnym wykorzystującym algorytm śledzenia obiektu.

Cytaty

Powiązane dokumenty

Uczestnicy przedsięwzięcia – dzieci, młodzież i ich ro- dzice i opiekunowie – będą mogli wziąć udział w krót- kich wykładach, warsztatach praktycznych, zajęciach

Ufam, że wyniki naszych badań choć w niewielkim stopniu przyczynią się do poznania wspaniałego daru języka, który dany jest człowiekowi i wspólnocie dla realizacji

Dysfunctions of the mitochondrial proteins lead to the mitochondrial diseases, which can be caused by muta- tions in mtDNA as well as in the nuclear genes.. Clinical features of

Obawy przed marginalizacją języka, jak i próby wyjaśniania, że będzie on jednym z języków urzędowych w Unii, to najczęściej pojawiające się tematy, które można odnaleźć

Only those countries whose average were significantly lower than the OECD average (Kazakhstan, Turkey, Qatar and the United Arab Emir- ates) showed a higher rate of change then

The aim of this research was to examine how critical thinking at junior high school level can be developed using the Internet as a source of information.. A group of second

Zgodnie z nimi Sarmata to ‘polski szlachcic wywodzący swe pochodzenie od starożytnych plemion, przy- wiązany do dawnych obyczajów’ [WSJP: 741], także ‘Polak starej

Developing the connection between mathematics and ecology becomes possible with the help of mathematical models that are used to solve biological problems. Showing examples