Monesti on hyödyllistä jonkin ehdon perusteella rajata kuvan kokoa. Seuraavassa esimerkissä näytetään kuvan rajaus.
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
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
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);