Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
spring:legal:func [2008/11/25 15:46]
jpedro
spring:legal:func [2008/12/05 16:13]
jpedro
Line 1: Line 1:
-=== Novas Funcionalidades (versão Spring 5) === 
  
-**Generalizações ​Agregações**+==== Generalização ​Agregação ==== 
  
 A lingaugem LEGAL, a partir da versão 5 do Spring permite explorar as diferenças de resolução entre dados em modelagem a partir de estatísticas básicas tais como: A lingaugem LEGAL, a partir da versão 5 do Spring permite explorar as diferenças de resolução entre dados em modelagem a partir de estatísticas básicas tais como:
-Media, Mediana, Maioria, Minoria, Maximo e Minimo. ​Por exemplo, observe ​a expressão abaixo:+ 
 +  ​Media, Mediana, Maioria, Minoria, Maximo e Minimo. 
 +A figura abaixo ilustra as perdas de informação para representar um mapa a diferentes resoluções:​\\ 
 + 
 +{{spring:​legal:​wikleg001_.jpg|}} 
 + 
 +Observe ​a expressão abaixo:\\
  
   ndvi_20 = (nir - red)/(nir + red);   ndvi_20 = (nir - red)/(nir + red);
  
-Supondo que as as bandas radiometricas ("red" ​"near-infrared"​) tem resolução 20x20m, ​essa equação nos dá o indice de vegetação ​cada local (pixel, cela) de uma área de trabalho. Entretanto ​poderemos ​ter generalizações baseadas nesses dados de sensores a diferentes resoluções,​ por exemplo:+Supondo que as variáveis //red// //nir// representam imagens radiometricas nas bandas do vermelho e o infra-vermelho proximo, na resolução 20x20m, ​equação ​acima nos dá o indice de vegetação ​para cada local (pixel, cela) de uma área de trabalho. Entretanto ​pode-se ​ter generalizações baseadas nesses dados de sensores a diferentes resoluções,​ por exemplo:
  
   ndvi_200 = Maximo ( (nir - red)/(nir + red) );   ndvi_200 = Maximo ( (nir - red)/(nir + red) );
Line 26: Line 32:
 Dessa maneira o LEGAL pode ajudar em estudos visando a adequação de escala e resolução para integrar dados de sensores em modelagem. Dessa maneira o LEGAL pode ajudar em estudos visando a adequação de escala e resolução para integrar dados de sensores em modelagem.
  
 +==== Operações de Vizinhança ====
 +(a partir da versão Spring 5.0.4.2)
 +
 +Com o objetivo de permitir o desenho mais flexivel e explicito de operações envolvendo vizinhanças foi introduzida uma Função "​Distancia"​ que implementa a distancia dada pelo número mínimo de celas entre cada local e o foco da vizinhança que o contém, como na figura:
 +
 +{{spring:​legal:​legwik002.jpg|}}
 +
 +A partir de operações de ordem ou igualdade pode-se então efetivamente definir vizinhanças. Por exemplo a região ressaltada na figura anterior pode ser descrita de diversas maneiras:
 +
 +  (Distancia()== 2)
 +  (1 < Distancia() < 3)
 +  (2 <​=Distancia() < 3)
 +  ...
 +
 +Uma grande variedade de vizinhanças podem ser assim especificadas,​ como ilustrado na figura:
 +
 +{{spring:​legal:​wikleg003.jpg|}}
 +
 +A interação entre as vizinhanças assim definidas e os dados matriciais de uma base de dados pode entao ser modelada como o "​produto"​ entre a região e as variáveis que representam mapas, grades e imagens, de uma base de dados, resultando em expressões tais como:
 +
 +  ((Distancia() < 3) * nir)
 +  ((Distancia() < 3) * red)
 +
 +A partir daí pode-se então extrair estatisticas simples tais como:
 +
 +  Media, Mediana, Maioria, Minoria, Maximo e Minimo.
 +Permitindo a descrição de diversas operações de vizinhança,​ como ilustrado abaixo:
 +
 +  nir_av = Media ((Distance() < 3) * nir));
 +  red_av = Media ((Distance() < 3) * red));
 +  ndvi_av = Media ((Distance() < 3) * ((nir - red)/(nir + red)));
 +
 +Segue-se um exemplinho que descreve um método de detecção de alvos, cuja expressão matemática pode ser dada pela equação:
 +  det = (m0 - m1) / s1 
 +
 +Aqui, **m0** representa uma imagem com os valores médios nas vizinhanças 3x3 de cada pixel de uma imagem original, **m1** por sua vez representa outra imagem com as médias sobre vizinhanças definidas pelo conjunto diferença entre vizinhanças 9x9 e 3x3, sobre essas mesmas vizinhanças é então determinado o desvio padrão correspondente,​ representado pela variável **s1**. As linhas relevantes de um programa em LEGAL para implementar esse método são exemplificadas abaixo:
 +  m0 =  Media((Distance() <= 1) * m) ;
 +  m1 =  Media((1 < Distance() < 4) * m) ;
 +  s1 =  sqrt (Media((1<​(Distance()<​ 4) * (m- m1)^2)) ;
 +  det = (m0- m1) / s1 ;
 +
 +A figura a seguir ilustra as diferentes vizinhanças envolvidas no programa acima, a imagem de entrada representada pela variável **m**, as médias e a imagem resultante associada à variável **det**
 +
 +{{spring:​legal:​legwik004.jpg|}}
 +
 +As mesmas considerações discutidas até agora são tambem válidas para outra função distancia, tambem implementada,​ conhecida como "city block" ou "​quarteirão"​. A distancia city block entre dois pontos p0, p1, no plano, de coordenadas (y0, x0) e (y1, x1)respectivamente é dada por:
 +  D(p0, p1) = |y0 + y1| + |x0 + x1|
 +
 +Um circulo de raio 2 segundo essa medida de distancia teria a forma como indica a figua abaixo:
 +
 +{{spring:​legal:​legwik005.jpg|}}
 +
 +A partir daí todas as operações discutidas anteriormente podem fazer uso da distancia cityblock, bastando para isso substituir nas expressões,​ a chamada "​Distancia()"​ pela nova chamada "​Cityblock()"​ ou "​Quarteirao()",​ como nos exemplos abaixo:
 +
 +  (Cityblock()== 2)
 +  (1 < Cityblock() < 3)
 +  (2 <​=Cityblock() < 3)
 +  ...
  
 +Na sintaxe das funções distancia discutidas, a ausencia de parametros indicada pelo "​()",​ indica que cada local da área de trabalho é tomado como referencia (ou foco) para o calculo; novas versões da LEGAL no futuro devem fazer uso de parâmetros para indicar outras situações de interesse, como a distância a locais ou conjuntos de locais específicos.

Navigation