我在这里有一个问题,我真的无法以简单的方式解决。也许有人可以帮助我从不同的角度看待这一点。基本上,我有两个大小相同的x和y矩阵坐标。第一个(掩码)包含只有两个不同值的像素:-1 和 0。第二个(标签)可以包含具有整数值(从 1 到 1000)的像素。
这两个矩阵的表示如下:
- 掩码表示构成不同超像素轮廓的像素:如果 -1 我们在边界上,否则为 0。
- 在标签矩阵中,每个标签代表一个超像素,每个像素都分配给一个超像素标签。
我的目标是结合这两个矩阵,为每个超像素创建相关的凹多边形来提取他的顶点。
到目前为止,我的解决方案是:
- 创建字典:键是表示超像素的标签,值是包含超像素轮廓像素的数组。
- 运行 ConvexHull 以查找字典每个键的凸多边形。
- 对于我找到的每个凸多边形,运行一个算法来检测与凹相关的多边形(https://github.com/sadaszewski/concaveman-cpp)。
不幸的是,我对这个解决方案不够精确,因为结果可能与原始超像素不同。
两个矩阵的简单示例:
标签:
1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 2 | 2 | 2 | 1 | 1 |
1 | 1 | 2 | 2 | 2 | 1 | 1 |
1 | 1 | 2 | 2 | 2 | 1 | 1 |
面具:
-1 | -1 | -1 | -1 | -1 | -1 | -1 |
---|---|---|---|---|---|---|
-1 | -1 | 0 | 0 | 0 | 0 | -1 |
-1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1 | -1 | -1 | 0 | -1 | -1 | -1 |
-1 | -1 | -1 | -1 | -1 | -1 | -1 |
非常感谢您的帮助!