...
Code Block |
---|
function f = HaePalikatomiinKuviinsa()
I2 = imread('Palikoita.bmp');
imshow(I2), title('alkuperäinen kuva');
L = bwlabel(I2);%numeroi alueet
Maara=max(L(:))%hae kpl määrä numeroitujen alueiden perusteella
KaikkiOminaisuudet = regionprops(I2,'all');
for i=1:Maara %kelataan kaikki kuvan osat läpi
kulmat=KaikkiOminaisuudet(i).BoundingBox % haetaan jokaisen kuvan kulmat
%kulmat on rect tyyppinen muuttuja, joka sisältää vas.yläkulman x,y,leveys,korkeus
I3=imcrop(I2,kulmat); %tehdään rajoittavan suorakaiteen perusteella uudet kuvat
figure,imshow(I3);
end
|
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 |
Code Block |
---|
Seuraava
...
esimerkki
...
rajaa
...
kuvan
...
alueen
...
kuvassa
...
olevien
...
kappaleiden
...
ympärille
Code Block |
---|
function KuvanRajausOsienYmparille() |
...
I = imread(' |
...
Palikoita. |
...
bmp'); |
...
%I=rgb2gray(I); |
...
%jos rgb kuva BW= |
...
I;%edge(I, 'sobel', (graythresh(I) * .05)); |
...
imshow(BW); |
...
L=bwlabel(BW); |
...
s=regionprops(L,'all'); |
...
maara=max(L( |
...
:)); |
...
% 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)) |
...
%round() pyoristaa lahimpaan kokonaislukuun ylakulma(1)=round(box(i,1) |
...
) end %haetann ylakulma y-suunnassa |
...
if(box(i,2)<ylakulma(2)) |
...
ylakulma(2)=round(box(i,2) |
...
) end %haetaan alakulma x-suunnassa |
...
if(box(i,1)+box(i,3)>alakulma(1)) |
...
alakulma(1)=round(box(i,1)+box(i,3) |
...
) end %haetaan alakulma y-suunnassa |
...
if(box(i,2)+box(i,4)>alakulma(2)) |
...
alakulma(2)=round(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); |
Code Block |
---|