kÉpfeldolgozÁs - u-szeged.hupkardos/oktatas/kepfeld/dip_03.pdf · pontoperációk a kimeneti (i,...

22
KÉPFELDOLGOZÁS 3. gyakorlat: Pontoperációk

Upload: others

Post on 30-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

KÉPFELDOLGOZÁS

3. gyakorlat:

Pontoperációk

Page 2: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Pontoperációk

A kimeneti (i, j) pixel értéke csak a

bemeneti (i, j) pixel(ek) értékétől függ.

IN[i, j] OUT[i, j]

i

j

i

j

Page 3: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Aritmetikai műveletek

• Súlyozott összeg

• Kivonás

• Maszkolás

Page 4: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Súlyozott összeg

Képek kombinálására („összemosás”)

+ 0.5 ×0.5 ×

Page 5: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Súlyozott összeg (példa)

+

dim2(2)dim2(2) - dim1(2)+1

img1 = imread('darwin_gray.jpg');

img2 = imread('zebras_gray.jpg');

dim1 = size(img1);

dim2 = size(img2);

resimg = img2;

resimg(1:dim1(1), ...

dim2(2)-dim1(2)+1:dim2(2))= ...

0.5*img1 + ...

0.5*img2(1:dim1(1), ...

dim2(2)-dim1(2)+1:dim2(2));

imshow(resimg);

dim1(1)

dim2(1)

Page 6: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Kivonás

Képek közötti eltérések vizsgálatához

-

Page 7: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Kivonás (példa)

-

img1 = imread('cam1.jpg');

img2 = imread('cam2.jpg');

diffimg = abs(double(img2)- double(img1));

imshow(uint8(diffimg));

uint8-ban a negatív értékek elvesznének

Page 8: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Maszkolás

Bizonyos részek kinullázása egy bináris maszkkal

-.*.*

Page 9: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Maszkolás (példa)

-

img1 = imread('new_york1.jpg');

img2 = imread('new_york2.jpg');

resimg = img1 .* (img2 / 255) ;

imshow(resimg);A második „kép” 0 és 255 értékeket

tartalmaz, de nekünk 0 és 1 értékek kellenek!

.*

.*

Page 10: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Álszínezés

Egy szürkeárnyalatos kép minden egyes

szürkeárnyalatához egy-egy színt

rendelünk hozzá.

Page 11: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Álszínezés (példa)img = imread('island.jpg’);

dims = size(img);

mycolormap = uint8(zeros(256, 3));

for i=1:128;

mycolormap(i,:) = [254-2*i, 2*i, 0];

mycolormap(128+i,:) = [0, 254-2*i, 2*i];

end

for r = 1:dims(1);

for c=1:dims(2);

for i=1:3;

resimg(r,c,i) = ...

mycolormap(img(r,c)+1, i);

end;

end;

end;

imshow(resimg);

kód szín

0 [254,0,0]

1 [252,2,0]

2 [250,4,0]

… …

126 [2,252,0]

127 [0,254,0]

128 [0,252,2]

… …

254 [0,2,252]

255 [0,0,254]

Page 12: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Intenzitás transzformációk

• Invertálás

• Logaritmikus transzformáció

• Gamma korrekció

Page 13: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Invertálás

iout = max – iin(max: intenzitástartomány maximuma)

Page 14: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Logaritmikus transzformáció

iout = c ∙log(1 + iin)

(c > 0)

c = 2

Page 15: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Gamma korrekció

iout = c ∙ iinγ

(c, γ > 0)

c = 2

γ = 2

Page 16: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Intenzitás transzformációk (példa)img = imread('cameraman.tif');

I = 255-img;

figure('Name', 'Invertálás')

imshow(I);

img = im2double(img);

L1 = log(1+img);

L2 = 2*log(1+img);

L3 = 5*log(1+img);

figure('Name', 'Logaritmus ...

transzformáció')

imshow([img,L1;L2,L3])

G1 = 2 *img .^ 0.5;

G2 = 2 *img .^ 2;

G3 = 2 * img .^ 3;

figure('Name','Gamma korrekció')

imshow([img,G1;G2,G3])

double-ra konvertál és

átskálázza az intenzitásokat

a [0,1] tartományra

Page 17: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Összehasonlítás

Page 18: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

1 ha iin < T

0 különben

Küszöbölés küszöbérték felett / alatt

1 ha iin ≥ T

0 különbeniout =

iout =

T = 120

Page 19: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Küszöbölés intervallumon belül / kívül

1, ha Tlow ≤ iin ≤ Thigh

0 különbeniout =

iout =

Tlow = 155

Thigh = 200

1, ha iin < Tlow vagy iin > Thigh

0 különben

Page 20: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Vágás

Maszkolás a küszöbölt képpel.

.*

Page 21: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Küszöbölés és vágás (példa)img = imread('cameraman.tif');

T1A = img >= 120;

T1B = img < 120;

T2A = 155 <= img & img < 200;

T2B = 155 > img | img > 200;

C1 = img .* uint8(T1A);

C2 = img .* uint8(T2A);

subplot(2,3,1);

imshow(T1A);

title('Küszöbölés ...

küszöb felett')

subplot(2,3,2);

imshow(T1B);

title('Küszöbölés ...

küszöb alatt')

...

Page 22: KÉPFELDOLGOZÁS - u-szeged.hupkardos/oktatas/kepfeld/DIP_03.pdf · Pontoperációk A kimeneti (i, j) pixel értéke csak a bemeneti (i, j) pixel(ek) értékétől függ. IN[i, j]

Vágás (példa)

Imin = min(img(:));

Imax = max(img(:));

d = Imax - Imin;

thresh = Imin + 0.2*d < img & ...

img < Imax - 0.2*d;

clip = img .* uint8(thresh);

Teljes intenzitástartomány alsó és felső 20 %-ának vágása (nullázása):

IminImax

d

0.2 ∙ d 0.2 ∙ d