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