MATLAB Answers


Average width of lines

Asked by M
on 30 Sep 2013
Latest activity Commented on by M
on 1 Oct 2013

Hi all,

I want to know the procedure to calculate the average width of white lines in the image below.

Is it also possible to measure the widths at many different places?


  1 Comment

Jan Simon
on 30 Sep 2013

The problem is not well defined. What should happen at the intersection of the two lines? Does "width" still mean the minimal distance from one point on the edge to the points of the opposite edge? But the "opposite edge" belongs to the other line at the intersections. How is the "width" defined at the limits of the picture? In the lower left there might be some points, where the minimal distance cross some black pixels - is this valid?

The question is far from being trivial when you define it exactly. Only simplifications would allow to determine an "average width", but the exact definition of the problem cannot be guessed automatically, but this is your turn.

3 Answers

Answer by Image Analyst
on 30 Sep 2013
 Accepted answer

For a rough estimate, I'd just sum up the image to get the area, then skeletonize the image and sum up that image to get the total length. Then divide the area by the length. Will that work for you? If it's not accurate enough then explain why not, and what specific level of accuracy you require.

  1 Comment

on 1 Oct 2013

Thank you for the reply. I tried this method and obtained fairly good results. The accuracy is within acceptable range for my application. Thanks a lot.

Answer by Jan Simon
on 30 Sep 2013

Some illustrations about the points, where I do not see a unique definition of "width":

Overlaps of more than 2 lines might occur also as well as lines which overlap the edge of the image of a wide range.


on 30 Sep 2013

how poly-line distance metric will be used to measure distance at middle white line?

on 1 Oct 2013

Thank you for the reply. My problem was to simply find the average width for all the lines, which can be done easily using the method explained by Image Analyst below. Overlapping lines do not give a very accurate measurement, but for my application, it can be overlooked. The edges are ok because the extra pixels at one edge can compensate for the missing pixels on the other edge.

Answer by Anand
on 30 Sep 2013

Another (more complicated and time-consuming) approach to try is the following:

1. Use edge to find edges in the image. Adjust the parameters to make sure all line segments are found. Use morphological functions like imdilate/imerode to get continuous line segments.

2. Use the hough function to find the Hough Transform of the image.

3. Find peaks in the Hough Transform. Adjust the thresholds enough to find peaks for all your desired line segments. Keep in mind that the horizontal and vertical line segments may come in as well.

4. Use the houghlines function to find coordinates for line segments found. Do some post-processing to eliminate unwanted lines.

5. Find parallel line segments by comparing the slopes of the lines (slope of a line can be found using (y2-y1)/(x2-x1)).

6. Find the perpendicular distance between the lines.

  1 Comment

on 1 Oct 2013

Thank you for the reply. Your approach might give more accurate results but for my application, the simple and easier method given by Image Analyst was more than enough.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!