ROZUMIENIE OBRAZÓW I SYGNAŁÓW DETEKCJA PROSTYCH OBIEKTÓW Krzysztof Ślot Instytut Informatyk Stosowane Blok Intelgentne Systemy Autonomczne
Wprowadzene Cel przetwarzana obrazów z perspektywy systemów ntelgentnych (autonomcznych) Rozpoznawane treśc obrazu (zawartość obrazu ake obekty ake relace mędzy obektam) Etapy przetwarzana Pobrane obrazu Przygotowane do analzy Analza (detekca rozpoznane) Decyza akca
Wprowadzene Scenarusze rozważane w kurse Śledzene prostego obektu Prosty stały regularny kształt ednorodny kolor (znany /neznany) Śledzene ln (wyznaczaące trasę) Kolor ln znany / neznany Podłoże sztuczne / naturalne Śledzene obektu rzeczywstego o stałe geometr Kształt obektu sę ne zmena
Narzędza Sprzęt Raspberry P 3 Kamera do RPI (dedykowana / nternetowa) Poazd kontrolowany przez Arduno Oprogramowane System operacyny Raspban Środowsko Qt dla ęzyka C++ Bbloteka OpenCV (wersa 3.x) Moduły: core hghgu (GUI) mgcodecs (odczyt/zaps) mgproc (analza) features (detekca/rozpoznawane)
Obrazy OpenCV Reprezentaca obrazów: macerz Obekt typu cv::mat (tablca) o rozmarze obrazu Elementy tablcy namespace ( moduł ) cv :: - element 1B B 4B/pksel (monochromatyczne): CV_8U (charuchar) CV_3F (float) CV_3S (nt) 3B/pksel (kolorowe): CV_8UC3 (cv::vec3b) 4B/p (kolor + przezroczystość): CV_8U4 Typ - szablon klasy: wymaga specyfkac typu elementów cv::mat m1(640480cv_8u); cv::mat m(104104cv_3f); cv::mat m3(100100cv_8uc3); // obraz monochromatyczny uchar // monochromatyczny float // kolorowy 3 kanały
Obrazy OpenCV Manpulaca elementam obrazu Zaps odczyt poedynczych elementów: metody wymagaą specyfkac typu elementów (szablon) Typy wpsywanych danych proste (np. nt gdy macerz ma eden kanał) wektory (wele kanałów) cv::vec{346}{bwsfd} cv::mat o(5656cv_8u)); o.at<unsgned char>(1010) = 00; // wpsane wartośc cv::mat o(00100cv_8uc3)); o.at<unsgned char>(1010) = cv::vec3b(10030); // wpsane wektora cv::mat o(5656cv_8uc3)); for(nt =0; <o.rows; ++) // zapełnane macerzy for(nt =0; <o.cols; ++) o.at<cv::vec3b>()=cv::vec3b(0);
Obrazy OpenCV Wczytywane obrazów do programu Źródło: plk / kamera Wczytywane z plku: mread(..) (moduł Imgcodecs) Różne formaty obrazów (różne kodek) png pg Automatyczna alokaca pamęc dla obrazu Domyślna (kolor - BGR) lub narzucona reprezentaca pksel Wyśwetlene obrazu: mshow(..) moduł hghgu cv::mat obraz; // tworzene pustego obektu cv::mread(obraz.../baboon.pg); cv::mshow( Obraz obraz);
Obrazy OpenCV Reprezentaca obrazów kolorowych B = 60 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 3Bpp 4Bpp: różne permutace komponentów Podstawa: reprezentaca BGR (BgEndan - RGB) BGRA (ARGB ) nne: przestrzene kolorów HSV Lab Konwerse cvtcolor(..) Kolorowy monochromatyczny (obraz mono to podstawa dla wększośc analz!) Kolor wypadkowy G = 196 R = 50 1 1 1 1 0 1 0 cv::mat m = mread( ) gs hsv; cv::cvtcolor(mgscv::color_bgrgray); cv::cvtcolor(mgscv::color_bgrhsv); // wczytane obrazu // konwersa do obrazu mono // konwersa do przestrzene HSV
Przestrzene kolorów Ops pksela kolorowego: wektor Przestrzeń RGB: replkaca właścwośc oka HSV: barwa (H) nasycene (S) asność (V) https://msdn.mcrosoft.com S ) max( ) mn( ) max( B G R B G R B G R S V ) max( B G R V wzór eksperymentalny H H S V
Analza obrazów z OpenCV Gotowe mplementace wększośc znanych procedur przetwarzana obrazów Program to sekwenca wywołań odpowednch funkc Koneczne twórcze rozwane tego schematu OpenCV bbloteka obektowa (ale ) Typowa postać funkc: vod fun(src dst par1 ) Automatyczna alokaca zmenne wynkowe Smart ponters : a=b vs. a=b.clone() cv::mat out; cv::resze(n out Sze(100100)); // n: źródło ( wcześne cv::cvtcolor(n outcv::color_bgrgray); //zdefnowane out: wynk cv::canny(n out 50 100);
Cel kursu: detekca obektów Obekty proste : kula ednolty kolor Możlwy scenarusz Wydzel obekty o zblżonym kolorze Problem: może być ch klka Rozbudowany scenarusz Dodatkowo określ kształt Zadana Segmentaca obrazu względem koloru Analza kształtu obektu Metodyka: segmentaca rozpoznawane kształtu
Procedura analzy: detekca kul Cel: detekca kul o ednorodnym kolorze Segmentaca obrazu w funkc koloru Przedzały [H l.. H u ] Zakres: komproms (zmenność selektywność) Detekca konturów obektów kolenych pasm Dane: obraz bnarny (obekty tło) Kontur punkty brzegowe: ekstrakca Istotne tylko kontury zewnętrzne obektów Analza kształtu (cel: znalezene okręgów) Dane: zbór punktów (krzywa) Cel: porównane podobeństwa do okręgu Modele okręgu Parametry: szerokość pasma wartośc progów Wydzel pasmo H Znadź kontury obektów Analza kształtu wydzelene kół Wszystke pasma? Konec
Segmentaca względem koloru Nawygodnesza przestrzeń: HSV Segmentaca Podzał obrazu na kategore o spónych właścwoścach Kryterum: kolor Algorytm postępowana Wczytane obrazu przekształcene do HSV Wydzelene zakresu barw cv::mat mg = cv::mread( ); cv::mat hsv Seg; cv::cvtcolor(mghsccv::color_bgrhsv); cv::nrange(hsv cv::scalar(l100 100) cv::scalar(u5555) Seg);
Detekca krawędz konturów Krawędze: wyrazste gradenty asnośc / barwy Kluczowe znaczene dla analzy obrazu: grance obektów wygląd obektu Detekca: poszukwane lokalnych maksmów zmennośc Pochodna (zmenność) + progowane modułu pochodne f (x) df ( x) dx Numeryczna aproksymaca pochodne Krawędź df ( x) f ( x h) f ( x h) dx h h 1 f ( x 1) f ( x 1)
Detekca krawędz konturów Lnowe przekształcena funkc Splot funkc f H Obemue wyznaczane pochodne H [ H n... H n] Przekształcane funkc w celu uwypuklena / redukc lokalnych właścwośc: fltraca Detekca krawędz: uwypuklene zmennośc Wygładzane: redukca zmennośc g( k) n n g( k) f k f H H f [ f a... fb] H [101] H [0.500.5] Dzedzna D Pochodna gradent f f ( x y) f x y) x ( x y) y ( [101 ] H H H V 1 0 1 f f f x y
Detekca krawędz konturów Obrazy rzeczywste Typowy przebeg ln obrazu (błędy akwzyc zakłócena) Próg? Pochodna Koneczna elmnaca/redukca lokalne zmennośc Powązane wygładzana (uśrednana) z różnczkowanem f h DIFF Próg f h AVG Operace lnowe realzaca obydwu operac w ednym etape
Wygładzane Gradent Detekca krawędz konturów Detekca krawędz: mask Sobela cv::sobel Dwuwymarowy operator H: wygładzane + krawędze Uśrednene L [11] H [101] Pochodna Maska pozoma 1 0-1 0 - Maska ponowa 1 1 0 0 0 1 0-1 -1 - -1 S H = H L T Gradent S V = L H T Wygładzane Detekca krawędz: metoda Canny ego Rozwnęce fltrac Sobela Dodany mechanzm śledzena konturów
Detekca konturów Kontury cv::fndcontours Argument to obraz bnarny (np. wydzelony w wynku operac lub zaweraący wynk detekc krawędz) Wynk to lsta konturów z których każdy zawera lstę należących do nego punktów) Istotne opce cv::fndcontours Możlwe uzyskane konturu zewnętrznego obektu lub wszystkch (wewnętrznych z nformacą o relac wzaemnego zawerana) Możlwe kodowane konturu lub brak kodowana (wynk to wszystke punkty konturu)
Procedura analzy: detekca kul Parametry: szerokość pasma wartośc progów Wydzel pasmo H Znadź kontury obektów H: [5-30] [75-85] [170-179] Analza kształtu wydzelene kół Wszystke pasma? Konec
Analza kształtu Rozpoznane porównane z modelem - ocena Model: analtyczny lub zbudowany na baze przykładów Porównane: procedura generuąca loścowy wynk ocenaący dopasowane Wynk podlega ocene próg podobeństwa Możlwe modele kształtu obektu Specyfczne bazuące na wedzy o kształce fgury Analtyczny model okręgu Ogólne statystyczne z parametram Momenty obektu: zwykłe centralne unormowane Ogólne bazuące na cechach lokalnych
Modele analtyczne Analtyczne defnce obektu Okrąg zbór punktów ednakowo odległych od środka Okrąg krzywa parametryczna ) ( ) ( : r b y a x K P ) / cos( ) / sn( : r r y r r x K P Ocena zgodnośc konturu z modelem #1 Kryterum: średn błąd odstępstw punktów konturu od modelu (kontur wycentrowany : a=b=0) Koneczne oszacowane optymalnego promena okręgu 1 0 ) ( 1 n r y x n E 1 0 ) ( 1 0 n x y n r r E
Modele analtyczne Procedura detekc Próg detekc: wartość błędu uznana za akceptowalną Wynk: lsta ostateczna lub lsta kandydatów do dalszego sprawdzena Dalsze sprawdzene: użyce nnego kryterum (np. #) Oszacu r dla konturu K Wyznacz błąd dopasowana E E <? Doda wykryty kontur Wszystke kontury? =+1 Konec
Modele statystyczne Statystyczne właścwośc fgury (konturu) Momenty zwykłe (I(xy) asność w punkce (xy)) Momenty centralne (względem wartośc średne) Możlwe statystyczne kryterum detekc pq n 1 0 m pq n 1 0 I( x y)( x x) Momenty centralne 0 0 pownny być podobne Brak lnowe zależnośc współrzędnych okręgu: 11 =0 I( x y) x p p ( y y q y) q J ( 0 / 1) 1 0 11