Есть ли супер быстрый алгоритм для поиска линий на картинке?

Итак, у меня есть такое изображение

CG генерируется ванная комната http://www.de-viz.ru/catalog/new2/Holm/hvannaya.jpg

Я хочу получить что-то вроде этого (я нарисовал все линии, которые я хочу, но я надеюсь, что вы можете получить мою идею)

черно-белый CG генерируется ванная комната с некоторыми красными линиями между плитками http://superior0.narod.ru/lines.jpg

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

Итак, на этой картинке, чтобы найти все линии между плитками и thouse 2 черные линии сверху.

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

есть ли такой алгоритм? (супер пупер быстро=)

4 ответов


вам нужно использовать сложные методы обработки изображений, такие как Canny Edge Detection,Marr-Hildreth edge detection, Gaussian Filtering и Hough Transform и т. д.

но существование "супер быстрого" метода крайне маловероятно.

минимальная сложность большинства алгоритмов обработки изображений по крайней мере O(N^2).

под "супер быстрым" я имею в виду самое большее O(1) ;)

некоторые ссылки, которые могут помогите!--3-->

  1. http://www.sci.utah.edu / ~cscheid/spr05 / обработка изображений / project4/
  2. http://www.contrib.andrew.cmu.edu / ~suppe / mobot/
  3. http://www.dunwich.org/baptiste/sic/ecms/ecpublis.html#2
  4. http://wayback.archive.org/web/20090304153603/http://hdebruijn.soo.dto.tudelft.nl/jaar2006/alders.htm

Я думаю, вам нужен преобразование Хафа или преобразование радона. Прочитайте статьи, которые я связал, и не стесняйтесь задавать любые вопросы:)


рассмотрим алгоритм контурных точек, описанный в http://outliner.codeplex.com/ Он будет производить векторно-описанные ребра в виде кривых Безье, организованных штрихами. Вам нужно некоторое усилие, чтобы выбрать самые прямые штрихи (конечные точки готовы к использованию). Этот алгоритм довольно быстрый, но не супер-пупер.


Я не знаю, насколько хорошо это будет работать в вашем приложении, но вы можете попробовать какой-то детекция подход. Не уверен, как преобразовать эти ребра в векторы, если это то, что вы ищете, но это может быть место для начала. Во всяком случае, некоторые алгоритмы обнаружения края (например,Дискретный Оператор Лапласа) довольно быстры в вычислительных архитектурах moderm.

О, и если вы это сделаете, вы, вероятно, захотите преобразовать изображение в YCbCr на и просто используйте компонент luma (Y). Это также быстрая операция