Matlab将图像按一定大小进行分割
期末图像处理课设需要读取一副遥感图像的道路信息,由于遥感图像太大,做实验时耗时太长,cpu也顶不住,所以将图像按一定大小切割。
%%I需要处理的图像,heigh输出图像高度,length输出图像长度,strout输出文件夹
function cut2piece(I,heigh,length,StrOut)
[l,m,~]=size(I);
x_0=1;
y_0=1;
i=1;
while(1)
x_end=x_0+length;
y_end=y_0+heigh;
if (x_0<m&&y_0<l&&x_end<=m&&y_end<=l)
pic=imcrop(I,[x_0,y_0,length,heigh]);
imwrite(pic,[StrOut '\' num2str(i) '.jpg']);
x_0=x_end;
i=i+1;
continue
end
if(x_0<m&&y_0<l&&x_end>m&&y_end<=l)
pic=imcrop(I,[x_0,y_0,m-x_0,heigh]);
imwrite(pic,[StrOut '\' num2str(i) '.jpg']);
x_0=1;
y_0=y_end;
i=i+1;
continue
end
if(x_0<m&&y_0<l&&x_end<=m&&y_end>l)
pic=imcrop(I,[x_0,y_0,length,l-y_0]);
imwrite(pic,[StrOut '\' num2str(i) '.jpg']);
x_0=x_end;
i=i+1;
continue
end
if(x_0<m&&y_0<l&&x_end>m&&y_end>l)
pic=imcrop(I,[x_0,y_0,m-x_0,l-y_0]);
imwrite(pic,[StrOut '\' num2str(i) '.jpg']);
i=i+1;
break
end
end
end