MATLAB: How do i get both healthy and unhealthy portion of an image segmented

disease detectionimage processingImage Processing Toolboximage segmentationleafleaf disease detection

I am doing a image processing based project to detect plant pathology. I have written a code and the segmented output that i have got contains only the healthy portion of the leaf. I guess the problem is with the thresholding . How do i get the proper segmented output. I have attached the code and sample image.

Best Answer

You need to get the background. Then the diseased part is just
diseasedMask = ~(healthLeafMask | backgroundMask);
Use color segmentation to get the background, just like you already did to get the healthy part, except that you want white instead of green.
Why are you so in love with cell arrays? You are using them for no reason and just making your code more complicated. Plus there are too many loops. There is no reason to use cell arrays to store those images.