OpenCV C++,找到描述物体形状的方程

Posted

技术标签:

【中文标题】OpenCV C++,找到描述物体形状的方程【英文标题】:OpenCV C++, find the equation describing the shape of an object 【发布时间】:2016-08-25 22:22:49 【问题描述】:

Thresholded Image

BGR Image

Fitted Thresholded Image

大家好。我正在开发一个使用 OpenCV for C++ 接口的计算机视觉项目。我的目的是跟踪标有彩色胶带的移动可变形物体。通过处理视频的每一帧,我能够有效地隔离颜色(如您在阈值图像中所见)并将其轨迹、运动和形状跟踪到 BGR 图像中。 我的问题是我需要外推一个方程或多项式来描述我的跟踪对象所采用的当前形状。 有没有有效的方法来做到这一点?我不知道如何解决这个问题。

提前致谢,

干杯!

【问题讨论】:

【参考方案1】:

如果您的最终目标是检测各种形式的形状,我想您想了解一下 Active shape 模型:https://en.wikipedia.org/wiki/Active_shape_model

如果您只想在每个时间实例中获得形状的多项式拟合,我会使用 Cherkesgiller Tural 的建议并阅读有关 2D 曲线拟合的信息。

【讨论】:

感谢您的回答。我添加了一张新图片,所以也许我可以更好地解释我想要做什么。基本上,我想要一些能从数学的角度不断映射我的对象形状的东西,一些能返回曲线方程的东西(我在拟合的阈值图像中画了一条红色曲线只是为了更明确)我跟踪的对象所呈现的形状。 所以你应该看看我的回答中的第二个选项 2d 曲线拟合。对于用于曲线拟合的 c++ 库,请查看 alglib.net/interpolation/leastsquares.php【参考方案2】:

如果我理解正确:

我会开始在你的形状上拟合一个多边形。一个常用的方法是alpha-shapes。

您还可以尝试一种非常强大的优化方法,因为您基本上可以随心所欲地设计成本函数和约束。但它的计算成本非常高(取决于算法)。

看看这个thread:它可能对你有帮助。

【讨论】:

感谢您的回答。我添加了一张新图片,所以也许我可以更好地解释我想要做什么。基本上,我想要一些能从数学的角度不断映射我的对象形状的东西,一些能返回曲线方程的东西(我在拟合的阈值图像中画了一条红色曲线只是为了更明确)我跟踪的对象所呈现的形状。

以上是关于OpenCV C++,找到描述物体形状的方程的主要内容,如果未能解决你的问题,请参考以下文章

opencv 如何检测特定形状的物体

[OpenCV实战]9 使用OpenCV寻找平面图形的质心

pyhton—opencv直线检测(HoughLines)找到最长的一条线

pyhton—opencv直线检测(HoughLines)找到最长的一条线

使用 OpenCV 检测图像中已知形状/对象的方法

使用OpenCV实时检测不同形状的交通标志