Separating vegetation from bare soil

2 visualizaciones (últimos 30 días)
PARIVASH PARIDAD
PARIVASH PARIDAD el 26 de Jul. de 2019
Comentada: KALYAN ACHARJYA el 26 de Jul. de 2019
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 comentarios
KALYAN ACHARJYA
KALYAN ACHARJYA el 26 de Jul. de 2019
Editada: KALYAN ACHARJYA el 26 de Jul. de 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 el 26 de Jul. de 2019
Editada: PARIVASH PARIDAD el 26 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

KALYAN ACHARJYA
KALYAN ACHARJYA el 26 de Jul. de 2019
Editada: KALYAN ACHARJYA el 26 de Jul. de 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 comentarios
PARIVASH PARIDAD
PARIVASH PARIDAD el 26 de Jul. de 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 el 26 de Jul. de 2019
Already vegetaion pixels are removed from the image (filled by cyan clolor).

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Agriculture en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by