houghlines
Extract line segments based on Hough transform
Syntax
lines = houghlines(BW,theta,rho,peaks)
lines = houghlines(___,Name,Value,...)
Description
extracts line segments in the imagelines
= houghlines(BW
,theta
,rho
,peaks
)BW
associated with particular bins in a Hough transform.theta
andrho
are vectors returned by functionhough
.peaks
is a matrix returned by thehoughpeaks
function that contains the row and column coordinates of the Hough transform bins to use in searching for line segments. The return valuelines
is a structure array whose length equals the number of merged line segments found.
extracts line segments in the imagelines
= houghlines(___,Name,Value
,...)BW
, where named parameters affect the operation.
Examples
Find Line Segments and Highlight longest segment
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;
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');
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 linesplot(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
Highlight the longest line segment by coloring it cyan.
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
Input Arguments
BW
—Binary image
real, 2-D, nonsparse logical or numeric array
Binary image, specified as a real, 2-D, nonsparse logical or numeric array.
Data Types:single
|double
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|logical
theta
—Line rotation angle in radians
real, 2-D, nonsparse numeric array
Line rotation angle in radians, specified as a real, 2-D, nonsparse logical or numeric array.
Data Types:double
rho
—Distance from the coordinate origin
real, 2-D, nonsparse logical or numeric array
Distance from the coordinate origin, specified as a real, 2-D, nonsparse logical or numeric array. The coordinate origin is the top-left corner of the image (0,0).
Data Types:double
peaks
—Row and column coordinates of Hough transform bins
real, nonsparse numeric matrix
Row and column coordinates of Hough transform bins, specified as a real, nonsparse numeric array.
Data Types:double
Name-Value Pair Arguments
Specify optional comma-separated pairs ofName,Value
arguments.Name
is the argument name andValue
is the corresponding value.Name
must appear inside single quotes (' '
). You can specify several name and value pair arguments in any order asName1,Value1,...,NameN,ValueN
.
行= houghlines (BW T R P 'FillGap',5,'MinLength',7);
'FillGap'
—Distance between two line segments associated with the same Hough transform bin
20(default) |positive real scalar
Distance between two line segments associated with the same Hough transform bin, specified as a positive real scalar. When the distance between the line segments is less than the value specified, thehoughlines
function merges the line segments into a single line segment.
Data Types:double
'MinLength'
—Minimum line length
40(default) |positive real scalar
Minimum line length, specified as a positive real scalar.houghlines
discards lines that are shorter than the value specified.
Data Types:double
Output Arguments
lines
— Lines found
structure array
Lines found, 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 |
---|---|
|
Two element vector |
|
Two element vector |
|
Angle in degrees of the Hough transform bin |
|
|
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
This function supports the generation of C code usingMATLAB®Coder™. For more information, seeCode Generation for Image Processing.
The optional parameter names
'FillGap'
and'MinLength'
must be compile-time constants. Their associated values need not be compile-time constants.
See Also
Introduced before R2006a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select:.
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina(Español)
- Canada(English)
- United States(English)
Europe
- Belgium(English)
- Denmark(English)
- Deutschland(Deutsch)
- España(Español)
- Finland(English)
- France(Français)
- Ireland(English)
- Italia(Italiano)
- Luxembourg(English)
- Netherlands(English)
- Norway(English)
- Österreich(Deutsch)
- Portugal(English)
- Sweden(English)
- Switzerland
- United Kingdom(English)