exponenta event banner

hough

Преобразование Хафа

Описание

пример

[H,theta,rho] = hough(BW) вычисляет стандартное преобразование потока (SHT) двоичного изображения BW. hough функция предназначена для обнаружения линий. Функция использует параметрическое представление линии: rho = x*cos(theta) + y*sin(theta). Функция возвращает rho, расстояние от начала до линии вдоль вектора, перпендикулярного линии, и theta, угол в градусах между осью X и этим вектором. Функция также возвращает SHT, H, которая является матрицей пространства параметров, строки и столбцы которой соответствуют значениям rho и theta соответственно. Дополнительные сведения см. в разделе Алгоритмы.

пример

[H,theta,rho] = hough(BW,Name,Value) вычисляет SHT двоичного изображения BW использование аргументов пары имя-значение для влияния на вычисление.

Примеры

свернуть все

Прочитайте изображение и преобразуйте его в изображение в оттенках серого.

RGB = imread('gantrycrane.png');
I  = im2gray(RGB);

Извлечь ребра.

BW = edge(I,'canny');

Вычислите преобразование Хафа.

[H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',-90:0.5:89);

Отображение исходного изображения и матрицы Хафа.

subplot(2,1,1);
imshow(RGB);
title('gantrycrane.png');
subplot(2,1,2);
imshow(imadjust(rescale(H)),'XData',T,'YData',R,...
      'InitialMagnification','fit');
title('Hough transform of gantrycrane.png');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(gca,hot);

Figure contains 2 axes. Axes 1 with title Hough transform of gantrycrane.png contains an object of type image. Axes 2 with title gantrycrane.png contains an object of type image.

Прочитайте изображение и преобразуйте его в градации серого.

RGB = imread('gantrycrane.png');
I  = im2gray(RGB);

Извлечь ребра.

BW = edge(I,'canny');

Вычислите преобразование Хафа в ограниченном диапазоне углов.

[H,T,R] = hough(BW,'Theta',44:0.5:46);

Отображение преобразования Хафа.

figure
imshow(imadjust(rescale(H)),'XData',T,'YData',R,...
   'InitialMagnification','fit');
title('Limited Theta Range Hough Transform of Gantrycrane Image');
xlabel('\theta')
ylabel('\rho');
axis on, axis normal;
colormap(gca,hot)

Figure contains an axes. The axes with title Limited Theta Range Hough Transform of Gantrycrane Image contains an object of type image.

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

свернуть все

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

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

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

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

Пример: 'RhoResolution',0.5

Интервал между ячейками преобразования Хафа вдоль оси rho, определяемый как разделенная запятыми пара, состоящая из 'RhoResolution' и положительное число от 0 до norm(size(BW)), эксклюзивно.

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

Значения тета для SHT, указанные как разделенная запятыми пара, состоящая из 'Theta' и числовой вектор с элементами в диапазоне [-90, 90).

Пример: -90:0.5:89.5

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

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

свернуть все

Матрица преобразования, возвращаемая как числовая матрица размера nrho-by-ntheta. Строки и столбцы соответствуют rho и theta значения. Дополнительные сведения см. в разделе Алгоритмы.

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

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

Расстояние от начала до линии вдоль вектора, перпендикулярного линии, возвращаемое в виде числового массива класса double. Дополнительные сведения см. в разделе Алгоритмы.

Алгоритмы

Стандартное преобразование потока (SHT) использует параметрическое представление линии:

rho = x*cos(theta) + y*sin(theta)

Переменная rho - это расстояние от начала до прямой вдоль вектора, перпендикулярного прямой. theta - угол перпендикулярной проекции от начала к линии, измеренный в градусах по часовой стрелке от положительной оси X. Диапазон тета - -90 ° ≤ Угол самой линии - θ + 90 °, также измеряемые по часовой стрелке относительно положительной оси X.

SHT - матрица пространства параметров, строки и столбцы которой соответствуют значениям rho и theta соответственно. Элементы в SHT представляют собой аккумуляторные ячейки. Первоначально значение в каждой ячейке равно нулю. Затем для каждой не фоновой точки изображения вычисляется rho для каждой теты. rho округляется до ближайшей разрешенной строки в SHT. Эта аккумуляторная ячейка увеличивается. В конце этой процедуры значение Q в SHT (r, c) означает, что точки Q в плоскости xy лежат на линии, заданной тета (c) и ро (r). Пиковые значения в SHT представляют потенциальные линии во входном изображении.

Матрица преобразования Хафа, H, является nrho-by-ntheta, где:

nrho = 2*(ceil(D/RhoResolution)) + 1, и
D = sqrt((numRowsInBW - 1)^2 + (numColsInBW - 1)^2).
rho значения находятся в диапазоне от -diagonal кому diagonal, где
diagonal = RhoResolution*ceil(D/RhoResolution).

ntheta = length(theta)

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

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