hough

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

Синтаксис

[H,theta,rho] = hough(BW)
[H,theta,rho] = hough(BW,Name,Value,...)

Описание

пример

[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 | логический

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 в размере. Строки и столбцы соответствуют значения theta и rho. Для получения дополнительной информации см. Алгоритмы.

Угол в градусах между 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