回答:
モルフォロジー演算を展開し、シュリンクはこのような処理のために作成されました。の「ラスター」ライブラリが遅すぎるため 、ArcGIS(またはGRASSまたはMathematica)を使用しR
ます。
多くの場合、パラメータを少し試してみると役立ちます。画像をきれいにするために必要な拡大と縮小の量を決定する必要があります。通常、各操作はシャープなディテールの一部を滑らかにする傾向があるため、できる限り実行しないようにします。「エンティティ」の詳細の大部分を維持しながら、見かけ上の「ノイズ」の多くを除去するのにうまく機能するシーケンスを次に示します。「拡大」と「縮小」はどちらも白いセルを基準にしているため、拡大すると外側に拡大し、縮小すると黒いセルが白い領域に侵入します。
「差分」列は、各ステップで開始画像と終了画像の違いを強調するために色を使用します。青は白になった黒、青は白になった黒は黒になります。
残りの大きなピースを削除する必要がある場合は、RegionGroupを使用してそれらを識別し、その後、再分類によってそれらを消去できます。これは、最初の選択肢だったが、と少し初期のクリーニングExpand
とは、Shrink
作業を軽減し、所望の平滑化を提供します。
ちなみに、私はMathematicaコマンドを使用してこの図の8つの画像を作成することを選択しました。
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 *)
ArcGISのワークフローは同じですが、構文が長くなります。本当に使用したい場合はR
、「ラスター」ライブラリーをロードfocalFilter
し、エクスパンドとシュリンクを行う関数を作成するために活用してください。次に、それぞれ約1分待ってから操作を実行します...。
これは基本的に@whuberの答えの変形であり、ユークリッド距離を使用してラスタ境界を拡大および縮小し、セルの数を使用して成長/侵入するラスタの鋭い角を滑らかにします。ユークリッド距離は拡張を模倣しますが、侵食/収縮に負の値を導入することはできません。秘Theは、ユークリッド距離ラスタのネガを取得して拡大する反復プロセスを開発することです。以下は、特定のサンプル画像の手順と説明のためのスナップショットです。
ラスターを再分類して1のみを保持する(白いセル)
再分類されたラスターに2セル距離(この場合は60メートル)のユークリッド距離を適用します
Reclassify(値を持つセルはNODATAを取得し、NODATAは1になります)またはRaster CalculatorのConおよびIsNull演算子を使用して、展開されたラスタのネガを取得します
同じ負のラスタにユークリッド距離をもう一度適用します(60 m)
上記の同じプロセスに従って、これの否定を取ります
Raster CalculatorまたはReclassifyを使用して、このラスタ内のNODATAセルを0に割り当て、サンプルラスタの元の値に戻します
収縮 対 ユークリッド距離を展開
注:緑は処理されたセルを示します(質問内の白いセル)
ユークリッド距離の利点は、斜辺の範囲を介して各セルから適切な距離を取り、それ以外の場合は鋭いエッジを滑らかにすることです。一方、展開ツールと縮小ツールのセル数パラメーターは、すべての方向で同じ数のセルを処理します。これにより、境界ボックスのような境界ボックスが生成されるため、エッジ/コーナーが過度に一般化されます。
ただし、主な問題は、展開/縮小ほどノイズをうまく除去できず、答えよりも少し長くなります。