matlab图像分块,边缘检测,图像拼接代码

对一幅6141×4839的图像因为太大不能直接进行边缘检测,轻微如何用代码完成图像的分割、边缘检测、拼接的任务呢?能有完整代码更好哦,谢谢大家!

第1个回答  推荐于2018-10-18
你可以试试下面的程序:
I=imread('myphoto.jpg'); % 假设要处理的图像是myphoto.jpg
heights=size(I,1); % 图像的高
widths=size(I,2); % 图像的宽
m=8; % 假设纵向分成8幅图
n=10; % 假设横向分成10幅图
% 考虑到rows和cols不一定能被m和n整除,所以对行数和列数均分后要取整
rows=round(linspace(0,heights,m+1)); % 各子图像的起始和终止行标
cols=round(linspace(0,widths,n+1)); % 各子图像的起始和终止列标
blocks=cell(m,n); % 用一个单元数组容纳各个子图像
for k1=1:m
for k2=1:n
blocks{k1,k2}=I(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:);
subimage=blocks{k1,k2};
% 以下是对subimage进行边缘检测
% 加入边缘检测的代码
% 以上是对subimage进行边缘检测
blocks{k1,k2}=subimage;
end
end
processed=I; % processed为处理后的图像,用原图像对其初始化
% 以下为拼接图像
for k1=1:m
for k2=1:n
processed(rows(k1)+1:rows(k1+1),cols(k2)+1:cols(k2+1),:)=blocks{k1,k2};
end
end
figure,imshow(processed)
% 以上的程序已测试过,对灰度图像和真彩图像都可以运行。本回答被提问者和网友采纳
相似回答