最大的问题是每条线的像素太少(我将在下面详细解释)。我会考虑拉伸,然后稍微扩大你的原始图像:
file='http://i.stack.imgur.com/LmIJJ.png';
I=imread(file);
I=imcrop(I,[1 206 size(I,2) size(I,1)]);
I=imresize(I,[size(I,1) 256]);
I=imdilate(I,strel('line',1,0));
我假设您在 、 和 上使用 Mathworks 中的hough示例houghlines代码houghpeaks。问题是图像中的一个斜率上没有很多像素。你觉得它是一条线,但它实际上是一条由许多不同方向的短线组成的曲线。我认为您需要调整的一个参数是'FillGap'将非常短的段连接起来。我试过:
lines = houghlines(BW,T,R,P,'FillGap',30,'MinLength',15);
我得到的图像:


仍有很大的改进空间,但至少检测到了大多数行。
请注意,霍夫峰中的 theta 轴表示线的斜率,您也可以从lines、T和中检查它们R。但是由于图像已经沿着原始数据的第二维拉伸,如果您打算获得那些检测到的线的斜率,您可能需要将它们缩小(通过一些切线变换)。
希望对你有帮助,谢谢。