Separating vegetation from bare soil

3 views (last 30 days)
I need to separate the vegetation pixels from bare soil on a thermal image. I got a NDVI map which can be used to distinguish the areas where vegatation is present and I have to find a threshold value on the NDVI map that separates bare soil from vegetation and and by using this threshold value, I need to perfom a mask on the thermal image finally. I do not have much Matlab knowledge and I am sorry for my question but does anyone know how to perfom this in Matlab? I can attach my NDVI map.
  2 Comments
KALYAN ACHARJYA
KALYAN ACHARJYA on 26 Jul 2019
Edited: KALYAN ACHARJYA on 26 Jul 2019
Please do attach, alos it would be help to answer, if you mentioned, what you have? and what you want?
PARIVASH PARIDAD
PARIVASH PARIDAD on 26 Jul 2019
Edited: PARIVASH PARIDAD on 26 Jul 2019
Thanks for your fast response. I am sorry that my question did not provide enough information.
I have a vegetation index map which shows the areas that the vegetation is present. My goal is to get rid of all the pixels of the soil from this map since I need the soil pixels.
To achieve this, I have chosen a threshold value that separates soil from vegetation. Vegetation usually ranges from 0.2-0.8 so my first question is that I need a queue in Matlab which can identify the valid threshold for separating vegetation pixels from bare soil.
Secondly, by using the threshold value, I need a code to mask the soil.
I thank you in advance.

Sign in to comment.

Accepted Answer

KALYAN ACHARJYA
KALYAN ACHARJYA on 26 Jul 2019
Edited: KALYAN ACHARJYA on 26 Jul 2019
Which are green pixels, read about RGB color model, based on that you may distinct the color of the pixel till some extent.
image1=imread('NGRDI.png');
th=8; %Chnage as per your requirements
[rows colm]=size(image1);
for i=1:size(image1,1)
for j=1:size(image1,2)
if (image1(i,j,2)-th)>image1(i,j,1) && (image1(i,j,2)-th)>image1(i,j,3)
image1(i,j,1)=0;
image1(i,j,2)=250; % Choose any value 0-255, just represents color of planes
image1(i,j,3)=250; % Choose any value 0-255, just represents color of planes
end
end
end
imshow(image1);
I dont think there is any fixed threshold value (greenary veg and soil mixed up), which distinguish soil or veg, try with different th values, which fit best as per your desired results, you may consider.
There are number od ways you can do color thresholding, this is not efficients (because of loops), you get the idea, how it works easily, then you can implement in other ways.
Good Wishes!
  2 Comments
PARIVASH PARIDAD
PARIVASH PARIDAD on 26 Jul 2019
Thanks for your answer. Now that I know the vegetation pixels, is there a way to extract them out of the image you provided, so I just see the soil pixels?
KALYAN ACHARJYA
KALYAN ACHARJYA on 26 Jul 2019
Already vegetaion pixels are removed from the image (filled by cyan clolor).

Sign in to comment.

More 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!