如何在不使对象角发散的情况下对对象进行细化或骨架化?

问题描述 投票:0回答:1

我有下面的图像,它代表一条路径。 enter image description here

我想在其上应用一种名为 HoughLines(P) 的算法。该算法应该检测线条和坐标。但首先我需要使路径变细,以便它成为 houghlinesp 的有效输入。

我想要的输出是这样的:

enter image description here

我尝试了 python scikit learn 库中的“细化”和“骨架化”算法。 我将在下面显示结果,但在图像底部,输出不是我所期望的。我看到 lee 的 skeletalize 方法产生的结果最接近我想要的输出,但它还不够好。 是否有不同的骨架化、细化或任何其他算法可以产生我想要的输出?

from skimage.morphology import skeletonize, thin

thinned = thin(thresholded)

enter image description here

skeleton = skeletonize(thresholded)

enter image description here

skeleton_lee = skeletonize(thresholded, method='lee')

enter image description here

opencv computer-vision scikit-image scikits
1个回答
3
投票

细化/骨架化不起作用,线条的霍夫变换也不起作用。不在那张照片上。

考虑使用透视变换将图像扭曲为自上而下的视图。从这个角度来看,上述方法可能有效,或者您可以使用其他可能更成功的方法。

您可以在自上而下的视图中定义矩形的四个角,并在相机视图中定义地面上具有相同比例的矩形的四个角。然后 OpenCV 的

getPerspectiveTransform
warpPerspective
完成剩下的工作。

编辑:在图像编辑器中手动透视变形。红线是辅助线。显然不完美,因为巨大的透视变形。

manual perspective warp in image editor

© www.soinside.com 2019 - 2024. All rights reserved.