matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务

matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务,第1张

你可以试试下面的程序:

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分割图像,然后进行区域处理、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9659119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存