发布网友 发布时间:2022-04-21 18:52
共1个回答
热心网友 时间:2023-05-08 02:52
P=imread('test.jpg');
I=rgb2gray(P);%转换为灰度图像
I=edge(I,'robert','vertical');%用robert算子检测竖直方向的边缘
figure(1),subplot(1,2,1),imshow(I);
[m n]=size(I);
K=I;
w=9;%窗口宽度
thr=5;%选择是否连接的阈值,根据情况调整
left=ceil(w/2);
right=n-left;
for i=1:m
for j=left:right
if sum(I(i,(j-left+1):(j+left-1)))>=thr %将密度大于阈值的连接
K(i,(j-left+1):(j+left-1))=1;
end
end
end
figure(1),subplot(1,2,2),imshow(K);
% K为连接边界后的图像
se=strel('rectangle',[m,n]);
I=imopen(I,se);
%开运算
se=strel('rectangle',[3,2]);
I=imclose(I,se);
%闭运算
% [m,n]为选择的m*n运算矩阵
%也可以直接令se=[]自己想用的预算矩阵
%如[1 0 0;0 1 0;0 0 1];