我有一张图像,我想使用霍夫线算法从(血管网络)中提取线条。首先我对图像进行预处理,然后使用 Canny 边缘检测生成二值图像。
我想要一个多边形/一组连接的线段来表示血管网络的形状。然而,直接在该图像上应用霍夫线变换会产生平庸的结果,部分原因是边缘检测意味着每条血管在每一侧都由两条线表示,而不是一条线。
我对 OpenCV 和一般的图像处理不熟悉,所以我可能会以错误的方式处理这个问题。有什么建议或推荐的文献吗?
最佳答案
我建议不要使用 Canny 边缘检测。
相反,首先使用二进制阈值来获取血管网络的二进制图像(有关应用二进制阈值的信息,请参阅 http://docs.opencv.org/3.1.0/d7/d4d/tutorial_py_thresholding.html#gsc.tab=0)。然后,“打开”的像素应该是网络内部的点,“关闭”的像素应该是外部的点。
然后使用 findContours 方法:
http://opencvexamples.blogspot.com/2013/09/find-contour.html
此方法为您提供一系列等高线,每个等高线都是一个点列表。一个点列表将代表您正在寻找的线段列表(它将代表一个轮廓,如果幸运的话它可能是一个多边形!)。
关于opencv - 从 OpenCV 中的边获取多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31392445/