TerraAPP: Plataforma para aplicações em Áreas de Preservação Permanente

Apresentação teórica e prática de ferramentas desenvolvidas sobre a TerraLib no INPE para aplicações em Áreas de Preservação Permanente. O material pode ser utilizado desde que respeitada a licença:

Creative Commons License
TerraAPP: Plataforma para aplicações em Áreas de Preservação Permanente by Laercio M. Namikawa is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Extração de Leito do Rio em Imagens RapidEye

Objetivo: gerar a drenagem de margem dupla da lâmina de água no leito de rios detectáveis em imagens multiespectrais da constelação de satélites RapidEye, utilizando a informação de cor.

Metodologia:

  1. Usar a transformação de cores RGB para IHS
  2. Determinar os limiares de ângulos (da matiz H) e intensidade (da componente I) que caracterizam a lâmina de água.
  3. Aplicar os limiares definidos para definir os pixels de lâmina de água.
  4. Eliminar pixels detectados como água mas que são ruídos por meio de limiar de área mínima.
  5. Editar manualmente para eliminar ruídos maiores, lagoas e represas.
  6. Opcionalmente suavizar as margens da drenagem por spline.

Extração de Leito do Rio em Imagens RapidEye no SPRING

  1. Importar as bandas multiespectrais da imagem RapidEye entre as coberturas disponíveis.
  2. Aplicar transformação RGB para IHS na combinação de bandas 435 através do LEGAL.
  3. Determinar os limiares de ângulos (da matiz H) e intensidade (da componente I) que caracterizam a lâmina de água através da ferramenta de Contraste /Fatiamento/Arco-Íris.
  4. Aplicar os limiares definidos para definir os pixels de lâmina de água através do LEGAL.
  5. Vetorizar o mapa matricial de lâmina de água.
  6. Eliminar polígonos (que representam ruídos) menores que 1000 m2 através da ferramenta Limpar Vetores.
  7. Editar manualmente para eliminar ruídos maiores, lagoas e represas.
  8. Opcionalmente suavizar as margens da drenagem por spline.
  9. Copiar as linhas para um PI da categoria MNT.
  10. Converter todas as linhas para isolinhas.
  11. Aplicar a suavização.
  12. Copiar as linhas suavizadas de volta ao PI original
  13. Editar manualmente corrigir contornos da drenagem.

Acessar o PDF

// Converte RGB para IHS
// Adapted from Foley, VanDam 2nd.Ed.(p.592)
	// given r,g,b on [0 ... 1],
	// return (s,l) on [0 ... 1] h [0...360, -1= UNDEFINED]
{
Imagem ir ("CAT_Imagem");
Imagem ig ("CAT_Imagem");
Imagem ib ("CAT_Imagem");

MNT hue ("CAT_MNT");
MNT maxv ("CAT_MNT");

MNT red, green, blue ("CAT_MNT");
MNT iszero, minvl ("CAT_MNT");
MNT dltvl ("CAT_MNT");
MNT hue6 ("CAT_MNT");
MNT sat ("CAT_MNT");

 ir = Recupere( Nome = "RapidEye2014_4" );
 ig = Recupere( Nome = "RapidEye2014_3" );
 ib = Recupere( Nome = "RapidEye2014_5" );

 hue = Novo( Nome = "H_435" , ResX = 5 , ResY = 5 , Escala = 10000 );
 maxv = Novo( Nome = "V_435" , ResX = 5 , ResY = 5 , Escala = 10000 );

 red   = New(Name="TMP_HSV_R",ResX=5,ResY=5,Escala=10000); 
 green = New(Name="TMP_HSV_G",ResX=5,ResY=5,Escala=10000); 
 blue  = New(Name="TMP_HSV_B",ResX=5,ResY=5,Escala=10000); 

 minvl  = New(Name="TMP_MIN",ResX=5,ResY=5,Escala=10000); 
 dltvl  = New(Name="TMP_DLT",ResX=5,ResY=5,Escala=10000); 
 sat  = New(Name="TMP_SAT",ResX=5,ResY=5,Escala=10000); 
 hue6  = New(Name="TMP_H6",ResX=5,ResY=5,Escala=10000); 

//Assume input image range 0-65535, output range 0-1
  red   = Digital(ir)/65535.;
  green = Digital(ig)/65535.;
  blue  = Digital(ib)/65535.;

  //    max := Maximum(r,g,b)
  maxv = (red >= green ) && (red >= blue  ) ? red :
          (blue >= green) ? blue : green;
 
//    min := Minimum(r,g,b)
  minvl = (red <= green ) && (red <= blue) ? red :
          (blue <= green ) ? blue : green;
  
//    if max <> 0 then
//	s := (max-min)/max
//    else s := 0
  dltvl = maxv - minvl;
  sat = (maxv == 0.0) ? 0.0 : dltvl/maxv;

//    if s = 0 then
//	h := UNDEFINED
  hue6 = (sat == 0.0) ? 0.0 : (
//    else
//    	begin
//    	   delta := max-min
//	   if r = max then
//	      h := (g-b)/delta
         (red  == maxv) ? 60.0 * ((green - blue) / dltvl) : (
//	   else if g = max then
//	      h := 2 + (b-r)/delta
         (green  == maxv) ? 60.0 * (2.0 + ((blue - red) / dltvl)) : (
//	   else if b = max then
//	      h := 4 + (r-g)/delta
                             60.0 * (4.0 + ((red - green) / dltvl)) )));
//    h := h*60
//    if h < 0 then
//	h := h + 360
  hue = (sat == 0.0) ? -1.0 : ((hue6 < 0.0) ? hue6 + 360. : hue6);
}
{
MNT hue, maxv ("CAT_MNT");
Tematico slc ("Aguas");

 hue = Recupere( Nome = "H_435" );
 maxv = Recupere( Nome = "V_435" );

 slc =Novo(Nome = "HV_35_95_03_07", ResX = 5, ResY = 5, Escala = 10000);

 slc =  Atribua ( CategoriaFim = "Aguas" ) 
	{
	 "Rios" : ( hue > 35 && hue < 95 ) &&
                    ( maxv > 0.03 && maxv < 0.07 ) 
	};
}

Navigation