你可以试试下面的程序:
I=imread('myphotojpg'); % 假设要处理的图像是myphotojpg
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)
% 以上的程序已测试过,对灰度图像和真彩图像都可以运行。
clear all;
clc;
str='picturename';%这个地方改成你的的名称记得加上路径
img=imread([str,'jpg']);%读图像
img=rgb2gray(img)%变成灰度图像
level = graythresh(img);
bw=im2bw(img,level);%变成二值话
[row col]=size(bw);
%完成二值化 下面是要找到分割的坐标 注意是在img 上进行分割 产生单独的保存出来 任务就完成了
%这个是分成列
result1=sum(bw,2);%对每行求和得到列向量
[val ind]=max(result1);%返回最大的和 的下标,ind 即为焊接缝隙
因为黑色是0 白色是1 所以对行求和最大的值出现的地方就是焊接的缝隙
有什么不懂的你可以回复我,祝好!
以上就是关于matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务全部的内容,包括:matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务、用MATLAB分割图像,然后进行区域处理、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)