How can I detect the area of plant roots in an image?

1 view (last 30 days)
Dear community, we have thousands of pictures taken from plant roots in the soil using a rhizotrone (similar to an endoscope but you put it in the soil). Now we need to know the area of roots per image. I tried commands like
J=imadjust(I,[0.2 0.65],[0.3 0.98],3) or
stretched_truecolor = imadjust(I,stretchlim(I)); J=decorrstretch(stretched_truecolor, 'Tol', 0.01);
to increase or stretch the contrasts. Then I wanted to get the HSV values of the roots with getHSVColorFromDirectory from a set of images (calbration) to detect the roots with the same color of the other images with colorDetectHSV. I thought of doing so in three steps. First, detect all white roots, then all brown and then the dark brown ones. The pixels can then be added for each image. That was the plan and I wasted several nights on it... The main problem is that the colors of the roots and the soil are quite similar and also there are vertical scratches on the tubes where the camera was put into.
I added some typical root images:
The roots can be white (new ones) or brown and black (older ones):
Here you can see the vertical scratches on the tube (and one root on the bottom):
And these are typical results were I applied the above mentioned commands:
from left to right: original image, imadjust, decorrstretch
here I tried to give the white roots another color:
By the way, that task is a big issue in root science.

Answers (0)

Categories

Find more on Agriculture in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!