Нахождение расстояния от пикселя до края

Я пытаюсь написать алгоритм, чтобы найти минимальное расстояние от каждого пикселя изображения до черного края. Пример изображения находится ниже:

края лица http://i43.tinypic.com/15p1imd.jpg

Этот алгоритм в настоящее время имеет:

Начиная с пикселя (R, C), я проверяю каждый пиксель вокруг (R, C), который находится на расстоянии d = 1 пикселей
от R, C. Если я не ударю по черному пикселю, то я проверяю каждый пиксель вокруг (R, C), который
d = 2 пикселя от R, C … и это продолжается (с увеличением d), пока я не найду
черный пиксель, а затем я рассчитываю евклидово расстояние от R, C. Обратите внимание, что я делаю
уверен, что пиксели, которые я проверяю, не выходят за границы изображения).

Однако, поскольку я делаю это для каждого пикселя, алгоритм очень медленный.

Кто-нибудь знает более быстрый способ сделать это? Любая помощь будет высоко оценена. Я пишу на C ++ и OpenCV, поэтому любой алгоритм, использующий их, будет предпочтительным.

1

Решение

Что вы хотите сделать, это найти преобразование расстояния изображения. Вы можете найти реализацию OpenCV Вот. Вы обнаружите, что это довольно быстро.

2

Другие решения

Вы можете использовать многопоточность для этой работы, которая немного ускорит его.

0

По вопросам рекламы [email protected]