gpt4 book ai didi

opencv - 如何使用代表点对复杂形状进行建模?

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:47 24 4
gpt4 key购买 nike

我想将此图像中的白色像素数量减少到输出图像中的一些候选点或代表点(目标是对不同类型的形状建模)

Input Image

Output Image

如果您只是将输出图像中的灰点连接在一起,您的路径相同但白色像素较少。这条路径应该只有一个起点和一个终点,并且涵盖从起点到终点的所有路径。

我可以使用 CCA(连通分量分析)和一些 if then else 规则来解决它!但它似乎很慢。

我需要这个算法来减少描述形状所需的像素数量。

这里最快和准确的算法是什么?

我也欢迎那些可以通过增加候选点来提高形状建模精度的方法。

最佳答案

  • 骨架化形状以获得单像素宽的路径(参见 https://en.wikipedia.org/wiki/Topological_skeleton)

  • 将路径表示为像素链。

  • 沿路径选择一定数量的像素,间隔均匀。

  • 通过这些点生成基数样条(参见 https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline )。三次样条也是可能的。

  • 对于样条的每个部分,估计图像中的路径与曲线之间的偏差。这可以通过沿曲线采样几个点并找到路径部分上的最近点(通过尝试所有像素)来完成。

  • 当偏差太大时,在该部分添加一个或多个像素。

  • 重新计算整个样条并重复,直到您不再需要插入点为止。

    [1]: /image/1IA enter image description here

通过调整偏差阈值,您可以用曲线平滑度来换取匹配精度。

可以避免重新计算未发生点插入的曲线,但这需要小心。

关于opencv - 如何使用代表点对复杂形状进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com