houghlines

Извлеките линейные сегменты на основе Преобразования Хафа

Описание

пример

lines = houghlines(BW,theta,rho,peaks) линейные сегменты извлечений в изображении BW сопоставленный с конкретными интервалами в Преобразовании Хафа. theta и rho векторы, возвращенные функциональным houghpeaks матрица, возвращенная 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;

Найдите 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');

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

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

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

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

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

свернуть все

Бинарное изображение в виде 2D логической матрицы или 2D числовой матрицы. Для числового входа любые ненулевые пиксели считаются 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