Príklady PV
Z Psychostudia
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)
