Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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+

...

256

...

,222+

...

256

...

,

...

(smile);

...

%

...

rajattu

...

kuva

...


   

...

Xalku=1;

...


   

...

Xloppu=256;

...


   

...

I=I(siirrosYsuunnassaAlas

...

Yloppu

...

,siirrosXsuunnassaOikealle

...

Xloppu

...

,

...

(smile);

...


   

...

figure;imshow(I);title('Rajattu

...

kuva');

...


end

Code Block
Seuraava esimerkki rajaa kuvan alueen kuvassa olevien kappaleiden ympärille

...

code




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(

...

(smile));

...


%

...

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);

Code Block