opencv - 从 OpenCV 中的边获取多边形

我有一张图像,我想使用霍夫线算法从(血管网络)中提取线条。首先我对图像进行预处理,然后使用 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

此方法为您提供一系列等高线,每个等高线都是一个点列表。一个点列表将代表您正在寻找的线段列表(它将代表一个轮廓,如果幸运的话它可能是一个多边形!)。

https://stackoverflow.com/questions/31392445/

相关文章:

matlab - 如何在 OpenCV 中进行网格插值 interp2

python-2.7 - 如何提高Python PIL的最终图像质量和清晰度?

opencv - 如何将Emgu::CV::Mat转换为OpenCV cv::Mat,反之亦然?

python - Spatstat:给定二维点列表,如何将它们连接到多边形中,并进一步使其成为研究区

java - OpenCV Java RGB还是HSV?

opencv - 在 OpenCV 图像拼接中混合伪影

android - javacv和opencv之间的转换以从Mat中获取均值和stdDev

android - 在OCR之后从Android中的图像检测字体颜色

opencv - 在 Opencv 中处理相机流,使用 FFMPEG 将其推送到 RTMP(NGIN

delphi - 当我尝试安装 Delphi-OpenCV。我得到 "%1 is not a val