将轮廓简化为固定长度,以平滑多个帧

时间:2014-05-07 18:46:28

标签: opencv image-processing contour

我想在几帧上对从cv::findContours输出的简单形状轮廓进行时间平滑处理。最简单的方法是单独运动过滤每个点。但是,从一帧到另一帧的轮廓中的点没有保证的对应关系,因此平均值会使点跳跃。

我认为我想要的方法是将轮廓简化为N个均匀间隔的点,然后我可以对每个点进行帧到帧的运动过滤。但是,我找不到一个opencv轮廓简化方法,它将固定大小的轮廓作为输出。

我看到cv::approxPolyDP,正如其他问题中所建议的那样,但它没有针对固定大小。

2 个答案:

答案 0 :(得分:3)

首先,这样的功能在OpenCV中不存在。

其次,它并不像说的那么容易。假设您将使用"标准化轮廓近似一个完美的圆圈" 4点:你的算法应该把积分放在哪里? enter image description here

当然:实际上你可能不会看到这样的理想化问题,但你必须意识到它们。 (例如,如果您总是将第一个点放在轮廓的顶部,那么您将遇到类似星形结构的问题。您的起点可能会在恒星的两个顶角之间闪现。)

tl; dr它没有在OpenCV中实现,也可能是因为没有(简单/"正确")方式一致地放置点

答案 1 :(得分:3)

塞巴斯蒂安,谢谢你的观点。我意识到我的方法存在缺陷,然后采用基于隐式曲面的方法。

视频:https://www.youtube.com/watch?v=RKrylKFUceY

此处代码:https://github.com/dustinfreeman/smootour/