Image segmentation of a fringe pattern image to extract the fringe area

12 views (last 30 days)

I am going to extract the fringe area from a fringe pattern image shown below. The image is highly contrasted with distinctive borders between the fringe area and the noise area. But the segmentation of the fringe area is not so trivial as it seems, since the fringe pattern oscillates periodically, which makes it impossible to use a global threshold for segmentation. One possible way is to estimate the noise distribution using a local mask sliding through the image, and then perform a noise-level based thresholding, which however is a little computation expensive.

I am seeking a more efficient method for the task. Is there any method specifically designed for it?

Accepted Answer

Image Analyst
Image Analyst on 7 Jan 2017
Edited: Image Analyst on 7 Jan 2017
Can you post a screenshot where you outline exactly what region(s) you want to segment? One way might be to use a texture filter like stdfilt(). This would give you a binary mask of just the smooth fringe parts. It's not computationally expensive - not sure why you said that. Did you actually try it? It should finish in a fraction of a second.
  2 Comments
Yuzhen Lu
Yuzhen Lu on 7 Jan 2017
Edited: Yuzhen Lu on 7 Jan 2017

Thanks for your valuable suggestion! I have tried stdfilt which actually gives noise level distribution as shown below.

The image is much more contrasted than the original, allowing segmentation by using a global threshold:

The white rectangular region is what I intend to segregate. Further morphological processing can give fine segmenation.

Overall the whole procedure (sort of adaptive thresholding) is still rather tedious, and require some manual invention (to choose a suitable threshold).

Image Analyst
Image Analyst on 7 Jan 2017
Did you try bwareafilt(binaryImage, 1) to extract the largest region? Now, that will have a hole in it with the crescent shaped noise region. If you want that call imfill(binaryImage, 'holes'). If you don't want that in the mask, then no need for anything further - you're done, it's segmented. But I don't know your definition of segregated. You now have a mask identifying smooth good fringe pixels and bad, noisy pixels. What more do you want to do after that, if anything?

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!