• Nie Znaleziono Wyników

Implementacja operacji przetwarzania obrazu w układach FPGA

W dokumencie Index of /rozprawy2/10579 (Stron 46-50)

4. Implementacja zaawansowanych metod przetwarzania obrazów w układach FPGA na

4.1. Implementacja operacji przetwarzania obrazu w układach FPGA

LUT (ang. look-up table). W ten sposób wykonywane s ˛a operacje takie jak: korekcja gamma, poprawa kontrastu, a tak˙ze po´srednio wyrównywanie histogramu.

Obszern ˛a grup˛e przekształce´n obrazu stanowi ˛a przekształcenia kontekstowe, czyli takie, w których nowa warto´s´c piksela obliczana jest na podstawie warto´sci pocz ˛atkowej piksla i jego kontekstu prze-strzennego (otoczenia, s ˛asiadów). Zalicza si˛e do nich filtracje liniowe realizowane poprzez dwuwymia-rowy splot (konwolucj˛e) fragmentu obrazu z mask ˛a. Do najcz˛e´sciej u˙zywanych nale˙z ˛a: filtracja z mask ˛a Gaussa, inne filtracje u´sredniaj ˛ace (dolnoprzepustowe), a tak˙ze filtry górnoprzepustowe: Sobela, Prwe-itta, Laplacea, Kirscha, Robertsa. Drug ˛a grup˛e stanowi ˛a filtry nieliniowe, w których nowa warto´s´c piksela wyznaczana jest przykładowo jako mediana, maksimum lub minimum z otoczenia. Przy przekształce-niach kontekstowych konieczna jest obsługa pikseli, dla których nie da si˛e okre´sli´c wszystkich s ˛asiadów (tzw. piksele kraw˛edziowe). Mo˙zliwe jest pomini˛ecie przetwarzania tych pikseli, uznanie, ˙ze brakuj ˛ace piksele maj ˛a stał ˛a warto´s´c (np. 0, 255, 128), powielenie pikseli brzegowych lub tzw. zawini˛ecie linii obrazu, czyli przykładowo uzupełnienie prawego brzegu obrazu pikselami z lewej jego strony. W prak-tycznych zastosowaniach zwykle wykorzystuje si˛e najprostsze podej´scie, poniewa˙z pomini˛ecie filtracji kilku linii pionowych i poziomych obrazu (zwykle dwóch dla maski o rozmiarze 5), ma nieznaczny wpływ na dalsze etapy analizy.

W przekształceniach widmowych obraz z dziedziny przestrzennej jest przekształcany do dziedziny cz˛estotliwo´sci, przykładowo za pomoc ˛a transformaty Fouriera. Otrzymany tzw. F-obraz poddawany jest dalszym przekształceniom, w szczególno´sci filtracji dolnoprzepustowej, pasmowo-przepustowej i górno-przepustowej. W tym podej´sciu mo˙zliwy jest bardziej precyzyjny dobór parametrów filtru, ni˙z w przy-padku filtracji liniowej w dziedzinie przestrzennej. Omówione powy˙zej filtracje liniowe mog ˛a by´c po-traktowane jako szczególny sposób filtracji cz˛estotliwo´sciowej.

Operacje morfologiczne s ˛a jednym z podstawowych narz˛edzi stosowanych w przetwarzaniu ko´n-cowym oraz uproszczonej analizie kształtu. W´sród dost˛epnych metod warto wskaza´c erozj˛e, dylatacj˛e, otwarcie, zamkni˛ecie, a tak˙ze ´scienianie, szkieletyzacj˛e, wyznaczanie centroidów, rekonstrukcj˛e mor-fologiczn ˛a oraz zalewanie otworów. Szersze omówienie wspominanych powy˙zej zagadnie´n odnale´z´c mo˙zna w ksi ˛a˙zkach [170], [47] oraz [48].

W niniejszym rozdziale przedstawiono implementacj˛e sprz˛etow ˛a algorytmu filtracji PGF (ang. Peer Group Filtering). Algorytm ten zaliczy´c nale˙zy do operacji kontekstowych. Stanowi on tak˙ze poł ˛aczenie idei filtracji liniowej (Gaussa) i nieliniowej.

4.1. Implementacja operacji przetwarzania obrazu w układach FPGA

Pierwsze badania dotycz ˛ace mo˙zliwo´sci wykorzystania układów FPGA do realizacji operacji prze-twarzania obrazów realizowano w pocz ˛atkach lat 90-tych XX wieku. W´sród operacji, które zostały zaimplementowane jako pierwsze nale˙zy wymieni´c: operacj˛e LUT (ang. look-up table), binaryzacj˛e, wyliczanie histogramu, korekcj˛e tła, filtracj˛e medianow ˛a oraz filtracj˛e splotow ˛a (np. z mask ˛a Gaussa, Sobela). Obszerne omówienie tych zagadnie´n odnale´z´c mo˙zna w pracach [49] i [181]. Do czasu wpro-wadzenia układów FPGA nowej generacji (np. serii Virtex firmy Xilinx, serii Stratix firmy Altera), głów-nym ograniczeniem przy implementacji operacji przetwarzania obrazów była konieczno´s´c korzystania

4.1. Implementacja operacji przetwarzania obrazu w układach FPGA 43

z zewn˛etrznych zasobów pami˛eci do realizacji linii opó´zniaj ˛acych. Nowe układy wyposa˙zone zostały w dwuportow ˛a pami˛e´c blokow ˛a Block RAM, która umo˙zliwiała tworzenie linii opó´zniaj ˛acych wewn ˛atrz układu rekonfiguralnego, a tak˙ze w wi˛eksz ˛a liczb˛e elementów logicznych. Zaowocowało to implemen-tacj ˛a bardziej zło˙zonych algorytmów, w´sród których warto wymieni´c: algorytmy sterowizyjne, operacje morfologczine, a ponadto operacje analizy obrazu takie jak: transformata Hougha, detekcja obiektów, dopasowywanie i poszukiwanie wzorców, ´sledzenie obiektów, odtwarzanie obrazu (ang. image restora-tion), algorytm SAD, wyliczanie przepływu optycznego (ang. optical flow). Szczegóły, a tak˙ze obszern ˛a baz˛e artykułów odnale´z´c mo˙zna w pracach [49] i [181].

Osobno warto omówi´c zastosowanie układów FPGA do kompresji i dekompresji strumienia wideo. Zagadnienie to jest cały czas aktualne, z uwagi na dynamiczny rozwój urz ˛adze´n do akwizycji (np. kolo-rowych kamer wysokiej rozdzielczo´sci) i do wy´swietlania obrazu (monitorów i telewizorów). Obecnie standardem staje si˛e obraz telewizyjny o rozdzielczo´sci 1920 × 1080 pikseli przy 50 lub 60 ramkach na sekund˛e tj. w formacie HD (ang. high definition), a w przyszło´sci planowane jest wprowadzenie stan-dardu UHDTV (ang. ultra high definition television), którego rozdzielczo´s´c wynosi 7680 × 4320 pikseli i dopuszcza cz˛estotliwo´sci do 120 klatek na sekund˛e. W´sród ciekawych prac nale˙zy wskaza´c implemen-tacj˛e: kompresji fraktalnej [37], transformaty kosinusowej [25], transformaty falkowej [132], standardów MPEG-2 [69] i MPEG-4 [28], H.246/AVC [111] oraz DV [51].

Z uwagi na bardzo du˙z ˛a liczb˛e publikacji dotycz ˛acych dziedziny przetwarzania obrazów realizo-wanego w układach FPGA, zdecydowano si˛e zaw˛ezi´c szczegółow ˛a analiz˛e do zagadnienia sprz˛etowej implementacji kontekstowej filtracji obrazów, gdy˙z analizowany algorytm PGF nale˙zy do tej kategorii.

W pracy [22] przedstawiono metod˛e filtracji obrazów kolorowych, której działanie zbli˙zone jest do filtru VMF (ang. Vector Median Filtering). W realizacji filtracji medianowej dla obrazów kolorowych mo˙zliwe s ˛a dwa podej´scia:

– filtracja medianowa ka˙zdej ze składowych niezale˙znie, xSmedian = argminxS∈{xS i}( N X i=1 |xS− xS i|) (4.1)

gdzie: xS — składowa S (np. S ∈ {R, G, B}) piksela z otoczenia, N — liczba pikseli w otocze-niu.

– wprowadzenie miary odległo´sci pomi˛edzy pikselami (VMF) XVM = argminX∈{Xi}(

N

X

i=1

kX − Xik) (4.2) gdzie: X — piksel w wybranej przestrzeni barw (np. {R,G,B}), N — liczba pikseli w otoczeniu, kk — miara odległo´sci pomi˛edzy dwoma pikselami.

Pierwsze rozwi ˛azanie mo˙ze doprowadzi´c do powstania zakłóce´n na obrazie wynikowym, z uwagi na potencjalne wprowadzanie pikseli o kombinacji składowych barwnych, która nie wyst˛epowała na obrazie wej´sciowym. Podej´scie VMF nie posiada wymienionej wady, ale jest bardziej zło˙zone oblicze-niowo, szczególnie ˙ze oprócz typowej miary euklidesowej mo˙zliwe jest równie˙z wykorzystanie innych

T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych

4.1. Implementacja operacji przetwarzania obrazu w układach FPGA 44

miar opartych np. o obliczanie k ˛ata pomi˛edzy wektorami [105]. Maj ˛ac to na uwadze autorzy zastoso-wali rozwi ˛azanie, polegaj ˛ace na przekształceniu wektora trzech składowych {R, G, B} w jeden wektor zintegrowany. Post˛epowanie zostało schematycznie przedstawione na rysunku 4.2.

R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0 R7 G7 B7 R6 G6 B6 R0 G0 B0

Rysunek 4.2: Schemat przekształcenia wektora {R,G,B} w wektor zintegrowany

Dla nowego wektora wyliczana jest mediana, a rezultat przekształcany jest z powrotem na wektor wynikowy {R’, G’, B’}. Zdaniem autorów, podej´scie to zapewnia podobne rezultaty jak standardowy filtr VMF, a nie wymaga zło˙zonych oblicze´n. Zaproponowany algorytm został zaimplementowany w ukła-dzieFPGA serii XC4004 firmy Xilinx.

W artykule [38] opisano implementacj˛e filtru medianowego oraz wa˙zonego filtru medianowego w układzie FPGA dla obrazów w skali szaro´sci. W odró˙znieniu od najcz˛e´sciej spotykanego rozwi ˛azania, polegaj ˛acego na posortowaniu otoczenia piksela celem wyznaczenia warto´sci ´srodkowej, autorzy wyko-rzystali podej´scie oparte o histogram skumulowany. Obie wersje mediany opisano w j˛ezyku Handel-C (por. rozdział 2.2) oraz VHDL. Dokonano przy tym interesuj ˛acej obserwacji. Moduł opisany w j˛ezyku HDL zu˙zywał o połow˛e mniej zasobów i mógł pracowa´c z ponad dwa razy wi˛eksz ˛a cz˛estotliwo´sci ˛a, ni˙z moduł opisany w j˛ezyku wysokiego poziomu. Autorzy stwierdzili równie˙z, ˙ze dla okna zawieraj ˛ a-cego wi˛ecej ni˙z 51 próbek, wykorzystana przez nich metoda zu˙zywa mniej zasobów logicznych, ni˙z typowe podej´scie oparte o sie´c sortuj ˛ac ˛a. Warto tak˙ze zauwa˙zy´c, ˙ze tego typu podej´scie charakteryzuje si˛e wzgl˛ednie stałym u˙zyciem zasobów, gdy˙z logika obliczeniowa jest praktycznie niezale˙zna od roz-miaru okna dla którego wyliczana jest mediana.

W artykule [79] zaprezentowano potokow ˛a implementacj˛e filtru trilateralnego (ang. trilateral) [42] dla obrazu w odcieniach szaro´sci. Filtr ten umo˙zliwia usuni˛ecie zarówno szumu Gaussowskiego, jak i impulsowego. W trakcie filtracji, ka˙zdy piksel zast˛epowany jest ´sredni ˛a wa˙zon ˛a z pikseli z otoczenia o rozmiarze W . Waga piksela xj w odniesieniu do piksela centralnego xcdana jest zale˙zno´sciami:

ω(xc, xj) = ωS(xc, xjR(xc, xj)1−J (xc,xj)ωI(xc, xj)J (xc,xj) (4.3) ωS(xc, xj) = e 1 2(kxs−xj kσS )2 (4.4) ωR(xc, xj) = e 1 2(kI(xs)−I(xj )k σR ) 2 (4.5)

4.1. Implementacja operacji przetwarzania obrazu w układach FPGA 45 ωI(xc) = e −ROADm(xc)2 2σ2 I (4.6) J (xc, xj) = 1 − e  −1 8 ROADm(xc)+ROADm(xj ) σJ 2 (4.7) gdzie: σS, σR, σI, σJ — odpowiednio dobrane parametry, I — odpowiednio zdefiniowana warto´s´c ja-sno´sci lub koloru (zale˙zna od rozpatrywanej przestrzeni barw), ROAD — uporz ˛adkowanie oparte na rangach bezwzgl˛ednych ró˙znic (ang. Rank Order Absolute Difference), zdefiniowane jako:

ROADm(xj) =

k

X

i=1

ri(xj) (4.8) gdzie: ri(xj) jest najmniejsz ˛a i-t ˛a odległo´sci ˛a wszystkich pikseli w oknie do piksela xj, m — liczba najmniejszych odległo´sci wchodz ˛acych w skład parametru ROAD (m = 4).

W omawianym artykule, na szczególn ˛a uwag˛e zasługuje sposób implementacji operacji ROAD, sta-nowi ˛acej podstaw˛e usuwania zakłóce´n impulsowych. Wykorzystywane parametry σS, σR, σI, σJ usta-lono jako stałe (dobór na podstawie testów z innej publikacji), co pozwoliło znacznie upro´sci´c obliczenia. Zaproponowany moduł został zrealizowany i przetestowany na karcie z układem Virtex II firmy Xilinx. Osi ˛agni˛eto cz˛estotliwo´s´c pracy 96,5 MHz, co pozwala przetworzy´c 4 megapiksele na sekund˛e.

W pracy [41] przedstawiono implementacj˛e filtru bilteralnego (ang. bilateral) [174] dla obrazu w od-cieniach szaro´sci, który jednocze´snie pozwala na redukcj˛e zakłóce´n i zachowywanie kraw˛edzi. Filtr bi-lateralny jest zło˙zeniem klasycznego filtru dolnoprzepustowego i operacji nielinowej, odpowiedzialnej za zachowanie ostro´sci. Wymaga on znacznego nakładu oblicze´n: wyznaczania odległo´sci euklideso-wej, podnoszenia do kwadratu oraz operacji ex. Podstaw ˛a zaproponowanego rozwi ˛azania jest podział wej´sciowych pikseli na 6 grup oraz czterokrotne zwi˛ekszenie cz˛estotliwo´sci zegara przy wykonywaniu oblicze´n. Zabieg ten pozwala na zachowanie potokowo´sci przetwarzania, przy jednoczesnym ogranicze-niu zu˙zycia zasobów logicznych. Zło˙zone obliczeniowo wyznaczanie wagi piksela zostało zast ˛apione operacj ˛a LUT, a filtracja dwuwymiarowa rozdzielona na dwie filtracje jednowymiarowe. Moduł został zaimplementowany i przetestowany na karcie z układem FPGA serii Virtex 5. Uzyskano przetwarzanie obrazu o rozdzielczo´sci 1024 × 1024 przy 30 ramkach na sekund˛e w czasie rzeczywistym.

W artylule [15] zaprezentowano sprz˛etow ˛a implementacj˛e algorytmu vector directional distance fil-ter VDDF [82] w układzie FPGA. Podstaw ˛a tej filtracji s ˛a dwie wielko´sci: odległo´s´c i k ˛at pomi˛edzy dwoma wektorami w przestrzeni barw RGB. Nowa warto´s´c piksela wyliczana jest na podstawie minima-lizacji iloczynu opisanych wielko´sci. Autorzy pracy zaproponowali szereg uproszcze´n np. realizacj˛e ope-racji pierwiastkowania jako LUT oraz zast ˛apienie obliczania funkcji arccos jej rozwini˛eciem w szereg Taylora. Moduł został zaimplementowany na płycie z układem FPGA Stratix II firmy Altera. Uzyskano maksymaln ˛a cz˛estotliwo´s´c pracy 110 MHz i przetwarzanie jednej klatki obrazu w 48 ms (w artykule brak informacji o rozdzielczo´sci).

W artykule [55] przedstawiono algorytm adaptacyjnej filtracji obrazu kolorowego w przestrzeni barw HSV (ang. Hue Saturation Value — barwa, nasycenie, warto´s´c (jasno´s´c)). Najbardziej powszechn ˛a ´sred-ni ˛a arytmetyczn ˛a, zast ˛apiono ´sredni ˛a geometryczn ˛a, gdy˙z zdaniem autorów pozwala ona osi ˛agn ˛a´c

po-T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych

W dokumencie Index of /rozprawy2/10579 (Stron 46-50)