【发布时间】:2017-11-12 01:33:53
【问题描述】:
这里是输入图片5.png:
这是我的代码:
clear all; close all; clc;
%Input Image
A = imread('C:\Users\efu\Desktop\5.png');
% figure, imshow(A);
C=medfilt2(A,[3 5]);
% figure,imshow(C);
D=imfill(C);
% figure,imshow(D);
%Image obtained using MATLAB function 'edge'
E=edge(D,'canny',[0.01 .02],3);
figure, imshow(E); title('Image obtained using MATLAB function');
image=E;
img=im2bw(image);
% imshow(img)
se = strel('line',3,0);
zz = imerode(img,se);
figure, imshow(zz);
精明边缘检测后的输出:
侵蚀后:
这里的问题是,在侵蚀后所有水平边缘都被破坏了,但我不希望这样。除了要删除所有垂直线和对角线之外,我还想提取所有水平线而不会中断。
请有人修改代码。
【问题讨论】:
-
第一件事我没有大喊大叫。是的,它是相关的。并添加了 5.png。
-
我的两分钱:通过组合两个过滤器找到对角线,其中一个用于查找垂直线,另一个用于查找水平线。因此,当您移除其中一个过滤器时,它会产生不连续性。因此,最后一张图片上的线条被中断(w.r.t 上一张图片),因为对角线或垂直部分已被删除。
标签: matlab image-processing edge-detection morphological-analysis