As operações morfológicas Expand e Shrink foram criadas para esse tipo de processamento. Use ArcGIS (ou GRASS ou Mathematica ) porque R
a biblioteca "raster" é muito lenta.
Freqüentemente, ajuda a experimentar um pouco os parâmetros: você precisa decidir quanto de expansão e encolhimento é necessário para limpar uma imagem; e geralmente você deseja fazer o mínimo possível, porque cada operação tende a suavizar alguns detalhes nítidos. Aqui está uma sequência que funciona bem para eliminar grande parte do "ruído" aparente, mantendo a maioria dos detalhes nas "entidades". "Expandir" e "encolher" são ambos referentes às células brancas , de modo que a expansão faz com que elas cresçam para fora e o encolhimento faz com que as células pretas invadam as regiões brancas.
A coluna "diferença" usa cores para destacar as diferenças entre a imagem inicial e final em cada etapa: azul para preto que virou branco e laranja para branco que virou preto.
Se as peças restantes maiores precisarem ser removidas, é melhor fazê-lo com o RegionGroup para identificá-las, após o que elas podem ser obliteradas por reclassificação. Esta era uma opção desde o início, mas um pouco de limpeza inicial com Expand
e Shrink
reduz o trabalho e fornece a suavização desejada.
Aliás, eu escolhi fazer as oito imagens nesta ilustração com os comandos do Mathematica porque são muito simples, fáceis e rápidas de executar:
i = Import["http://i.stack.imgur.com/umDg7.png"];
l = Dilation[k = Erosion[j = Dilation[i, 2], 3], 1]; (* This does all the work *)
delta = ColorCombine /@ {{i, j}, {j, k}, {k, l}, {i, l}}; (* Compares images *)
O fluxo de trabalho no ArcGIS é o mesmo, mas a sintaxe será mais longa. Se você realmente deseja usar R
, carregue a biblioteca "raster" e explore focalFilter
para criar funções para expandir e diminuir. Espere cerca de um minuto cada para executar as operações ....
Usando a extensão Spatial Analyst, você pode usar algumas das ferramentas Generalização . Alguns deles executam tarefas semelhantes; portanto, você pode precisar brincar com alguns para obter os resultados da maneira que deseja. Mas, eu daria uma olhada na ferramenta Filtro de maioria e na ferramenta Limite de limite .
Aqui está uma página sobre os conceitos dessas duas ferramentas.
Não tenho certeza de como executar essas tarefas no R, mas aqui está um post sobre como executar um filtro de maioria usando GRASS GIS.
fonte
Essa é basicamente uma variante da resposta do @ whuber e usa a Distância Euclidiana para expandir e reduzir os limites da varredura para suavizar os cantos afiados da varredura que é exagerada pelo processo de expansão-contração que utiliza o número de células para crescer / invadir. Embora a distância euclidiana imite a expansão, não é possível introduzir valor negativo para invadir / encolher. O truque é desenvolver um processo iterativo para pegar o negativo do raster Euclidian Distance e aumentá-lo. Abaixo estão as etapas para as imagens de amostra fornecidas e os instantâneos para esclarecimentos.
Reclassifique a varredura para manter apenas 1s (glóbulos brancos)
Aplique a distância euclidiana para a distância de duas células (60 metros neste caso) à varredura reclassificada
Pegue o negativo da varredura expandida usando Reclassify (as células com o valor receberão NODATA e NODATA serão giradas para 1) ou os operadores Con e IsNull da Calculadora de varredura
Aplique a Distância Euclidiana mais uma vez a esta varredura negativa com a mesma distância (60 m)
Tome o negativo disso, seguindo o mesmo processo dado acima
Use a Calculadora de varredura ou Reclassificar para atribuir células NODATA a 0 nesta varredura para retornar aos valores originais da varredura de amostra
Expandir o Shrink vs. Euclidian Distância
Nota: Verde mostra as células processadas (células brancas nas perguntas)
A vantagem da Distância Euclidiana é que ela leva a distância adequada de cada célula através das extensões de hipotenusa, que suavizam as bordas afiadas. O número de parâmetros de célula das ferramentas de expansão e contração, por outro lado, processa o mesmo número de células em todas as direções, o que produz bordas semelhantes a caixas delimitadoras, portanto generaliza demais as bordas / cantos.
A questão principal, no entanto, não remove o ruído com tanto sucesso quanto a expansão / redução e é um pouco mais longa que a resposta.
fonte