Transformacje
Transkrypt
Transformacje
Analiza i Przetwarzania Obrazów Cyfrowych IIIr Informatyki Stosowanej 2015/2016 copyright: M. Dwornik [email protected] Dyskretne transformacje obrazu 1 Dyskretna Transformacja Cosinusowa (DCT) Transformacja ta ma zastosowanie przede wszystkim do kompresji obrazów jpg oraz do konwersji mpeg. Para transformat cosinusowych dana jest wzorami: B(p, q) = αp αq M −1 N −1 X X Amn cos π(2m + 1)p π(2n + 1)q cos 2M 2N (1) αp αq Bpq cos π(2m + 1)p π(2n + 1)q cos 2M 2N (2) m=0 n=0 A(m, n) = M −1 N −1 X X p=0 q=0 gdzie: 0 ¬ p ¬ M − 1, 0 ¬ q ¬ N − 1 0 ¬ m ¬ M − 1, 0 ¬ n ¬ N − 1 ( αp = √1 M √2 M dla p = 0 α = dla p = 6 0 q ( √1 N √2 N dla q = 0 dla q = 6 0 Do implementacji DCT sªu»y polecenie dct2(obraz, m, n), a do transformacji odwrotnej idct2(obraz, m, n), gdzie je»eli (m,n)<size(obraz), obraz A jest przycinany. 1.1 Kompresja JPEG Kompresja JPEG (ang. Joint Photographic Experts Group ) oparta jest o transformacj¦ DCT2 wykonywan¡ w oknach o rozmiarze 8x8. Istot¡ procesu jest kwantykacja wyników transformaty oraz pó¹niejsze kodowanie. Proces kompresji wygl¡da nast¦puj¡co: 1. Konwersja RGB do YCbCr poª¡czona z przesuni¦ciem ±redniej do 0.0: Y = 0.299 · R + 0.587 · G + 0.114 · B (3) Cr = 128 − 0.168736 · R − 0.331264 · G + 0.53 · B Cb = 128 + 0.5 · R − 0.418688 · G − 0.081312 · B W MatLABie istnieje polecenie konwertuj¡ce rgb2ycbcr(). Wymagane jest tylko pó¹niejsze, r¦czne przesuni¦cie ±redniej. 2. Downsampling (redukcja danych) • 4:4:4 - Brak downsamplingu • 4:2:2 - Redukcja poziomych skªadowych Cb i Cr o poªow¦ • 4:2:0 - Redukcja poziomych i pionowych skªadowych barwy o poªow¦. 3. Wykonywanie DCT2 w oknach 8x8. 4. Kwantykacja wyników przy wykorzystaniu tablic kodowania QY i QC . Polega ona na podzieleniu ka»dego bloku przez tablic¦ i zaokr¡gleniu do najbli»szej liczby caªkowitej. Dopiero od tego punktu algorytm jest stratny. 16 12 14 14 QY = 18 24 49 72 11 12 13 17 22 35 64 92 10 14 16 22 37 55 78 95 16 19 24 29 56 64 87 98 24 26 40 51 68 81 103 112 40 58 57 87 109 104 121 100 51 60 69 80 103 113 120 103 61 55 56 62 77 92 101 99 1 17 18 24 47 Qc = 99 99 99 99 18 21 26 69 99 99 99 99 24 26 56 99 99 99 99 99 47 66 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 Analiza i Przetwarzania Obrazów Cyfrowych IIIr Informatyki Stosowanej 2015/2016 copyright: M. Dwornik [email protected] 5. Zamiana tablicy na ci¡g liczbowy. Wykorzystywana jest ±cie»ka zygzakowa, by jak najwi¦cej zer byªo koªo siebie (g.1). Rysunek 1: cie»ka stosowana w kompresji JPG.ródªo http://en.wikipedia.org/wiki/Zigzag 6. Kompresja. Stosowany jest najcz¦±ciej algorytm Humana, cho¢ stosowane te» mo»e by¢ kodowanie arytmetyczne (bardziej efektywna kompresja, ale kosztowniejsza obliczeniowo). 2 Transformacja Radona Transformacja Radona podaje ilo±¢ pikseli obrazu binarnego o warto±ci logicznej prawda w rzucie na prost¡ umieszczon¡ pod k¡tem theta wzgl¦dem obrazu. Transformacja ta dana jest wzorem: Ro (x0 ) = gdzie: Z ∞ f (x0 cos θ − y 0 sin θ, x0 sin θ + y 0 cos θ)dy −∞ " x0 y0 # " = cos θ sinθ − sin θ cos θ #" x y (4) # Do transformacji Radona sªu»y polecenie [R,xp]=radon(obraz, theta), gdzie R - wynik transformacji Radona pod k¡tem theta (kiedy theta - wektor, R - macierz) xp - wektor zawieraj¡cy wspóªrz¦dne k¡towe odnosz¡ce si¦ do macierzy R Do transformacji odwrotnej sªu»y polecenie iradon(R, theta, parametry). Do parametrów zaliczamy: • • • • metoda interpolacji: 'nearest', 'linear', 'spline' metoda ltracji: 'Ram-Lak', 'Shepp-Logan', 'Cosine', 'Hamming', 'Hann' wspóªczynnik skali osi cz¦stotliwo±ci: 0-1, domy±lnie 1; p rozmiar wyj±ciowy: domy±lnie: n = 2 · f loor(size(R, 1)/(2 ∗ (2))) Odwrotna Transformata Radona, w wesji monochromatycznej, jest stosowana w tomograi medycznej do inwersji danych pomiarowych. 3 Transformacja Hougha Standardowa Transformacja Hougha (w pakiecie MatLAB dost¦pna jest tylko dla obrazów logicznych), wykorzystuje parametryczn¡ posta¢ prostej: % = x · cos(θ) + y · sin(θ) 2 (5) Analiza i Przetwarzania Obrazów Cyfrowych IIIr Informatyki Stosowanej 2015/2016 copyright: M. Dwornik [email protected] Rysunek 2: Idea Transformacji Radona(ródªo: MATLAB help: Radon transform::description of) Na g.3 przedstawiono interpretacj¦ geometryczn¡ postaci parametrycznej prostej. Warto±¢ r jest najkrótsz¡ odlegªo±ci¡ dowolnego punktu prostej od ±rodka ukªadu wspóªrz¦dnych (czyli dªugo±ci¡ linii prostopadªej do prostej przechodz¡cej przez punkt (0,0)), a k¡t θ jest k¡tem pomi¦dzy dodatni¡ póªosi¡ OX, a lini¡ r. Rysunek 3: Interpretacja geometryczna parametrycznej postaci prostej Dzi¦ki temu mo»emy ka»demu punktowi przypisa¢ pewn¡ funkcj¦ sinusoidaln¡. Linia jest reprezentowana jako punkt przeci¦cia sinusoid pochodz¡cych od punktów le»¡cych na owej linii. Do implementacji Transformacji Hougha sªu»y polecenie: [H, theta, rho]=hough(BW, parametry). Do parametrów zaliczamy: • 'ThetaResolution' - Liczba rzeczywista z przedziaªu 0-90, okre±laj¡ca odlegªo±¢ pomi¦dzy kolejnymi k¡tami θ, domy±lnie 1; • 'RhoResolution' - liczba z przedziaªu: 0 − norm(size(BW )). Domy±lnie 1. Funkcjami powi¡zanymi z transformacj¡ Hougha s¡: • peaks = houghpeaks(H, numpeaks, parametry) - sªu»y ona do lokalizacji punk- tów przeci¦¢ sinusoid na obrazie; • houghlines(BW, theta, rho, peaks) - sªu»y do detekcji linii prostych na obrazie logicznym. 3