Príklady PV

Z Psychostudia

Jump to: navigation, search

Obsah

Resize

I = imread('circuit.tif');

J = imresize(I,1.25); %zvacsi obr. o 25%

imshow(I)

figure, imshow(J)

zmena velkosti na konkretne rozmery stran

Y = imresize(X,[100 150])

Rotate

I = imread('circuit.tif');

J = imrotate(I,35,'bilinear');

imshow(I)

figure, imshow(J)

Crop

Výber časti obrázka pomocou myši...

imshow circuit.tif

I = imcrop;

imshow(I);

Pridávanie a filtrovanie šumu

RGB = imread('saturn.png');

I = rgb2gray(RGB);

J = imnoise(I,'gaussian',0,0.005); %zašumenie

K = wiener2(J,[5 5]); %filtrovanie

imshow(J)

figure, imshow(K)



I = imread('eight.tif');

imshow(I)


J = imnoise(I,'salt & pepper',0.02);

figure, imshow(J)

1.

K = filter2(fspecial('average',3),J)/255;

figure, imshow(K)

2.

L = medfilt2(J,[3 3]);

figure, imshow(K)

figure, imshow(L)

Morfológia

Dilatácia

Izometrická dilatácia 3x3 Využíva štruktúrny element 3x3 v tvare „+“, Expanzia objektu vo všetkých smeroch.Zmení všetky body pozadia susediace s bodmi objektu na body objektu.Pridá 1 vrstvu bodov objektu, vyplní diery o veľkosti1-pixel (Fill and Grow)

Erózia

Pre každý bod d obrazu sa overuje, či pre všetky možné d+b leží výsledok v X. Ak áno, zapíše sa v reprezentatívnom bode do výsledku 1, inak 0.Inak povedané: Posúvajme ľubovoľne Bpo X. Ak je B posunutý o vektor d celý obsiahnutý v obraze X, potom bod zodpovedajúci reprezentatívnemu bodu B patrí do erózie. Izotropná erózia zmení všetky body objektov susediace s pozadím na body pozadia. Uberie objektom jednu vrstvu na úkor pozadia. Odstráni objekty o veľkosti (hrúbke) 1 pixel ako napr. šum. Oddelí dotýkajúce sa objekty. Odčítaním erodovaného objektu od pôvodného získame jeho obrys.

I = imread('rice.png'); %obrázok

I_er = imerode(I,strel('disk',2)); %erozia

imshow(I-I_er) % obrysy

Výpis Morfologia.m

I = imread('rice.png');

figure('Name','Prve Okno','NumberTitle','off')

subplot(2,3,1);

imshow(I);

title('Povodny');

%pozadie

I_pozadie = imopen(I,strel('disk',15));

subplot(2,3,2);

imshow(I_pozadie);

title('Pozadie');


%odstranene pozadie

I_bez_pozadia = imsubtract(I,I_pozadie);

subplot(2,3,3);

imshow(I_bez_pozadia);

title('Bez pozadia');


%adjust

I_adjust = imadjust(I_bez_pozadia);

subplot(2,3,4);

imshow(I_adjust);

title('Adjust');


%final I_final = im2bw(I_adjust,graythresh(I_adjust));

subplot(2,3,5);

imshow(I_final);

title('Final B&W');


SE2 = strel('disk',2);

SE4 = strel('disk',4);


%dilatacia

I_dilatovany = imdilate(I_final,SE2);

figure('Name','Druhe okno','NumberTitle','off');

subplot(2,3,1);

imshow(I_dilatovany);

title('Dilatovany');


%erozia

I_erodovany = imerode(I_final,SE2);

subplot(2,3,2);

imshow(I_erodovany);

title('Erodovany');


%opening

I_opening_ = imerode(I_final,SE2);

I_opening = imdilate(I_opening_,SE2);

subplot(2,3,3);

imshow(I_opening);

title('Opening');


%closing

I_closing_ = imdilate(I_final,SE2);

I_closing = imerode(I_closing_,SE2);

subplot(2,3,4);

imshow(I_closing);

title('Closing');


%skeleton

I_skel = bwmorph(I_final,'skel');

subplot(2,3,5);

imshow(I_skel);

title('Skeleton');


%imtophat

I_tophat2 = imtophat(I_final,SE2);

I_tophat4 = imtophat(I_final,SE4);

I_tophat = imsubtract(I_tophat4, I_tophat2);

subplot(2,3,6);

imshow(I_tophat);

title('Top Hat');

Kombinácia dilatácie a erózie

OTVORENIE (OPENING) je erózia nasledovaná dilatáciou. Používa sa na oddelenie objektov dotýkajúcich sa úzkym pásikom.

UZAVRETIE (CLOSING) je dilatácia nasledovaná eróziou. Spojí oddelené objekty, ktoré sú blízko seba, zaplní malé diery a vyhladí obrys tým, že vyplní úzke zálivy.

Segmentácia pomocou morfológie

Hľadanie hrán pomocou funkcie edge

I = imread('segmorph.tif') .* 255;

BW1 = edge(I,'prewitt');

BW2 = edge(I,'canny');

imview(BW1)

imview(BW2)

Hľadanie písmena podľa vzoru

% Locating Image Features

%Read in the sample image.

bw = imread('text.png');

%Create a template for matching by extracting the letter "a" from the image.

a = bw(32:45,88:98);

imshow(bw);

figure, imshow(a);

C = real(ifft2(fft2(bw) .* fft2(rot90(a,-1),256,256)));

figure, imshow(C,[])

max(C(:))

% ans = 68.0000

thresh = 60;

% Use a threshold that's a little less than max.

figure, imshow(C > thresh)