...
Monesti
...
on
...
hyödyllistä
...
jonkin
...
ehdon
...
perusteella
...
rajata
...
kuvan
...
kokoa.
...
Seuraavassa
...
esimerkissä
...
näytetään
...
kuvan
...
rajaus.
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} {code} |
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} |
Seuraava
...
esimerkki
...
rajaa
...
kuvan
...
alueen
...
kuvassa
...
olevien
...
kappaleiden
...
ympärille
Code Block |
---|
{code} 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} {code} {code} |
Code Block |
---|