如何以垂直角度在blob上采样线?(在Python/OpenCV中,除非你建议切换到别的东西)

use*_*339 7 python algorithm opencv computer-vision

我正在开发一个程序,它将跟踪二进制blob中心的点,类似于弯曲的五彩纸屑.稍后我将使用跟踪曲线的三次样条拟合这些点.

作为该计划的一部分,我需要:

- 创建一个2D矢量,对二进制图像中的斜线进行采样,

- 计算沿五彩纸屑斑点的每个位置使用的角度.

以下是图像的一些示例,以及跟踪的点可能如下所示的草图:

在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

找到黑色五彩纸屑垂直部分的中心很简单.如果你是黑色像素,找到左右白色边缘,中间是这些之间的距离的一半.这样做很容易,因为用于进行上述计算的2d向量只是图像的一行.

这是一个五彩纸屑片的10像素高度片段

在此输入图像描述

但五彩纸屑并不总是直线和垂直排列!有时它们是弯曲的或水平对齐的.这里需要的是一个二维矢量,它以一定角度切割五彩纸屑的截面. 从图像中采样这个有角度的矢量的最有效方法是什么?实际上,在像Python PIL或OpenCV这样的图像处理库中,是否有可以通过图像获取角度矢量的操作?如果我制作一个,我怎么能注意确保它有效?

计算所需向量角度的最有效方法是什么? 获得适当角度的一种方法是找到导致返回的2d向量中的最小宽度黑色段的角度.我不需要做到这一点,只需要以30度的增量循环360度.获得合适角度的另一种方法可能是找到五彩纸屑曲线的切线,并使用与之垂直的线 - 但是可能会更复杂.

任何关于如何更好地解决问题的想法都会非常有帮助.关于如何在图像上获取2d线的任何具体建议,以及获得垂直角度的有效方法也将是很好的.

在此输入图像描述

rem*_*emi 1

这看起来像轮廓细化或骨架。看看那个答案。甚至还有一个 Python 包的链接。