我正在寻找一些想法来检测附加图像中的线条。假设线是垂直的,但它们的质量非常差,每条模糊线之间只有2-3个像素。
我已经尝试过这些方法: 侵蚀和放大器;垂直扩张 - >增强效果良好 CLAHE - >有益于增强 霍夫 - >将图像转换为Black&虽然会有太多断线或桥梁。 我也尝试了垂直线掩模。 基本上基于Black& White图像转换的方法将不适用于此。
答案 0 :(得分:12)
我会沿着线条折叠图像以获得1d轮廓。并在那里进行检测(例如,通过查看中位数上方的峰值。
以下是折叠后的图片
对象检测有明显的
答案 1 :(得分:3)
非常有前途的工作有关嘈杂图像中的微弱边缘检测: 直线的基本版本: http://www.wisdom.weizmann.ac.il/~meirav/EdgesGalunBasriBrandt.pdf 更高级的版本: http://www.wisdom.weizmann.ac.il/~meirav/Curves_Alpert_Galun_Nadler_Basri.pdf
我不确定作者是否公开提供他们的代码。在与作者直接联系时可能是值得的。
这些着作提出了一种经过深入研究和原则性的微弱边缘检测方法。
答案 2 :(得分:1)
这是一种替代方法,可以找到线条,假设峰值在~5像素内明显。它可以容忍图像的小旋转。
img = imread('http://i.stack.imgur.com/w7qMT.jpg');
img = rgb2gray(img);
%# smoothen the image a little with an anisotroic Gaussian
fimg = imfilter(double(img),fspecial('gaussian',[3 1]));
%# find the lines as local maxima
msk = ones(5);
msk(:,2:4) = 0;
lines = fimg > imdilate(fimg,msk);