hough

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

Описание

пример

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

пример

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

Примеры

свернуть все

Считайте изображение и преобразуйте его в полутоновое изображение.

RGB = imread('gantrycrane.png');
I  = rgb2gray(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);

Считайте изображение и преобразуйте его в шкалу полутонов.

RGB = imread('gantrycrane.png');
I  = rgb2gray(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)

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

свернуть все

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

Пример: [H,T,R] = hough(BW);

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

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

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

Пример: [H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',0.5);

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

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

Значение Theta для соответствующего столбца выходной матрицы H, заданный как разделенная запятой пара, состоящая из 'Theta' и действительный, числовой вектор в области значений [-90, 90).

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

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

свернуть все

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

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

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

Алгоритмы

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

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

Переменная ро является расстоянием от источника до линии вдоль векторного перпендикуляра к линии. тета является углом перпендикулярной проекции от источника до линии, измеренной в градусах по часовой стрелке от положительной оси X. Область значений теты 90°θ<90°. Угол самой линии θ+90°, также измеренный по часовой стрелке относительно положительной оси X.

SHT является матрицей пространства параметров, строки и столбцы которой соответствуют ро и значениям теты соответственно. Элементы в SHT представляют ячейки аккумулятора. Первоначально, значение в каждой ячейке является нулем. Затем для каждой нефоновой точки в изображении ро вычисляется для каждой теты. ро округляется до самой близкой позволенной строки в 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