Я пытаюсь написать алгоритм, чтобы найти минимальное расстояние от каждого пикселя изображения до черного края. Пример изображения находится ниже:
края лица 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, поэтому любой алгоритм, использующий их, будет предпочтительным.
Что вы хотите сделать, это найти преобразование расстояния изображения. Вы можете найти реализацию OpenCV Вот. Вы обнаружите, что это довольно быстро.
Вы можете использовать многопоточность для этой работы, которая немного ускорит его.