2

我正在尝试编写一个算法来找到从图像中每个像素到黑色边缘的最小距离。示例图像如下所示:

脸的边缘

这是目前有的算法:

从像素 (R,C) 开始,我检查 (R,C) 周围距离 R,C d=1 像素的每个像素。如果我没有击中黑色像素,那么我检查 (R,C) 周围的每个像素,即 d = 2 个像素远离 R,C ......并且这会继续(随着 d 增加)直到我找到一个黑色像素并且然后我计算 R,C 的欧几里得距离。请注意,我确保我检查的像素不超过图像的边界)。

但是,因为我对每个像素都这样做,所以算法非常慢。

有谁知道更快的方法来做到这一点?任何帮助将不胜感激。我正在使用 C++ 和 OpenCV 进行编码,因此任何使用这些的算法都将是首选。

4

2 回答 2

3

您要做的是找到图像的距离变换。您可以在函数中找到 OpenCV 实现distanceTransform。你会发现它相当快。

于 2013-09-15T20:05:35.787 回答
0

您可以对这项工作使用多线程,这会加快速度。

于 2013-09-15T20:03:36.647 回答