exponenta event banner

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.

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

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