# Why this simple case of watershed segmentation fails?

Posted 2 years ago
2394 Views
|
|
4 Total Likes
|
 The question has been posted on StackExchange. https://mathematica.stackexchange.com/questions/160304/why-this-simple-case-of-watershed-segmentation-fails.I tried a simple experiment today with WatershedComponents. I took this image from: https://fr.mathworks.com/help/images/ref/watershed.html (readers should use the image from the link above and crop the image themselves, rather than using the image directly below)then I binarized the image bin = Binarize[img]; the distance transform of the image yields dist: dist = DistanceTransform[bin]//ImageAdjust; Now to determine the seeds: seeds = MaxDetect[dist]; (* notice two nice seeds in the image *) finally using WatershedComponents i get this: WatershedComponents[bin, seeds] // Colorize Note: This is clearly how they should not be segmented. In contrast please see the segmentation performed by Matlab (link mentioned above). I tried using different methods but could not get a proper segmentation. What am i doing wrong?
Sort By:
Posted 2 years ago
 Try with applying the watershed segmentation directly to the ridge lines: ridgelines = RidgeFilter[bin, 3] // ImageAdjust wsc = WatershedComponents[ridgelines, seeds]; wsc // Colorize HighlightImage[img, wsc // Image // Binarize // ColorNegate] 
Community posts can be styled and formatted using the Markdown syntax.