# hough

Hough transform

## Description

`[`

computes the Standard Hough Transform (SHT) of the binary image
`H`

,`theta`

,`rho`

]
= hough(`BW`

)`BW`

. The `hough`

function is designed to detect lines. The function uses the
parametric representation of a line: ```
rho = x*cos(theta) +
y*sin(theta)
```

. The function returns
`rho`

, the distance from the origin to
the line along a vector perpendicular to the line, and
`theta`

, the angle in degrees between the
*x*-axis and this vector. The function also
returns the SHT, `H`

, which is a parameter space
matrix whose rows and columns correspond to *rho*
and *theta* values respectively. For more
information, see Algorithms.

## Examples

## Input Arguments

## Output Arguments

## Algorithms

The Standard Hough Transform (SHT) uses the parametric representation of a line:

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

The origin of the coordinate system is assumed to be at the center of the upper-left corner pixel.

The variable *rho* is the perpendicular distance from the origin to the
line.

The variable *theta* is the angle of the perpendicular
projection from the origin to the line, measured in degrees clockwise from
the positive *x*-axis. The range of
*theta* is –90° ≤ θ < 90°. The angle of the line itself is θ + 90°, also measured clockwise with respect to the positive
*x*-axis.

The SHT is a parameter space matrix whose rows and columns correspond to
*rho* and *theta* values,
respectively. The elements in the SHT represent accumulator cells.
Initially, the value in each cell is zero. Then, for every non-background
point in the image, *rho* is calculated for every
*theta*. *rho* is rounded off
to the nearest allowed row in SHT. That accumulator cell is incremented. At
the end of this procedure, a value of *Q* in
*SHT(r,c)* means that *Q*
points in the *xy*-plane lie on the line specified by
*theta(c)* and *rho(r)*. Peak
values in the SHT represent potential lines in the input image.

The Hough transform matrix, `H`

, is *nrho*-by-*ntheta* where:

`nrho = 2*(ceil(D/RhoResolution)) + 1`

, and

`D = sqrt((numRowsInBW - 1)^2 + (numColsInBW - 1)^2)`

.

`rho`

values range from `-diagonal`

to `diagonal`

,
where

`diagonal = RhoResolution*ceil(D/RhoResolution)`

.

`ntheta = length(theta)`

## Extended Capabilities

## Version History

**Introduced before R2006a**