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

12 Ansichten (letzte 30 Tage)

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?

Akzeptierte Antwort

Image Analyst
Image Analyst am 7 Jan. 2017
Bearbeitet: Image Analyst am 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 Kommentare
Yuzhen Lu
Yuzhen Lu am 7 Jan. 2017
Bearbeitet: Yuzhen Lu am 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 am 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?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by