UNIVERSIDADE FEDERAL DO PARANÁ
DEPARTAMENTO DE GEOMÁTICA
Sensoriamento Remoto
Exercicio No. 07

Classificação mínima distância no Earth Engine

A classificação de imagens consiste basicamente das seguintes etapas.

vamos por partes...

visualizar a imagem
Priemiro devemos selecionar e carregar uma imagem para trabalhar. vamos usar nossa imagem da região costeira do Paraná. // carregar imagem. ee (trad: EarthEngine.imagem)
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_220078_20210525');
// Selecionar as bandas que deseja visualizar E alguns parâmetros:
//min/max são os valores para dar realce (transformação linear e o fator gamma de cor).
var vizParams = {bands: ['B6', 'B5', 'B4'], min: 6000, max: 15000, gamma: 1.3};
// Desloque o display ao centro da imagem (voo).
Map.centerObject(image, 9);
// Finalmente, vamos ver a imagem com estas definições.
Map.addLayer(image, vizParams, 'Landsat 8 false color');

coletar amostras
agora vamos marcar pontos (pixels) para cada classe. Vamos selecionar 12 pixels para cada classe. Para isto, devemos selecionar o marcaor de pontos no menu de Geometrias do lado esquerdo no espaço da imagem. Também tem opção para delimitar polígonos, mas vamos deixar isso por enquanto, vamos selecionar pontos.

Desloque a imagem para a região de Pontal do Paraná e a ilha do Mel.

Usando "Geometry imports" adicionamos as os pontos de cada classe. Para isto, deve-se adicionar uma nova camada (+ new layer) e clicar nos pontos correspondentes na imagem. Por exemplo, começe selecionando 12 pontos de "áreas urbanas" para a classr "urban". Na lista de classes (Geometry imports), cada classe tem uma engrenagem que permite abrir o dialogo de propriedades de cada camada adicionada. Por exemplo, pode-se escolher a cor dos marcadores. Veja bem que isto é apenas para os marcadores, não para a cor do mapa temático, ainda. Neste diálogo, na seção de "import as", selecione "feature collection". Como são váruos pontos para cada classe, o conjunto é composto por uma colleção de objetos (feature collection). Cada classe tem um conjunto de pontos, então deve-se selecionar "improt as" "feature collection" para cada classe.

Também devemos mudar o campo de "propriedades". Em Property pode escrever o rótulo do conjunto de classes. Neste caso vamos escrever landcover. Com isto, o ponto ganha uma propriedade, que será usada para armazenar sua classificação em termos de cobertura do solo "land cover". Poderia dar outro nome...

OK.

Repita este processo para oitras duas classes, "vegetacao" e "agua". Se tudo der certo, na sua imagem aparecerão os pontos selecionados com a respectiva cor.

Devemos juntar as três coleções de pontos em uma única lista. Para isto usamos o comando merge. // combinar as coleções de pontos em uma única lista
var lista_a = urban.merge(vegetacao).merge(agua);
print(lista_a, 'lista_a, lista de pontos das classes')

Para terminar esta fase inicial, mandamos ao GEE ler os dados das bandas em cada ponto especificado na lista "lista_a" e escrever seu rótulo no espaço reservado para "landcover".

Cada pixel/amostra, terá assim os valores digitais nas bandas (seu vetor de estado) e a correta classificação. As classes são numeradas inciando em zer. Como temos 3 classes teremos 0-urban, 1´=vegetacao; 2=agua.

também especificamos quais bandas queremos usar. Vamos deixar a primeira banda de fora e usar apenas Blue, Green, Red, NIR e uma do MIR. //// mandar a GEE coletar as amostras.
var training = image.sampleRegions({
collection: lista_a,
properties: ['landcover'],
scale: 30
});
print(training, 'training');

// Selecione as bandas que deseja usar
var bands = ['B2', 'B3', 'B4', 'B5', 'B6'];

Treinamento
Agora, com todos os pontos coletados e as classes definidas como "landcover" , podemos proceder a treinar o classificador.

selecionar o classificador
Em nosso exemplo usaremos o classificador da Distância mínima Euclidiana. Isto é selecionado com ee.Classifier.minimumDistance('euclidean'). Dentro de GEE, os classificadores são declarados como "modelos", por isso, podemos chamar nosso classifcadoe de md(minimum distance)Model.

treinamento com este modelo
Com mdmodel.train(training, 'landcover', bands) chamamos a função de treinamento, passando os argumentos necessários:

// selecionar classificador e treinar com as amostras
var mdmodel = ee.Classifier.minimumDistance('euclidean')
var treinado = mdmodel.train(training, 'landcover', bands)
print(treinado, 'treinado')

classificar a imagem

Se o classificador foi treinado, então podemos aplicar este classificador a toda a imagem. var classimg = image.classify(treinado)

Visualizar o resultado
Para ver o mapa temático superposto à imagem/mapa do GEE, devemos especificar algumas coisas antes.

e adicionamos a imagem temática como uma nova camada. Observe quedeve especificar o mínimo e máximo dos números dados às classes (neste caso 0,1,2), e a paleta de cores (classcol). var classlab = ['Urban','vegetacao','água']
var classval = [0,1,2]
var classcol = ['red', 'green', 'blue'] /

Map.addLayer(classimg, {min:0, max:2, palette: classcol}, 'Classification',true)


Desafio

classifique a mesma imagem incluindo mais classes: "mangue" e "solo exposto".

Copyright © 2022
Jorge Centeno: centeno@ufpr.br