Есть ли супер быстрый алгоритм для поиска линий на картинке?
Итак, у меня есть такое изображение
CG генерируется ванная комната http://www.de-viz.ru/catalog/new2/Holm/hvannaya.jpg
Я хочу получить что-то вроде этого (я нарисовал все линии, которые я хочу, но я надеюсь, что вы можете получить мою идею)
Мне нужен супер быстрый алгоритм для поиска всех прямых линий на нем. Я хотите дать параметры алгоритма, такие как минимальная длина и максимальное искажение линии. Я хочу получить относительно пиксельных координат изображения начальную и конечную точки линий.
Итак, на этой картинке, чтобы найти все линии между плитками и thouse 2 черные линии сверху.
поэтому мне нужен алгоритм для супер быстрого нахождения прямых линий разных цветов на картинке.
есть ли такой алгоритм? (супер пупер быстро=)
4 ответов
вам нужно использовать сложные методы обработки изображений, такие как Canny Edge Detection,Marr-Hildreth edge detection, Gaussian Filtering и Hough Transform и т. д.
но существование "супер быстрого" метода крайне маловероятно.
минимальная сложность большинства алгоритмов обработки изображений по крайней мере O(N^2)
.
под "супер быстрым" я имею в виду самое большее O(1)
;)
некоторые ссылки, которые могут помогите!--3-->
Я думаю, вам нужен преобразование Хафа или преобразование радона. Прочитайте статьи, которые я связал, и не стесняйтесь задавать любые вопросы:)
рассмотрим алгоритм контурных точек, описанный в http://outliner.codeplex.com/ Он будет производить векторно-описанные ребра в виде кривых Безье, организованных штрихами. Вам нужно некоторое усилие, чтобы выбрать самые прямые штрихи (конечные точки готовы к использованию). Этот алгоритм довольно быстрый, но не супер-пупер.
Я не знаю, насколько хорошо это будет работать в вашем приложении, но вы можете попробовать какой-то детекция подход. Не уверен, как преобразовать эти ребра в векторы, если это то, что вы ищете, но это может быть место для начала. Во всяком случае, некоторые алгоритмы обнаружения края (например,Дискретный Оператор Лапласа) довольно быстры в вычислительных архитектурах moderm.
О, и если вы это сделаете, вы, вероятно, захотите преобразовать изображение в YCbCr на и просто используйте компонент luma (Y). Это также быстрая операция