Moa*_*sry 7 opencv edge-detection
在应用canny边缘检测后的openCV中,我想进一步处理结果(仅显示水平线,删除短线等).但是canny的结果只是另一个形象.我想获得一系列描述检测到边缘的线条
我知道着名的Hough Line变换,但结果并不总是好的,这就是为什么我想手动处理canny结果.输入:

仅输出canny:

输出canny然后Hough线变换

这是用于检测楼梯边缘的霍夫线变换结果(红线).尽管canny边缘检测到边缘,但未正确检测到下方的第4行.
知道如何从canny图像中提取边缘吗?
mev*_*ron 15
您可以尝试一些改进结果的方法:
您的图像看起来有一些边界窗口效果.我用一个感兴趣的区域删除它们,得到一个看起来像这样的图像(我调整它直到看起来正确,但如果你使用某种内核操作符,它的窗口大小可能更好地定义了这个ROI):

你似乎也在使用概率Hough变换.因此,您只获得线段而不是插值线.考虑使用标准变换来获得完整的理论线(rho,theta).这样做我得到了如下图所示的图像:

这是我用来生成行的代码片段(来自Python界面):
(mu, sigma) = cv2.meanStdDev(stairs8u)
edges = cv2.Canny(stairs8u, mu - sigma, mu + sigma)
lines = cv2.HoughLines(edges, 1, pi / 180, 70)
Run Code Online (Sandbox Code Playgroud)
您可以通过采用最常出现的线角度并丢弃异常值来过滤掉不良线条.这应该缩小到最明显的步骤.
希望有所帮助!
我建议使用LSWMS(使用加权平均移位的线段检测)方法.它的结果优于HT和PPHT.
请参阅 http://marcosnietoblog.wordpress.com/2012/04/28/line-segment-detection-opencv-c-source-code 和 http://www.youtube.com/watch?v=YYeX8IGOAxw
| 归档时间: |
|
| 查看次数: |
19787 次 |
| 最近记录: |