Обнаружение линии - Line detection

При обработке изображений обнаружение линии это алгоритм, который берет набор из n крайние точки и находит все линии, на которых лежат эти краевые точки.[1] Самыми популярными линейными детекторами являются Преобразование Хафа и свертка -основанные техники.[2]

Преобразование Хафа

В Преобразование Хафа[3] может использоваться для обнаружения линий, и на выходе получается параметрическое описание линий в изображении, например, ρ = r cos (θ) + c sin (θ).[1] Если есть линия в пространстве изображения на основе строки и столбца, это может быть определено ρ, расстояние от начала координат до линии вдоль перпендикуляра к линии, и θ, угол перпендикулярной проекции от начала координат к линии. измеряется в градусах по часовой стрелке от положительной оси ряда. Следовательно, линия на изображении соответствует точке в пространстве Хафа.[4] Таким образом, пространство Хафа для линий имеет эти два измерения θ и ρ, и линия представлена ​​одной точкой, соответствующей уникальному набору этих параметров. Затем можно реализовать преобразование Хафа, выбрав для использования набор значений ρ и θ. Для каждого пикселя (р, c) на изображении, вычислите r cos (θ) + c sin (θ) для каждого значения θ и поместите результат в соответствующую позицию в массиве (ρ, θ). В конце, значения (ρ, θ) с самыми высокими значениями в массиве будут соответствовать самым сильным линиям на изображении.

Свертка -основанная техника

В свертка На основе метода оператор линейного детектора состоит из масок свертки, настроенных на обнаружение линий определенной ширины n и ориентации θ. Вот четыре маски свертки для обнаружения горизонтальных, вертикальных, наклонных (+45 градусов) и наклонных (-45 градусов) линий на изображении.

а) Горизонтальная маска (R1)

−1−1−1
222
−1−1−1

(б) Вертикальный (R3)

−12−1
−12−1
−12−1

(C) Наклонный (+45 градусов) (R2)

−1−12
−12−1
2−1−1

(d) Наклонный (-45 градусов) (R4)

2−1−1
−12−1
−1−12

[5]

На практике изображение накладывается на маски, а ответы объединяются по следующему уравнению:

R (x, y) = max (| R1 (x, y) |, | R2 (x, y) |, | R3 (x, y) |, | R4 (x, y) |)

Если R (x, y)> T, то разрыв

Как видно ниже, если маска наложена на изображение (горизонтальная линия), умножьте совпадающие значения и просуммируйте все эти результаты, на выходе будет (свернутое изображение). Например, (−1) (0) + (- 1) (0) + (- 1) (0) + (2) (1) + (2) (1) + (2) (1) + (- 1) (0) + (- 1) (0) + (- 1) (0) = 6 пикселей во второй строке, втором столбце в (свернутом изображении), начиная с верхнего левого угла горизонтальных линий.[1] стр.82

Пример

Горизонтальная линиясвернутое изображение
0000----
1111=-66-
Маска*0000----
−1−1−1
222
−1−1−1
*Вертикальная линиясвернутое изображение
0010----
0010=-00-
0010----

Эти маски выше настроены для светлых линий на темном фоне и дадут большой негативный ответ темным линиям на светлом фоне.[5]

Пример кода

Код использовался для обнаружения только вертикальных линий на изображении с помощью Matlab, и результат ниже. Исходное изображение находится вверху, а результат - под ним. Как видно на картинке справа, были обнаружены только вертикальные линии.

Исходное изображение
обнаружение линии
Чисто всеclc% эта программа MATLAB будет обнаруживать только вертикальные линии на изображениистроительство = я читал('building.jpg'); % Это загрузит изображение зданиятол = 5; % определяет допуск по углу для учета шума или кромки        %, который может выглядеть вертикально, но если угол вычислен        % может показаться, что это не так[~, угол] = непреодолимый(строительство);из = (угол >= 180 - тол | угол <= -180 + тол);% эта часть будет фильтровать строкуout_filter = bwareaopen(из, 50);фигура, imshow(строительство), заглавие('Исходное изображение');фигура, imshow(out_filter), заглавие('Обнаруженные линии');

Смотрите также

Рекомендации

  1. ^ а б c Умба, Скотт Э. (2011). Цифровая обработка и анализ изображений: приложения человеческого и компьютерного зрения с CVIPtools (2-е изд.). Бока-Ратон, Флорида: CRC Press. ISBN  9781439802052. OCLC  491888664.
  2. ^ «Преобразование Хафа - MATLAB hough». www.mathworks.com. Получено 2018-04-23.
  3. ^ «Обнаружение линии с помощью преобразования Хафа» (PDF).
  4. ^ Ли, Фей-Фэй (10 октября 2011 г.). «Поиск линий: от обнаружения до подгонки модели» (PDF). Стэнфордская лаборатория видения.
  5. ^ а б «Обнаружение линии». homepages.inf.ed.ac.uk. Получено 2018-04-23.