我正在尝试编写一种算法来查找图像中每个像素到黑色边缘的最小距离。下面是一个示例图片:
edges of face http://i43.tinypic.com/15p1imd.jpg
这是目前的算法:
从像素(R,C)开始,我检查距离d = 1像素的(R,C)周围的每个像素 来自R,C。如果我没有击中黑色像素,那么我会检查(R,C)周围的每个像素 d =距离R,C ...... 2个像素,这继续(d增加)直到找到a 黑色像素然后我从R,C计算欧几里德距离。请注意我正在制作 确保我检查的像素不超过图像的边界。)
但是因为我为每个像素执行此操作,所以算法非常慢。
有谁知道更快的方法吗?任何帮助将受到高度赞赏。我使用C ++和OpenCV进行编码,因此任何使用这些算法的算法都是首选。
答案 0 :(得分:2)
您要做的是找到图像的distance transform。您可以找到OpenCV实现here。你会发现它很快。
答案 1 :(得分:0)
你可以使用多线程来完成这项工作,这会加快它的速度。