Обнаружение линии
При обработке изображений обнаружение линий — это алгоритм, который берет набор из n краевых точек и находит все линии, на которых лежат эти краевые точки. [1] Наиболее популярными линейными детекторами являются методы, основанные на преобразовании Хафа и свертке . [2]
Преобразование Хафа
[ редактировать ]Преобразование Хафа [3] может использоваться для обнаружения линий, а выходные данные представляют собой параметрическое описание линий изображения, например ρ = r cos(θ) + c sin(θ). [1] Если в пространстве изображений на основе строк и столбцов есть линия, ее можно определить ρ, расстояние от начала координат до линии вдоль перпендикуляра к линии, и θ, угол проекции перпендикуляра от начала координат до линии. измеряется в градусах по часовой стрелке от положительной оси строки. Следовательно, линия на изображении соответствует точке пространства Хафа. [4] Таким образом, пространство Хафа для линий имеет эти два измерения θ и ρ, а линия представлена одной точкой, соответствующей уникальному набору этих параметров. Затем можно реализовать преобразование Хафа, выбрав для использования набор значений ρ и θ. Для каждого пикселя ( r , 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, результат приведен ниже. Исходное изображение находится вверху, а результат — под ним. Как видно на рисунке справа, были обнаружены только вертикальные линии.


clear all
clc
% this MATLAB program will only detect vertical lines in an image
building = imread('building.jpg'); % This will upload the image building
tol = 5; % define a tolerance in the angle to account for noise or edge
% that may look vertical but when the angle is computed
% it may not appear to be
[~, angle] = imgradient(building);
out = (angle >= 180 - tol | angle <= -180 + tol);
%this part will filter the line
out_filter = bwareaopen(out, 50);
figure, imshow(building), title('Original Image');
figure, imshow(out_filter), title('Detected Lines');
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с Умбо, Скотт Э. (2011). Цифровая обработка и анализ изображений: приложения человеческого и компьютерного зрения с CVIPtools (2-е изд.). Бока-Ратон, Флорида: CRC Press. ISBN 9781439802052 . OCLC 491888664 .
- ^ «Преобразование Хафа — хаф MATLAB» . www.mathworks.com . Проверено 23 апреля 2018 г.
- ^ «Обнаружение линии с помощью преобразования Хафа» (PDF) .
- ^ Ли, Фей-Фей (10 октября 2011 г.). «Поиск линий: от обнаружения до подбора модели» (PDF) . Стэнфордская лаборатория зрения.
- ^ Перейти обратно: а б «Обнаружение линии» . homepages.inf.ed.ac.uk . Проверено 23 апреля 2018 г.