houghlines

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

Синтаксис

lines = houghlines(BW,theta,rho,peaks)
lines = houghlines(___,Name,Value,...)

Описание

пример

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

пример

lines = houghlines(___,Name,Value,...) линейные сегменты извлечений в изображении BW, где именованные параметры влияют на операцию.

Примеры

свернуть все

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

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, неразреженный логический или числовой массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

Угол поворота строки в радианах, заданных как действительный, 2D, неразреженный логический или числовой массив.

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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