...
Code Block |
---|
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(:)); s = regionprops(L, 'all'); % 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); |