gpt4 book ai didi

计算由离散轮廓界定的 bin 集的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:26:46 26 4
gpt4 key购买 nike

在离散的基于网格的平面上(想想:图像的像素),我有一个封闭的轮廓,可以用以下方式表示:

  • 一组二维点(x1,y1);(x2,y2);(x3,y3);...
  • 或 4-连接 Freeman code ,起点为:(x1,y1) + 00001112...

我知道如何从这些表示中的一种切换到另一种。这将是输入数据。

我想获取由等高线界定 的一组网格坐标。考虑这个例子,其中红色坐标是轮廓,灰色坐标是起点:

Sample contour

如果灰度坐标在 (0,0) 处,那么我想要一个包含以下内容的向量:(1,1),(2,1),(3,1),(3,2)

顺序并不重要,输出向量也可以包含轮廓本身。

我选择的语言是 C++,但我对任何现有代码、算法、库、指针等都持开放态度...

我虽然可能CGAL会有这样的东西,但我不熟悉它并且无法通过手册找到我的方式,所以我什至不确定。我也看向了Opencv但我认为它没有提供这种算法(但我可能是错的?)。

我正在考虑找到边界矩形,然后检查矩形中的每个点以查看它们是否是 inside/outside ,但这似乎不是最理想的。有什么想法吗?

最佳答案

解决这个问题的一种方法是 drawContours ,并且您有等高线点。

  1. 创建空白 Mat 并绘制厚度 = 1(边界)的轮廓。
  2. 创建另一个空白 Mat 并绘制厚度 = CV_FILLED(整个区域包括边界)的轮廓。
  3. 现在bitwise_and在以上两个之间(你得到了不包括边界的填充区域)。
  4. 最后检查非零像素。

关于计算由离散轮廓界定的 bin 集的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252972/

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