Edit
The use of two median filters is the bottleneck of my method, and you indicated in a comment on nikie's answer that speed might be of importance to you.
You can replace MedianFilter[]
by TotalVariationFilter
for essentially the same results, but a 10x speed-up, as below.
For images where the background is less variable, or the noise is less, you might get away with a single filter, rather than worrying about subtracting the background first.
img = ImageAdjust@
ImageCrop[
Import["http://i.stack.imgur.com/GzLZh.jpg"], {223, 223}];
AbsoluteTiming[
tvFilteredImg =
ImageAdjust@ImageSubtract[
TotalVariationFilter[img, 0.7, Method -> "Poisson"],
TotalVariationFilter[img, 10, Method -> "Poisson"]
];
morphImg = MorphologicalTransform[Binarize[tvFilteredImg], "Commonest"];
closingImg = Closing[morphImg, DiskMatrix[10]];
result = Colorize[MorphologicalComponents[ColorNegate@closingImg]];
]
(* 0.12 seconds, compared to 1.1 seconds for the MedianFilter[] version *)

Original
Ouch that's a noisy image! Here goes...a method that isn't WEKA filtering, but seems to work well.
First, I had to crop out the white bands at the top/bottom of your image.
img = ImageAdjust@ImageCrop[Import["http://i.stack.imgur.com/GzLZh.jpg"], {223, 223}];
Next, I applied two differently-sized median filters and subtracted one from the other to make the image a bit easier to work with in terms of both noise and the varying background.
GraphicsRow[{
ImageAdjust@MedianFilter[img, 3],
ImageAdjust@MedianFilter[img, 20],
ImageAdjust@
ImageSubtract[MedianFilter[img, 3], MedianFilter[img, 20]]},
ImageSize -> Full]
medFilteredImg = ImageAdjust@
ImageSubtract[MedianFilter[img, 3], MedianFilter[img, 20]];

Next I binarized the image, applied a morphological transform to smooth out the result, and finally deleted the small components that weren't part of the desired result.
morphImg = MorphologicalTransform[
Binarize[medFilteredImg, Method -> "Cluster"], "Commonest"]
finalImg = DeleteSmallComponents[morphImg, 20]
Finally, one can apply a Closing
to the image to fill in some of those gaps.
Closing[finalImg, DiskMatrix[10]]
MorphologicalComponents[ColorNegate@%] // Colorize
The results are pretty nice - with a bit of tweaking to the various parameters (especially the MedianFilter[]
) then this works well.
