Обнаружение линии - Line detection
При обработке изображений обнаружение линии это алгоритм, который берет набор из n крайние точки и находит все линии, на которых лежат эти краевые точки.[1] Самыми популярными линейными детекторами являются Преобразование Хафа и свертка -основанные техники.[2]
Преобразование Хафа
В Преобразование Хафа[3] может использоваться для обнаружения линий, и на выходе получается параметрическое описание линий в изображении, например, ρ = r cos (θ) + c sin (θ).[1] Если есть линия в пространстве изображения на основе строки и столбца, это может быть определено ρ, расстояние от начала координат до линии вдоль перпендикуляра к линии, и θ, угол перпендикулярной проекции от начала координат к линии. измеряется в градусах по часовой стрелке от положительной оси ряда. Следовательно, линия на изображении соответствует точке в пространстве Хафа.[4] Таким образом, пространство Хафа для линий имеет эти два измерения θ и ρ, и линия представлена одной точкой, соответствующей уникальному набору этих параметров. Затем можно реализовать преобразование Хафа, выбрав для использования набор значений ρ и θ. Для каждого пикселя (р, c) на изображении, вычислите r cos (θ) + c sin (θ) для каждого значения θ и поместите результат в соответствующую позицию в массиве (ρ, θ). В конце, значения (ρ, θ) с самыми высокими значениями в массиве будут соответствовать самым сильным линиям на изображении.
Свертка -основанная техника
В свертка На основе метода оператор линейного детектора состоит из масок свертки, настроенных на обнаружение линий определенной ширины n и ориентации θ. Вот четыре маски свертки для обнаружения горизонтальных, вертикальных, наклонных (+45 градусов) и наклонных (-45 градусов) линий на изображении.
а) Горизонтальная маска (R1)
−1 | −1 | −1 |
2 | 2 | 2 |
−1 | −1 | −1 |
(б) Вертикальный (R3)
−1 | 2 | −1 |
−1 | 2 | −1 |
−1 | 2 | −1 |
(C) Наклонный (+45 градусов) (R2)
−1 | −1 | 2 |
−1 | 2 | −1 |
2 | −1 | −1 |
(d) Наклонный (-45 градусов) (R4)
2 | −1 | −1 |
−1 | 2 | −1 |
−1 | −1 | 2 |
На практике изображение накладывается на маски, а ответы объединяются по следующему уравнению:
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
Пример
Горизонтальная линия | свернутое изображение | |||||||||||
0 | 0 | 0 | 0 | - | - | - | - | |||||
1 | 1 | 1 | 1 | = | - | 6 | 6 | - | ||||
Маска | * | 0 | 0 | 0 | 0 | - | - | - | - | |||
−1 | −1 | −1 | ||||||||||
2 | 2 | 2 | ||||||||||
−1 | −1 | −1 | ||||||||||
* | Вертикальная линия | свернутое изображение | ||||||||||
0 | 0 | 1 | 0 | - | - | - | - | |||||
0 | 0 | 1 | 0 | = | - | 0 | 0 | - | ||||
0 | 0 | 1 | 0 | - | - | - | - |
Эти маски выше настроены для светлых линий на темном фоне и дадут большой негативный ответ темным линиям на светлом фоне.[5]
Пример кода
Код использовался для обнаружения только вертикальных линий на изображении с помощью Matlab, и результат ниже. Исходное изображение находится вверху, а результат - под ним. Как видно на картинке справа, были обнаружены только вертикальные линии.
Чисто всеclc% эта программа MATLAB будет обнаруживать только вертикальные линии на изображениистроительство = я читал('building.jpg'); % Это загрузит изображение зданиятол = 5; % определяет допуск по углу для учета шума или кромки %, который может выглядеть вертикально, но если угол вычислен % может показаться, что это не так[~, угол] = непреодолимый(строительство);из = (угол >= 180 - тол | угол <= -180 + тол);% эта часть будет фильтровать строкуout_filter = bwareaopen(из, 50);фигура, imshow(строительство), заглавие('Исходное изображение');фигура, imshow(out_filter), заглавие('Обнаруженные линии');
Смотрите также
Рекомендации
- ^ а б c Умба, Скотт Э. (2011). Цифровая обработка и анализ изображений: приложения человеческого и компьютерного зрения с CVIPtools (2-е изд.). Бока-Ратон, Флорида: CRC Press. ISBN 9781439802052. OCLC 491888664.
- ^ «Преобразование Хафа - MATLAB hough». www.mathworks.com. Получено 2018-04-23.
- ^ «Обнаружение линии с помощью преобразования Хафа» (PDF).
- ^ Ли, Фей-Фэй (10 октября 2011 г.). «Поиск линий: от обнаружения до подгонки модели» (PDF). Стэнфордская лаборатория видения.
- ^ а б «Обнаружение линии». homepages.inf.ed.ac.uk. Получено 2018-04-23.