hough

Syntax

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

Description

[H,theta,rho] = hough(BW) 计算二值图像 BW 的标准 Hough 变换 (SHT)。hough 函数旨在检测线条。
该函数使用线条的参数化表示:rho = x*cos(theta) + y*sin(theta)。该函数返回 rho(沿垂直于线条
的向量从原点到线条的距离)和 theta(x 轴与该向量之间的角度,以度为单位)。该函数还返回标准 
Hough 变换 H,它是一个参数空间矩阵,其行和列分别对应于 rho 和 theta 值。有关详细信息,请参阅算法。

[H,theta,rho] = hough(BW,Name,Value) 使用名称-值对组参数计算二值图像 BW 的标准 
Hough 变换 (SHT) 以影响计算。

Examples

计算和显示 Hough 变换

clear all
close all
clc
RGB = imread('gantrycrane.png');
I  = rgb2gray(RGB);
%提取边缘。
BW = edge(I,'canny');
%计算有限角度范围内的 Hough 变换。
[H,T,R] = hough(BW,'Theta',44:0.5:46);
%显示 Hough 变换
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)

在这里插入图片描述

输入参数

BW - 二值图像
二维逻辑矩阵 | 二维数值矩阵
二值图像,指定为二维逻辑矩阵或二维数值矩阵。对于数值输入,任何非零像素都被视为 1 (true)。

名称-值对组参数
‘RhoResolution’ - Hough 变换 bin 的间距
1 (默认) | 0 和 norm(size(BW)) 之间(不包含两者)的数字
Hough 变换沿 rho 轴的 bin 的间距,以逗号分隔的对组形式指定,其中包含 ‘RhoResolution’ 和 0 与 norm(size(BW)) 之间(不包含两者)的数值。

‘Theta’ - 输出矩阵 H 的对应列的 Theta 值
-90:89 (默认) | 数值向量
输出矩阵 H 的对应列的 Theta 值,以逗号分隔的对组形式指定,其中包含 ‘Theta’ 和范围 [-90, 90) 内的数值向量。

输出参数

H - Hough 变换矩阵
数值数组
Hough 变换矩阵,以大小为 nrho×ntheta 的数值数组形式返回。行和列对应于 rho 和 theta 值。有关详细信息,请参阅算法。

theta - x 轴和 rho 向量之间的角度
数值矩阵
x 轴和 rho 向量之间的角度,以度为单位,以数值矩阵形式返回。有关详细信息,请参阅算法。

rho - 从原点到线条的距离
数值数组
沿垂直于线条的向量从原点到线条的距离,以 double 类的数值数组形式返回。有关详细信息,请参阅算法。

算法

标准 Hough 变换 (SHT) 使用线条的参数化表示:

rho = xcos(theta) + ysin(theta)
变量 rho 是沿垂直于线条的向量从原点到线条的距离。theta 是从原点到线条的垂直投影相对于正 x 轴顺时针测量的角度(以度为单位)。theta 的范围是 −90°≤θ<90°。线条本身的角度是 θ+90°,也是相对于正 x 轴顺时针测量的。
在这里插入图片描述
SHT 是参数空间矩阵,其行和列分别对应于 rho 和 theta 值。SHT 中的元素表示累加器元胞。最初,每个元胞中的值为零。然后,对于图像中的每个非背景点,为每个 theta 计算 rho。rho 舍入到 SHT 中最近的允许行。该累加器元胞递增。在此过程结束时,SHT(r,c) 中的 Q 值表示 xy 平面中的 Q 个点位于 theta© 和 rho® 指定的线条上。SHT 中的峰值表示输入图像中可能存在的线条。
Hough 变换矩阵 H 大小为 nrho×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)

©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页