Tracing contour lines with line segments in (noisy) images

9 views (last 30 days)
Dear all!
I am having a bit of a problem concerning image processing (something I am not very familiar with). I am trying to trace contour lines, separating high and low areas in a structure (represented by a light/dark shading) and disturbed by - unfortunately - quite some noise.
I tried the following approach first:
1) use a filter to denoise the image 2) use edge on the image to find the edges
however this leads to a very highly fragmented "contour" and many misplaced edge-markers somewhere, likely caused by noise.
I think there might be a better approach to this.
I tried using image segmentation as described in the matlab help, but again this seems to result again in heavily "contaminated" edges.
All my contours are rather simple lines or segments of circles that could be approximated by a few line segments in the required resolution.
As a result I would like to somehow export the contour so I would be able to compare it with other samples I took.
Is here anyone who has some expertise in this field and can point me into the right direction?
Any help is very much appreciated! If I left out any vital information, I am always happy to describe my problem in more detail. Sorry if my English is not fully adequate, it is not my first language.
Kind regards, Chris

Accepted Answer

Image Analyst
Image Analyst on 11 Jan 2013
You might try using a median filter with medfilt2() and then trying edge(). If that doesn't work, there are lots of noise reduction methods that are better. Two of the best are BM3D and non-local means. Or you could try a bilateral filter, sigma filter, kNN filter, K-SVD filter, K-LLD, uinta, etc. For edge finding, again, there are lots and lots of them. You could try a Sobel, Canny, stdfilt(), entropyfilt(), or something fancier like chan vese segmentation.
  2 Comments
Christoph
Christoph on 13 Jan 2013
Thank you for your ideas! I will try them tomorrow right and let you know about the results.
Did you ever use the Hough transform (<http://www.mathworks.de/de/help/vision/ref/vision.houghtransformclass.html>)?
The problem is basically the same, it does find lines, but they are heavily fragmented because of noise.
Image Analyst
Image Analyst on 13 Jan 2013
Yes. But I don't know how that applies here, especially since you didn't share your image. So I have no idea why simply blurring your image before running contour() doesn't work.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!