I'm trying to do a segmentation task on the below picture.
I'm using fuzzy c-means with some minimal pre-processing. The segmentation will have 3 classes: background(the blue region), meat(the red region) and fat(the white region). The background segmentation works perfectly. However meat-and-fat segmentation on the left side of the photo maps lots of meat tissues as fat. the final meat-mask is like this:
I suspect that's because of lighting conditions which makes the left side brighter so the algorithm classifies that region as fat-class. Also I think there could be some improvements if I could somehow make the surface smoother. I've used a 6x6 median filter which works alright, but I'm open to new suggestions. Any suggestions how to overcome this problem? May be some kind of smoothing? Thanks :)
Edit 1: The fat areas are roughly marked in the below photo. The top area is ambiguous, but as rayryeng has mentioned in the comments, if it is ambiguous for me as a human, it's alright for the algorithm to misclassify it too. But the left hand section is clearly all meat and the algorithm assigns a big chunk of that as fat.
First rule in segmentation is "try to describe how you (as a human being) were able to do the segmentation". Once you do that the algorithm becomes clear. In other words, you must perform the following 2 tasks:
It seems that you skipped step 1 and that is the problem of your algorithm.
Here are my observations:
For more information you can read my answer here about textures similarities. You have a reverse problem (instead of measuring similarity you want to train a classifier that distinguish between non similar textures). But the framework of the solution is identical. Identify important features which distinguish between textures, concatenate the features to a vector and run classifier. You can run the classifier on each pixel or on image patches of small area (say 5x5 pixels). The result you are expecting is to train such a smart classifier that for every patch in the image it can tell you if it resembles more a chunk of meat or fat