7. Implementacja sprz˛etowa algorytmów wykorzystywanych w zaawansowanych syste-
7.3. Detekcja sabota˙zu kamery
7.3.2. Zaproponowana metoda detekcji sabota˙zu kamery
Na podstawie analizy opisanych w literaturze metod wykrywania sabota˙zu z kamery zaimplemen-towano w j˛ezyku C++ z wykorzystaniem biblioteki OpenCV [129] własn ˛a metod˛e, która jednocze´snie stanowiła model referencyjny dla wersji sprz˛etowej. Była ona najbardziej zbli˙zona do opisanej w pracy [152], jednak ró˙zniła si˛e w kilku szczegółach oraz została przystosowana do realizacji w układzie FPGA.
Bezpo´srednio do wykrywania sabota˙zu wykorzystano trzy mechanizmy: – porównywanie histogramów modeli tła krótko- i długoterminowego, – porównywanie kraw˛edzi aktualnej ramki i modelu tła krótkoterminowego, – analiz˛e ´sredniej jasno´sci sceny.
Podstaw ˛a działania metody były dwa modele tła w odcieniach szaro´sci: krótko- i długoterminowe oraz mechanizm odejmowania dwóch s ˛asiednich ramek. Do generacji modelu tła zastosowano algorytm ´sredniej ruchomej [186]. Szerszy opis zagadnienia mo˙zna odnale´z´c w rozdziale 6.5.3 niniejszej rozprawy. Warunkiem selektywnej aktualizacji modelu tła był brak ruchu, przy czym maska ruchu wyznaczana była na podstawie zbinaryzowanej ró˙znicy dwóch kolejnych ramek. Model krótkoterminowy aktualizowany był na podstawie bie˙z ˛acej ramki, a model długoterminowy na podstawie modelu krótkoterminowego.
Na wst˛epie przyj˛eto zało˙zenie, ˙ze obszary sceny na których wykryty jest ruch maj ˛a by´c wykluczone z analizy. W tym celu wykorzystano obraz historii ruchu MHI (ang. Motion History Image). Był on
7.3. Detekcja sabota˙zu kamery 135
tworzony na podstawie maski obiektów, otrzymanej z binaryzacji obrazu ró˙znicowego bie˙z ˛acej ramki i tła krótkoterminowego. Aktualizacja MHI odbywała si˛e z wykorzystaniem zale˙zno´sci:
M HI(x, y) = (
M HI(x, y) + a je´sli LC
M HI(x, y) − b w p.p. (7.13) LC = ∆BGQ ≥ thBackground ∧; ∆F ≥ thM ovement (7.14) gdzie: M HI(x, y) — obraz historii ruchu dla danej lokalizacji, a i b — parametry aktualizacji MHI, ∆BGQ — moduł z ró˙znicy aktualnej ramki i tła krótkoterminowego, thBackground — próg binaryza-cji odejmowania tła, ∆F — moduł z ró˙znicy dwóch kolejnych ramek, thM ovement — próg binaryzabinaryza-cji obrazu ró˙znicowego.
Nast˛epnie za piksele nieruchome (stacjonarne) uznawane były takie, dla których warto´s´c MHI nie przekraczała okre´slonego progu. Z uwagi na implementacj˛e sprz˛etow ˛a zakres MHI ograniczono do prze-działu [0; 255]. Przykładowy obraz historii ruchu zaprezentowano na rysunku 7.10.
a) b)
c) d)
Rysunek 7.10: Przykładowy obraz historii ruchu MHI. a) bie˙z ˛aca ramka, b) obraz MHI, c) obraz MHI po binaryzacji, d) zbinaryzowana ró˙znica pomi˛edzy dwoma kolejnymi ramkami
7.3.2.1. Porównywanie histogramów
W pierwszym etapie dla modelu tła krótko- i długoterminowego tworzone były histogramy o 32 prze-działach. Zliczane były tylko warto´sci pikseli uznanych za nieruchome. Z dalszej analizy wykluczono pierwszy i ostatni przedział histogramu, poniewa˙z nie wnosz ˛a one informacji o charakterystycznych ce-chach sceny. Nast˛epnie wyliczana była odległo´s´c mi˛edzy histogramami. W ramach bada´n wst˛epnych
T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych
7.3. Detekcja sabota˙zu kamery 136
przeanalizowano szereg sposobów wyznaczania takiego wska´znika: korelacyjny, chi-kwadrat, przeci˛e-cie, Bhattaharayya (wszystkie dost˛epne i opisane w bibliotece [129]) oraz uproszczon ˛a korelacj˛e opisan ˛a wzorem:
HD =
P31
i=2Ha(i) · Hb(i) q
P31
i = 2Ha(i)2·P31
i=2Hb(i)2
(7.15)
gdzie: Hai Hb— porównywane histogramy, zakres od i=2 do 31 oznacza pomini˛ecie pierwszego i ostat-niego przedziału.
Obliczone odległo´sci pomi˛edzy histogramami dla wybranego przykładu sabota˙zu (cz˛e´sciowe zasło-ni˛ecie kamery) zaprezentowano na rysunku 7.11. Wszystkie miary zostały znormalizowane do zakresu [0;1].
Rysunek 7.11: Porównanie metod obliczania odległo´sci pomi˛edzy histogramami w przypadku cz˛e´scio-wego przysłoni˛ecia obiektywu kamery
Ostatnia ze wskazanych odległo´sci, po nieznacznych modyfikacjach, których celem było unikni˛ecie konieczno´sci sprz˛etowej realizacji operacji dzielenia oraz pierwiastkowania, została przekształcona do postaci zastosowanej w implementacji FPGA:
HDF P GA= P31
i=2Ha(i) · Hb(i) ·P31
i=2Ha(i) · Hb(i) P31
i=2Ha(i)2·P31
7.3. Detekcja sabota˙zu kamery 137
W celu wykrycia zmiany na scenie miara poddawana była progowaniu, z progiem zale˙znym od sceny. Aby unikn ˛a´c operacji dzielenia, we wzorze (7.16) zastosowano nast˛epuj ˛ace przekształcenie:
HDF P GA= A
B < thHist => A < B · thHist (7.17) gdzie: A i B — odpowiednio dzielna i dzielnik z równania (7.16), thHist — próg detekcji.
Opisan ˛a metod˛e przetestowano na szeregu sekwencji wideo. Cz˛e´s´c z nich została przygotowana przez autora niniejszej rozprawy i p. Mateusza Komorkiewicza, cz˛e´s´c udost˛epniona w sieci Internet przez autorów pracy [152]. Zaproponowana metoda pozwalała poprawnie wykry´c sytuacje zakrycia obiektywu kamery (cz˛e´sciowego i całkowitego), jak równie˙z zmiany kadru (przykład zaprezentowano na rysunku 7.12). Modyfikacje ostro´sci nie były wykrywane, gdy˙z ten rodzaj sabota˙zu w bardzo nieznaczny sposób wpływa na histogram.
a) b)
a) a)
b)
b)
HDFPGA GRysunek 7.12: Przykład sabota˙zu polegaj ˛acego na zmianie kadru kamery
7.3.2.2. Porównywanie kraw˛edzi
Detekcj˛e kraw˛edzi zrealizowano z wykorzystaniem gradientu Sobela. Nast˛epnie wyliczano moduł z gradientu, jako sum˛e warto´sci bezwzgl˛ednych z ró˙znic, dla bie˙z ˛acej ramki i krótkoterminowego mo-delu tła. Analizie poddawano tylko kraw˛edzie le˙z ˛ace na stacjonarnych elementach sceny (okre´slanych z u˙zyciem obrazu MHI) i scharakteryzowane jako “mocne”, na podstawie progowania warto´sci ró˙znicy modułów bie˙z ˛acej ramki i krótkoterminowego modelu tła. Dla takich kraw˛edzi obliczana miara wyra˙zała si˛e wzorem:
G =X
x,y
abs(G(x, y)a− G(x, y)b) (7.18) gdzie: Ga— moduł gradientu dla bie˙z ˛acej ramki, Gb— moduł gradientu dla krótkoterminowego modelu tła.
Zaproponowana miara, zastosowana w sytuacji sabota˙zu polegaj ˛acego na zmianie ostro´sci obrazu, została zaprezentowana na rysunku 7.13.
T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych
7.3. Detekcja sabota˙zu kamery 138
G
Rysunek 7.13: Przykład analizy ostro´sci obrazu na podstawie kraw˛edzi
W przypadku, gdy warto´s´c miary jest ni˙zsza od zadanego progu, mo˙ze oznacza´c to utrat˛e ostro´sci przez kamer˛e. Próg dobierany był w sposób r˛eczny w zale˙zno´sci od kraw˛edzi wyst˛epuj ˛acych na scenie (dokładnie na “pustej” scenie tj. bez poruszaj ˛acych si˛e obiektów z pierwszego planu). Przeprowadzone eksperymenty pokazały, ˙ze metoda pozwala na poprawne wykrycie zmiany ostro´sci oraz nie generuje fałszywych alarmów. Ponadto okazało si˛e, ˙ze metoda stanowi dobre narz˛edzie do wykrywania sabota˙zu polegaj ˛acego na stopniowej zmianie kadru. Powolny ruch kamery skutkuje nieznacznie rozmazanym modelem tła i jest wykrywany jako utrata ostro´sci. Dodatkowo analiza ostro´sci pozwala wykry´c sabota˙z polegaj ˛acy na umieszczeniu przed kamer ˛a fotografii monitorowanej sceny. Moment “wsuni˛ecia” zdj˛ecia w kadr kamery powoduje chwilowe rozmazanie modelu tła, które jest wykrywane. Warto doda´c, ˙ze ten typ sabota˙zu, zrealizowany z u˙zyciem zwykłego aparatu cyfrowego i wydruku laserowego fotografii oraz niedokładnego dopasowania zdj˛ecia do kadru kamery, z du˙zym prawdopodobie´nstwem nie zostałby zauwa˙zony przez operatora systemu monitoringu (zakładaj ˛ac, ˙ze nie obserwował on dokładnie obrazu w chwili podmiany). Przykład takiego sabota˙zu zaprezentowano na rysunku 7.14.
7.3.2.3. Analiza ´sredniej jasno´sci
W celu wykrywania gwałtownych zmian o´swietlenia — rozja´snienia lub przyciemnienia analizowa-nego obrazu, obliczano ´sredni ˛a jasno´s´c sceny dla obszarów uznanych za stacjonarne. Warto´s´c ta nast˛ep-nie była filtrowana na zasadzie ´srednast˛ep-niej bie˙z ˛acej. W kolejnym kroku obliczona ´srednia porównywana była z warto´sci ˛a historyczn ˛a (obliczon ˛a K ramek wcze´sniej) zapami˛etan ˛a w buforze FIFO. Je˙zeli moduł
7.3. Detekcja sabota˙zu kamery 139
a) b) c)
d) e)
a) b) c) a) b) c)
HDFPGA G
Rysunek 7.14: Przykład sabota˙zu polegaj ˛acego na prezentacji zdj˛ecia kadru monitorowanej sceny
z ró˙znicy obu warto´sci przekraczał zadany próg, generowany był alarm (o rozja´snieniu lub przyciemnie-niu, w zale˙zno´sci od znaku ró˙znicy). Przykład takiej sytuacji zaprezentowano na rysunku 7.15.
7.3.2.4. Redukcja liczby fałszywych alarmów
W celu zredukowania liczby fałszywych alarmów, które cz˛esto spowodowane były przez krótko-trwałe zdarzenia na scenie, zrealizowano analiz˛e czasow ˛a zdarze´n generowanych przez moduły: obli-czania ró˙znicy pomi˛edzy histogramami, obliobli-czania współczynnika kraw˛edziowego oraz analizy ´sredniej jasno´sci. Alarm generowany był tylko wtedy, gdy zdarzenie zostało wykryte na N kolejnych ramkach z sekwencji wideo. Aby zapobiec generowaniu alarmów przez du˙ze obiekty, dodano mechanizm, który pozwalał na wykluczanie z analizy wybranych fragmentów sceny (przykładowo torowiska na stacji me-tra).
T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych
7.3. Detekcja sabota˙zu kamery 140
Średnia jasność
Rysunek 7.15: Przykład analizy ´sredniej jasno´sci sceny