Réponses:
Les opérations morphologiques Expand et Shrink ont été créées pour ce type de traitement. Utilisez ArcGIS (ou GRASS ou Mathematica ) car R
la bibliothèque "raster" de est trop lente.
Souvent, cela aide à expérimenter un peu avec les paramètres: vous devez décider de la quantité d'agrandissement et de rétrécissement nécessaire pour nettoyer une image; et généralement, vous voulez en faire le moins possible, car chaque opération a tendance à lisser certains des détails nets. Voici une séquence qui fonctionne bien pour éliminer une grande partie du "bruit" apparent tout en conservant la plupart des détails dans les "entités". "Expansion" et "rétrécissement" sont tous deux en référence aux globules blancs, de sorte que l'expansion les fait croître vers l'extérieur et le rétrécissement fait que les globules noirs empiètent sur les régions blanches.
La colonne "différence" utilise la couleur pour mettre en évidence les différences entre l'image de début et de fin à chaque étape: bleu pour le noir qui est devenu blanc et orange pour le blanc qui est devenu noir.
Si les plus gros morceaux restants doivent être supprimés, il est préférable de le faire avec RegionGroup pour les identifier, après quoi ils peuvent être effacés par reclassification. C'était une option au départ, mais un petit nettoyage initial avec Expand
et Shrink
réduit le travail et fournit le lissage souhaité.
Soit dit en passant, j'ai choisi de créer les huit images de cette illustration avec les commandes Mathematica car elles sont si simples, faciles et rapides à exécuter:
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 *)
Le flux de travail dans ArcGIS est le même, mais la syntaxe sera plus longue. Si vous voulez vraiment l'utiliser R
, chargez la bibliothèque "raster" et exploitez focalFilter
pour créer des fonctions pour faire l'expansion et la réduction. Attendez ensuite environ une minute chacun pour exécuter les opérations ....
À l'aide de l'extension Spatial Analyst, vous pouvez utiliser certains des outils de généralisation . Certains d'entre eux effectuent des tâches similaires, vous devrez donc peut-être jouer avec quelques-uns pour obtenir les résultats souhaités. Mais, j'aimerais jeter un œil à l' outil Filtre majoritaire et à l' outil Nettoyage des limites .
Voici une page sur les concepts de ces deux outils.
Je ne sais pas comment effectuer ces tâches dans R, mais voici un article sur la façon d'effectuer un filtre majoritaire à l'aide de GRASS GIS.
Il s'agit essentiellement d'une variante de la réponse de @ whuber et utilise la distance euclidienne pour étendre et rétrécir les limites du raster pour lisser les coins nets du raster, ce qui est exagéré par le processus d'expansion-rétrécissement qui utilise le nombre de cellules pour croître / empiéter. Bien que la distance euclidienne imite l'expansion, il n'est pas possible d'introduire une valeur négative pour empiéter / rétrécir. L'astuce consiste à développer un processus itératif pour prendre le négatif de la distance euclidienne raster et le développer. Vous trouverez ci-dessous les étapes de l'exemple d'imagerie donné et les instantanés de clarification.
Reclassifier le raster pour ne conserver que 1 s (globules blancs)
Appliquer la distance euclidienne pour la distance à deux cellules (60 mètres dans ce cas) au raster reclassifié
Prenez le négatif du raster développé en utilisant Reclassifier (les cellules avec la valeur obtiendront NODATA et NODATA deviendront 1) ou les opérateurs Con et IsNull de la calculatrice raster
Appliquez à nouveau la distance euclidienne à ce raster négatif avec la même distance (60 m)
Prenez le négatif de ceci en suivant le même processus donné ci-dessus
Utilisez Raster Calculator ou Reclassify pour affecter des cellules NODATA à 0 dans ce raster pour revenir aux valeurs d'origine de l'exemple de raster
Développer Rétrécissement vs distance euclidienne
Remarque: le vert montre les cellules traitées (globules blancs dans les questions)
L'avantage de la distance euclidienne est qu'il prend la bonne distance de chaque cellule à travers l'étendue de l'hypoténuse qui lisse les bords autrement coupants. Le nombre de paramètres de cellule des outils d'agrandissement et de rétrécissement, d'autre part, traite le même nombre de cellules pour toutes les directions, ce qui donne des bords de type boîte englobante, généralisant donc trop les bords / coins.
Le problème principal, cependant, ne supprime pas le bruit avec autant de succès que l'expansion / la réduction et il est un peu plus long que la réponse.