Dear Matlab Community,
Would anyone have a suggestion on how to do the task below. It seems like enough is known to do it successfully and that tasks like this should come up a lot, but I haven't found/developed an approach that I am entirely happy with.
The task is to detect and then threshold out objects of a certain (medium) size. Very high accuracy is not necessary. 1) "Objects" are blobs of a roughly known size with smooth edges (partial volume). An example for a 256x256 image is a size 50, standard dev 20 gaussian. An object can also be a fat halfmoon, say half as wide and twice as long as the gaussian, also with smooth edges. 2) "Background" covers a much bigger portion of the image than the objects. It contains smooth (low frequency) variations as well as high frequency noise. The background may not have a clear mean value and can change as a gradient across the image. 3) The mean value of the image and the dynamic range can vary within a factor of 10. So, objects are defined as having a relative difference with respect to the background (positive or negative).
This seems like a bandpass filter problem to me, with objects having intermediate sizes/frequencies and background being comprised of high/low frequencies. The problem with convolution-based methods I've tried tends to be that they do not exclude objects of a given size with enough specificity. Either they detect and exclude edges or values within a large homogeneous area of background, different from some other areas of the background, are detected (when I need to exclude only medium-sized objects).
Thank you in advance, Bogdan