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

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

Матрица преобразования Хафа, H, is 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