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