ImageLines

ImageLines[image]

finds line segments in image and returns the coordinates of their endpoints.

ImageLines[image,t]

uses the threshold t for selecting image lines.

ImageLines[image,t,d]

uses the parameter d to control the distinctness of the detected lines.

Details and Options

  • ImageLines returns a list of line segments in the form Line[{p1,p2}], where each pi={xi,yi} is expressed in the standard image coordinate system.
  • ImageLines[image,t] finds lines in the image whose normalized strength is larger than the specified threshold t.
  • ImageLines sorts the result based on the normalized strength.
  • In ImageLines[image,t,d], the parameter d controls how close lines are suppressed. If the value is set to zero, all detected lines are returned. With d set to 1, only the strongest line may be returned.
  • The following options can be given:
  • MaxFeaturesAllmaximum number of features to return
    Method"Hough"method to detect lines
  • With a setting MaxFeatures->n, at most n lines with largest normalized strength are returned.
  • Possible line detection methods are:
  • "Hough"lines based on Hough transform (default)
    "RANSAC"lines using the RANSAC algorithm
  • With Method->"Hough", lines are detected by iteratively selecting the strongest peaks in the Hough transform. Using the distinctness parameter, peaks that are within a rectangular range from the already selected peaks are excluded from the set of line candidates.
  • With Method->"RANSAC", lines are detected using random sampling. For each sampling, pixels that are within a distance specified by the distinctness parameter d are used for computing the strength of the line. The pixels on the selected line are not used in the following iterations.
  • By default, ImageLines returns lines that span from border to border. With a setting Method->{"Segmented"->True}, detected lines may be divided into smaller line segments.

Examples

open allclose all

Basic Examples  (1)

Detect and visualize straight lines in an image:

Highlight detected lines:

Scope  (2)

Specify the distinctness parameter:

Detect the line going through the foreground pixels:

Options  (3)

MaxFeatures  (1)

Specify the maximum number of lines to be to be detected:

Method  (2)

By default, lines are detected using Method->"Hough":

Use a random sampling method:

Detect segmented lines in a grayscale image:

Segmented lines using the random sampling method:

Applications  (6)

Detect and visualize straight trajectories in a bubble chamber image:

Detect segments on a color image:

Visualize vanishing points:

Detect segments on a gradient magnitude map:

Find wide lines using edge detection:

Straighten the tower of Pisa:

Compute the gradient of the image to highlight edges:

Find the most significant straight lines in the gradient image:

FInd the angles corresponding to each line:

Compute the average angle of the vertical lines:

Rotate the image by to make almost-vertical lines vertical:

Possible Issues  (2)

Use the distinctness parameter to prevent detecting duplicated lines:

Thin lines in binary images might not be correctly detected:

Blurring the image typically improves line detection:

Rescaling the image to a larger size might also help in some cases:

Introduced in 2010
 (8.0)
 |
Updated in 2012
 (9.0)
2014
 (10.0)
2018
 (11.3)