houghlines

Извлечение сегментов линии на основе преобразования Хафа

Описание

пример

lines = houghlines(BW,theta,rho,peaks) извлекает сегменты линий на изображении BW связана с конкретными интервалами в преобразовании Хафа. theta и rho векторы возвращаются функцией hough. peaks - матрица, возвращенная houghpeaks функция, которая содержит координаты строки и столбца интервалов преобразования Хафа для использования при поиске сегментов линии. Значение возврата lines содержит информацию об извлеченных сегментах линии.

пример

lines = houghlines(___,Name,Value) использует аргументы пары "имя-значение" для управления различными аспектами извлечения линии.

Примеры

свернуть все

Чтение изображения в рабочую область.

I  = imread('circuit.tif');

Поверните изображение.

rotI = imrotate(I,33,'crop');

Создайте бинарное изображение.

BW = edge(rotI,'canny');

Создайте Преобразование Хафа с помощью бинарного изображения.

[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,...
            'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;

Figure contains an axes. The axes contains an object of type image.

Найдите peaks в преобразовании Хафа изображения.

P  = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');

Figure contains an axes. The axes contains 2 objects of type image, line.

Найти линии и построить их.

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), hold on
max_len = 0;
for k = 1:length(lines)
   xy = [lines(k).point1; lines(k).point2];
   plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

   % Plot beginnings and ends of lines
   plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
   plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

   % Determine the endpoints of the longest line segment
   len = norm(lines(k).point1 - lines(k).point2);
   if ( len > max_len)
      max_len = len;
      xy_long = xy;
   end
end

Figure contains an axes. The axes contains 37 objects of type image, line.

Выделите самый длинный сегмент линии, раскрасив его голубым.

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

Figure contains an axes. The axes contains 38 objects of type image, line.

Входные параметры

свернуть все

Бинарное изображение, заданное как 2-D логическая матрица или 2-D числовая матрица. Для числового входа любые ненулевые пиксели рассматриваются как 1 (true).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Угол поворота линии, в степенях, задается в виде числовой матрицы. Угол измеряется между осью x и rho вектор.

Типы данных: double

Расстояние от источника координат, заданное как числовая матрица. Источник координат является верхним левым углом изображения (0,0).

Типы данных: double

Координаты строка и столбец Преобразования Хафа интервалов, заданные в виде числовой матрицы.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);

Расстояние между двумя сегментами линии, сопоставленное с тем же интервалом преобразования Хафа, задается как положительное число. Когда расстояние между сегментами линии меньше заданного значения, houghlines функция объединяет сегменты линий в один сегмент линий.

Типы данных: double

Минимальная длина линии, заданная в виде положительного числа. houghlines отбрасывает линии, которые короче заданного значения.

Типы данных: double

Выходные аргументы

свернуть все

Обнаруженные линии, возвращенные как массив структур, длина которого равна количеству найденных объединенных сегментов линий. Каждый элемент массива структур имеет следующие поля:

Область

Описание

point1

Два элемента вектора [X Y] определение координат конечной точки сегмента линии

point2

Два элемента вектора [X Y] определение координат конечной точки сегмента линии

theta

Угол в степенях интервала преобразования Хафа

rho

rho положение оси интервала преобразования Хафа

Расширенные возможности

..

См. также

|

Представлено до R2006a