Main Content

houghlines

Extract line segments based on Hough transform

Description

example

lines= houghlines(BW,theta,rho,peaks)extracts line segments in the imageBWassociated with particular bins in a Hough transform.thetaandrhoare vectors returned by functionhough.peaksis a matrix returned by thehoughpeaksfunction that contains the row and column coordinates of the Hough transform bins to use in searching for line segments. The return valuelinescontains information about the extracted line segments.

example

lines= houghlines(___,Name,Value)uses name-value pair arguments to control various aspects of the line extraction.

Examples

collapse all

Read image into workspace.

I = imread('circuit.tif');

Rotate the image.

rotI = imrotate(I,33,'crop');

Create a binary image.

BW = edge(rotI,'canny');

Create the Hough transform using the binary image.

[H,T,R] = hough(BW); imshow(H,[],'XData',T,'YData',R,...'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axison, axisnormal, holdon;

Figure contains an axes object. The axes object contains an object of type image.

Find peaks in the Hough transform of the image.

P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); x = T(P(:,2)); y = R(P(:,1)); plot(x,y,'s','color','white');

Figure contains an axes object. The axes object contains 2 objects of type image, line.

Find lines and plot them.

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); figure, imshow(rotI), holdonmax_len = 0;fork = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');% Plot beginnings and ends of lines情节(xy (1, 1), xy(1、2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');% Determine the endpoints of the longest line segmentlen = norm(lines(k).point1 - lines(k).point2);if( len > max_len) max_len = len; xy_long = xy;endend

Figure contains an axes object. The axes object contains 37 objects of type image, line.

Highlight the longest line segment by coloring it cyan.

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

Figure contains an axes object. The axes object contains 38 objects of type image, line.

Input Arguments

collapse all

Binary image, specified as a 2-D logical matrix or 2-D numeric matrix.For numeric input, any nonzero pixels are considered to be1(true).

Data Types:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64|logical

行rotation angle, in degrees, specified as a numeric matrix. The angle is measured between thex-axis and therhovector.

Data Types:double

Distance from the coordinate origin, specified as a numeric matrix. The coordinate origin is the top-left corner of the image (0,0).

Data Types:double

Row and column coordinates of Hough transform bins, specified as a numeric matrix.

Data Types:double

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and encloseNamein quotes.

Example:行= houghlines (BW T R P 'FillGap',5,'MinLength',7);

Distance between two line segments associated with the same Hough transform bin, specified as a positive number. When the distance between the line segments is less than the value specified, thehoughlinesfunction merges the line segments into a single line segment.

Data Types:double

Minimum line length, specified as a positive number.houghlinesdiscards lines that are shorter than the value specified.

Data Types:double

Output Arguments

collapse all

Detected lines, returned as a structure array whose length equals the number of merged line segments found. Each element of the structure array has these fields:

Field

Description

point1

Two element vector[X Y]specifying the coordinates of the end-point of the line segment

point2

Two element vector[X Y]specifying the coordinates of the end-point of the line segment

theta

Angle in degrees of the Hough transform bin

rho

rhoaxis position of the Hough transform bin

Extended Capabilities

Version History

Introduced before R2006a

See Also

|