在图像上运行Canny边缘检测器后,我得到清晰的线条。但是当在Canny edgemap图像上运行时,Hough线功能似乎在相当突出的线上丢失了。 我只保留垂直和水平的Hough线(公差为15度)。很多额外的线条出现了,但是没有拾取明确可见的矩形边界线。
以下是片段:
cvCanny( img, canny, 0, 100, 3 );
lines = cvHoughLines2( canny, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 35, 20, 10 );
主要目的是检测表示链表节点的矩形框。但是,square.c示例程序将只检测完美的矩形,而不是箭头触及矩形边界。
你能否解释一下Hough线功能的变化,这将有助于我获得与Canny边缘图像中清晰可见线相对应的线条?
答案 0 :(得分:11)
(已添加:预处理步骤,由shernshiou建议。)
预处理步骤:
(备注。阈值处理步骤只是连接组件所需的预处理步骤。)
如果你想只检测完美的水平和垂直线,我的建议是在Hough变换之前执行水平和垂直边缘增强(通过卷积)。
这将使真实线条更容易在Hough投影中“达到峰值”,并增加OpenCV线拾取线的可能性。
步骤如下:
答案 1 :(得分:7)
你确实读过the documentation吗?
我有几个选择:
简而言之,请使用参数5,6和7的不同值再次尝试。
我会尝试参数5和7的较低值,以及6的相似或略高的值。由于2以上5应始终小于或等于6才能产生效果。如果5较低,则7应至少等于5和6之间的差值。
答案 2 :(得分:1)
通常人们不会直接使用霍夫线。通常的做法包括预处理图像(例如,改变亮度,改变颜色,锐化图像......)。