...
Code Block |
---|
function KuvaRajaus() I = imread('SuorakaiteitaErikulmissa.bmp'); figure;imshow(I);title('Alkuperäinen kuva'); siirrosYsuunnassaAlas=10; Yalku=1; Yloppu=256; siirrosXsuunnassaOikealle=222; %I = I(10+[1:256],222+[1:256],:); % rajattu kuva Xalku=1; Xloppu=256; I=I(siirrosYsuunnassaAlas +[Yalku:Yloppu],siirrosXsuunnassaOikealle+[Xalku:Xloppu],:); figure;imshow(I);title('Rajattu kuva'); end |
Seuraava esimerkki rajaa kuvan alueen kuvassa olevien kappaleiden ympärille
Code Block |
---|
function KuvanRajausOsienYmparille()
I = imread('kuva.JPG');
I=rgb2gray(I);
BW=edge(I, 'sobel', (graythresh(I) * .05));
imshow(BW);
L=bwlabel(BW);
s=regionprops(L,'all');
maara=max(L(:));
s = regionprops(L, 'all');
% yhdistetaan cat funktiolla kaikkien osien rajaavat suorakaiteet yhdeksi matriisiksi
% yksi rivi edustaa yhden osan rajaavaa suorakaidetta
% Boundinbox = ylakulmax, ylakulmay, leveysx, korkeusy
box = cat(1, s.BoundingBox)
ylakulma=[10000,10000];
alakulma=[0,0];
for i=1:maara
%haetaan ylakulam x-suunnassa
if(box(i,1)<ylakulma(1))
ylakulma(1)=box(i,1)
end
%haetann ylakulma y-suunnassa
if(box(i,2)<ylakulma(2))
ylakulma(2)=box(i,2)
end
%haetaan alakulma x-suunnassa
if(box(i,1)+box(i,3)>alakulma(1))
alakulma(1)=box(i,1)+box(i,3)
end
%haetaan alakulma y-suunnassa
if(box(i,2)+box(i,4)>alakulma(2))
alakulma(2)=box(i,2)+box(i,4)
end
end
%rajataan alkuperaisesta kuvasta osat sisaltava alue
uusikuva=I(ylakulma(2):alakulma(2), ylakulma(1):alakulma(1));
figure, imshow(uusikuva);
|