7

Мне нужно извлечь ВСЕ Стеновые кромки (включая пол, пересечения стен и стены, перекрестки дверей) со следующего изображения. Если я использую определение canny и преобразование hough (вероятностное). Это дает мне много избыточных и ненужных строк. Я смотрел, могу ли я усовершенствовать канимое изображение до того, как на нем будет запущено преобразование.Надежное извлечение линии из изображения

входного изображения Input Image

Это Ниже приводится осторожное изображения задается алгоритмом осторожного обнаружения
я использую Канни параметры, как на 0,20 мин и макс порога. Я не могу использовать очень высокое значение для максимального порога, иначе я потеряю края стены, но градиент будет там ниже по сравнению с остальной частью изображения.
Normal Canny Image

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

Следующее изображение, полученное после этого. Вы можете видеть, что края стены сохранены. Modified Canny Image

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

ответ

7

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

SimpleCV - это просто библиотека ярлыков, включающая функции OpenCV, вам не нужно ее использовать. Я не думаю, что вы столкнетесь с проблемами реализации алгоритма после получения идеи.

Редактировать: Хорошо, я больше думал о вашей проблеме. Установка кластеров в ноль как шаг предварительной обработки на самом деле неплохая. Как насчет увеличения размера окна шаг за шагом? Я имею в виду, получив второе изображение, примените еще один кластерный фильтр с размером окна 2 *, тем же порогом. Я думаю, вы можете продолжать так, так как края стены трудно отменить.

Другой способ: использовать прямоугольное окно (ширина> = 5 * высота) для фильтрации кластеров, поскольку вам нужны вертикальные края.

Другой способ, играть с эрозией и расширением и отфильтровывать капли, имеющие большую площадь.

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

+0

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

+0

, почему бы вам не подумать о простом распознавании цвета стены? получить Wall HSV из верхнего левого или правого угла, затем отфильтровать пиксели, имеющие разницу оттенков> некоторый порог. Тогда фильтр нижних частот (гауссовское размытие) или расширение изображения должно хорошо работать. – baci

+0

неравномерно на границах = вот почему вы должны растягиваться + эрозировать, морфологически близко. разные цвета = не проблема, если вы берете цвет из угла изображения. условия молнии = выравнивание гистограммы. Вот все, что у меня есть здесь :) – baci