ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM -...

40
ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

Transcript of ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM -...

Page 1: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

ROZ II – cv. 01 Dekonvoluce

KM - FJFI - ČVUT ZS 2013

ÚTIA - ZOI zoi.utia.cas.cz

Page 2: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

2 / 44

Kontakty Ústav teorie informace a automatizace AV ČR, v.v.i.

http://www.utia.cas.cz

Zpracování obrazové informace

http://zoi.utia.cas.cz

Page 3: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

3 / 44

Kontakty Adam Novozámský: [email protected]

UTIA místnost 23

Page 4: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

4 / 44

Organizace cvik teorie + řešení úkolů

docházka:

http://zoi.utia.cas.cz >> For students >> Lecture courses (CZ)

>> ROZ2 >> Materiály >> Přidat studenta

Page 5: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

5 / 44

Matlab Na UTIA není možné používat serverovou licenci z ČVUT

Stáhnout balík souborů na cvičení:

http://zoi.utia.cas.cz/ROZ2/studijni-materialy

Page 6: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

6 / 44

Maska Gaussiánu naprogramujte generovaní masky symetrického 2D

Gaussiánu

function M = gauss2(S, N)

% M = gauss2 (S [,N]) - vraci normovanou

% symetrickou 2D gaussovku o rozptylu Sigma

% N je velikost matice, defaultne 3*S+1

Page 7: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

7 / 44

Maska Gaussiánu D-dimenzionální Gaussova funkce:

𝑓 𝑥, 𝑦 =1

2𝜋𝑑2 Σ

12

𝑒−12𝑥−𝜇 𝑡Σ−1 𝑥−𝜇

𝑑 počet dimenzí

𝜇 vektor střední hodnoty

𝑡 transpozice vektoru

Σ diagonální kovarianční matice Σ𝑖𝑖 = 𝜎𝑖2

∙ determinant

Page 8: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

8 / 44

Maska Gaussiánu – 2D Σ

𝑑𝑒𝑡𝜎12 0

0 𝜎22 = 𝜎1

2𝜎22 = 𝜎1 ≡ 𝜎2 = 𝜎1

4

𝑥 − 𝜇 𝑡Σ−1 𝑥 − 𝜇

𝑥1 − 𝜇1 𝑥2 − 𝜇2𝜎12 0

0 𝜎22

−1𝑥1 − 𝜇1𝑥2 − 𝜇2

=

= 𝑥1 − 𝜇1 𝑥2 − 𝜇2

1𝜎12 0

0 1𝜎22

𝑥1 − 𝜇1𝑥2 − 𝜇2

=

=𝑥1−𝜇1

𝜎12

𝑥2−𝜇2

𝜎22

𝑥1 − 𝜇1𝑥2 − 𝜇2

=𝑥1−𝜇1

2

𝜎12 +

𝑥2−𝜇22

𝜎22 =

𝜎1 ≡ 𝜎2𝜇1 ≡ 𝜇2 = 0

=

=𝑥12+𝑥2

2

𝜎12

Page 9: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

9 / 44

2D Gaussova funkce symetrická (izotropní)

𝜎𝑥 ≡ 𝜎𝑦 = 0.6

𝜇𝑥 ≡ 𝜇𝑦 = 0

Page 10: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

10 / 44

2D Gaussova funkce asymetrická (anizotropní)

0.6 = 𝜎𝑥 ≠ 𝜎𝑦 = 0.2

𝜇𝑥 ≡ 𝜇𝑦 = 0

Page 11: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

11 / 44

Maska Gaussiánu naprogramujte generovaní masky symetrického 2D

Gaussiánu

function M = gauss2(S, N)

% M = gauss2 (S [,N]) - vraci normovanou

% symetrickou 2D gaussovku o rozptylu Sigma

% N je velikost matice, defaultne 3*S+1

Page 12: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

12 / 44

Maska Gaussiánu

gauss2(5, 11) gauss2(7, 21)

Page 13: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

13 / 44

Maska Gaussiánu

gauss2ani(7, 3, 20) gauss2ani(10, 20, 60)

Page 14: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

14 / 44

Maska Gaussiánu function M = gauss2(S, N)

% M = gauss2 (S [,N]) - vraci normovanou 2D

% gaussovku o rozptylu S

% N je velikost matice, defaultne 3*S+1

if nargin >= 2

R = (N-1) / 2;

else

R = 3*S;

end

[X, Y] = meshgrid( -R:R);

M = (1/(2*pi*S^2))*exp( -(X.^2 + Y.^2)/(2 * S.^2));

M = M / sum(M(:));

end

Page 15: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

15 / 44

Maska Gaussiánu function M = gauss2ani(S1,S2, N)

% M = gauss2ani (S1, S2 [,N]) - vraci normovanou 2D gaussovku o

% rozptylu S1, S2

% N je velikost matice, defaultne 3*S+1

if nargin >= 3

R = (N-1) / 2;

else

R = 3*max(S1,S2);

end

[X, Y] = meshgrid( -R:R);

M=(1/(2*pi*S1*S2))*exp((-1/2)*((X.^2/S1.^2)+(Y.^2/S2.^2)));

M = M / sum(M(:));

end

Page 16: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

16 / 44

Přidání bílého šumu Signal-to-noise ratio (SNR) - míra šumu v obraze

SNR = 10 log (D(f)/D(n)) [dB]

• D(f) … rozptyl nezašuměného signálu

• D(n) … rozptyl šumu

Ve frekvenční oblasti je SNR definována takto:

•𝑁 2

𝐹 2𝑢, 𝑣

• Kdyby šum byl bílý => 𝑁 2 = 𝜎𝑛2

• Pokud je signál nekorelovaný => 𝐹 2 = 𝜎𝑓2

Odvození 𝜎𝑛:

𝑆𝑁𝑅

10= log

𝜎𝑓2

𝜎𝑛2 → 10

𝑆𝑁𝑅10 =

𝜎𝑓2

𝜎𝑛2 → 𝜎𝑛

2 =𝜎𝑓2

10𝑆𝑁𝑅10

𝜎𝑛 =𝜎𝑓2

10𝑆𝑁𝑅10

… nápověda funkcí: var(), rand()

Page 17: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

17 / 44

SNR u lena.pgm

20 dB

0 dB 10 dB

Page 18: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

18 / 44

Přidání bílého šumu naprogramujte funkci, která přidá do obrázku bílý šum

function R = bilySum(I, SNR)

% R = bilySum(I, SNR) – prida bily sum o danem

% SNR do obrazku I

Page 19: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

19 / 44

Přidání bílého šumu function R = bilySum(I, SNR)

% R = bilySum(I, SNR) – prida bily sum o danem

% SNR do obrazku I

MinI = min(I(:));

MaxI = max(I(:));

S = sqrt(var(I(:))/(10^(SNR/10)));

R = I + S*randn(size(I));

R(R<MinI) = MinI;

R(R>MaxI) = MaxI;

end

Page 20: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

20 / 44

Poškození obrázku naprogramujte funkci, která poškodí obrázek – přidá bílý

šum a poté obrázek rozmaže

function R = damage(I, H, SNR)

% R = damage(I, H, SNR) – rozmaze obrazek I s konvolucni

% maskou H a prida do nej bily sum o danem SNR

Page 21: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

21 / 44

Maska Gaussiánu

damage(L, eye(7), 20) damage(L, ones(1,10), 20)

Page 22: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

22 / 44

Maska Gaussiánu

damage2(L, eye(7), 20) damage2(L, ones(1,10), 20)

Page 23: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

23 / 44

Poškození obrázku

function R = damage2(I, H, SNR)

% R = damage(I, H, SNR) – rozmaze obrazek I s konvolucni

% maskou H a prida do nej bily sum o danem SNR

R = conv2(I,H);

R = bilySum(R, SNR);

end

„ubírá“ jas v okrajích >> tvoří rámeček

Jak ho odstranit?

Page 24: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

24 / 44

Poškození obrázku

function R = damage(I, H, SNR)

% R = damage(I, H, SNR) – rozmaze obrazek I s konvolucni

% maskou H a prida do nej bily sum o danem SNR

R = conv2(I,H,'same')./conv2(ones(size(I)),H,'same');

R = bilySum(R, SNR);

end

Page 25: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

25 / 44

FT Poškozeného obrázku

damage2(L, eye(7), 50)

damage2(L, ones(1,10), 50)

Proč tam jsou ty pruhy ?

Page 26: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

26 / 44

FT Poškozeného obrázku

damage2(L, kruh(7,15), 50)

damage2(L, gauss2(4,10), 50)

Proč tam jsou ty vzory?

Page 27: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

27 / 44

Proč jsou ve FFT ty periodické vzory u

poškozených obrázků ?

kruh(7,15) gauss2(4,10) ones(1,10) eye(4,10)

Z konvolučního teorému vyplívá, že konvoluce je

násobení ve frekvenční oblasti.

Konvoluční jádra mají ve FFT nulové body:

Page 28: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

28 / 44

Poškození obrázku

horní řádek: damage(L,gauss2(3,11),SNR)

dolní řádek: damage(L,gauss2(7,21),SNR)

kde SNR = 50, 20, 10, 5

Page 29: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

29 / 44

Inverzní filtr konvoluce:

𝑓 ∗ 𝑔 𝑡 = 𝑓 𝜏 𝑔 𝑡 − 𝜏 𝑑𝜏∞

−∞

∗: 𝐿1 × 𝐿1 → 𝐿1

konvoluční teorém:

ℱ 𝑓 ∗ 𝑔 = ℱ 𝑓 ∙ ℱ 𝑔 = 𝐹 ∙ 𝐺

odvození Inverzního filtru:

𝑍 = 𝑈 ∙ 𝐻

𝑈 =𝑍

𝐻

𝑢 = ℱ−1𝑍

𝐻

naprogramujte Inverzní filtr:

function u = inverzniFiltr (z, h)

% u = inverzniFiltr (z, h) zaostří obrázek z

% rozmazaný maskou h pomocí inverzního fitru

Page 30: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

30 / 44

Inverzní filtr function u = inverzniFiltr (z, h)

% u = inverzniFiltr (z, h) zaostří obrázek z

% rozmazaný maskou h pomocí inverzního fitru

Z = fft2(z);

H = fft2 (h, size(z,1), size(z,2));

U = Z ./ H;

u = abs(ifft2(U));

end

Page 31: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

31 / 44

C = conv2(L, ones(1,7)) inverzniFiltr(C,ones(1,7))

Inverzní filtr

Pro rozmazání (hlavně pohybem) je třeba použít velikost

masky, která je nesoudělná s velikostí obrázku (např. 7). Jinak

ve fourierce nafouklé na celý snímek vzníknou nuly, kterými se

v inverzním filtru blbě dělí.

Page 32: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

32 / 44

C = conv2(L, ones(1,7)) inverzniFiltr(C,ones(1,7))

Inverzní filtr

Pro rozmazání (hlavně pohybem) je třeba použít velikost

masky, která je nesoudělná s velikostí obrázku (např. 7). Jinak

ve fourierce nafouklé na celý snímek vzníknou nuly, kterými se

v inverzním filtru blbě dělí.

Page 33: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

33 / 44

damage2(L,ones(1,7),100)

Inverzní filtr

Přidání šumu má fatální vliv na Inverzní filtr !!

Nedá se v praxi moc použít !!

damage2(L,ones(1,7),50)

damage2(L,ones(1,7),30) damage2(L,ones(1,7),10)

Page 34: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

34 / 44

Inverzní filtr

Page 35: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

35 / 44

Wienerův filtr Definice:

získaný odhad má mít minimální odchylku od originálu:

• 𝐸( 𝑓′ − 𝑓 2) → 𝑚𝑖𝑛 … střední kvadratická chyba

- 𝐸 …střední hodnota

- 𝑓′ …odhad

- 𝑓 …originál

má to být lineární filtr, tedy to má být násobení ve

frekvenční oblasti

• 𝐹′ = 𝐺 ∙ 𝑅

- 𝐺 … zašuměný obrázek

- 𝑅 … transformační matice

Page 36: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

36 / 44

Wienerův filtr byla odvozena tato transformační matice:

𝑅 𝑢, 𝑣 =1

𝐻 𝑢, 𝑣∙

𝐻 𝑢, 𝑣 2

𝐻 𝑢, 𝑣 2 + 𝑆𝑛 𝑢, 𝑣 𝑆𝑓 𝑢, 𝑣

𝑆𝑛 𝑢, 𝑣 𝑆𝑓 𝑢, 𝑣 ≈ 𝑆𝑁𝑅−1

𝐻 ∙ 𝐻 = 𝐻 2

• Matlab funkce: conj()

Page 37: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

37 / 44

Wienerův filtr naprogramujte Wienerův filtr

function u = wiener (z, h, SNR)

% U = wiener (Img, M, SNR) provede Wienerův

% filtr na obrázek Img, který byl poškozen

% maskou M a zašumňen bílým šumem o daném SNR

H = fft2( h, size(Img,1), size(Img,2));

W = conj(H) ./ (abs(H).^2 + 1/SNR);

Z = fft2(z) .* W;

u = abs(ifft2(Z));

end

Page 38: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

38 / 44

damage2(L,ones(1,7),100)

Wienerův filtr

damage2(L,ones(1,7),50)

damage2(L,ones(1,7),30) damage2(L,ones(1,7),10)

Page 39: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

39 / 44

Praktické příklady Určete typ počkození u obrázků yiXX.pgm a vylepšete je

Page 40: ROZ II cv. 01 - CASzoi.utia.cas.cz/files/prezentace_0.pdf · ROZ II – cv. 01 Dekonvoluce KM - FJFI - ČVUT ZS 2013 ÚTIA - ZOI zoi.utia.cas.cz

Děkuji za

pozornost