Monesti on hyödyllistä jonkin ehdon perusteella rajata kuvan kokoa. Seuraavassa esimerkissä näytetään kuvan rajaus.
Code Block |
---|
function KuvaRajaus() I = 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 |
function KuvaRajaus()
I = imread('SuorakaiteitaErikulmissa.bmp');
...
...
figure;imshow(I);title('Alkuperäinen
...
kuva');
...
...
siirrosYsuunnassaAlas=10;
...
...
Yalku=1;
...
...
Yloppu=256;
...
...
siirrosXsuunnassaOikealle=222;
...
...
%I
...
=
...
I(10+
...
...
,222+
...
...
,
...
;
...
%
...
rajattu
...
kuva
...
...
Xalku=1;
...
...
Xloppu=256;
...
...
I=I(siirrosYsuunnassaAlas
...
...
,siirrosXsuunnassaOikealle
...
...
,
...
;
...
...
figure;imshow(I);title('Rajattu
...
kuva');
...
end
Code Block |
---|
Seuraava esimerkki rajaa kuvan alueen kuvassa olevien kappaleiden ympärille |
...
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(
...
);
...
%
...
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=
...
...
;
...
alakulma=
...
...
;
...
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);
Code Block |
---|