エッジ検出

エッジ検出は、さまざまな画像処理タスクに適用できます。 畳み込みのセクションで説明したエッジ検出カーネルに加えて、Earth Engine にはいくつかの特殊なエッジ検出アルゴリズムがあります。Canny エッジ検出アルゴリズム(Canny 1986) は、4 つの個別のフィルタを使用して、対角線、垂直線、水平線のエッジを特定します。この計算では、水平方向と垂直方向の 1 階微分値を抽出し、勾配の振幅を計算します。小さい大きさの勾配は抑制されます。高周波ノイズを除去するには、必要に応じてガウス カーネルで画像を事前フィルタします。次に例を示します。

コードエディタ(JavaScript)

// Load a Landsat 8 image, select the panchromatic band.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318').select('B8');

// Perform Canny edge detection and display the result.
var canny = ee.Algorithms.CannyEdgeDetector({
  image: image, threshold: 10, sigma: 1
});
Map.setCenter(-122.054, 37.7295, 10);
Map.addLayer(canny, {}, 'canny');

threshold パラメータは最小勾配の大きさを決定し、sigma パラメータは高周波ノイズを除去するガウス プリフィルタの標準偏差(SD)です。エッジ検出器からの線の抽出では、Earth Engine は Hough 変換(Duda and Hart 1972)を実装しています。前述の例を続け、次のように Canny 検出機能から線を抽出します。

コードエディタ(JavaScript)

// Perform Hough transform of the Canny result and display.
var hough = ee.Algorithms.HoughTransform(canny, 256, 600, 100);
Map.addLayer(hough, {}, 'hough');

Earth Engine の別の特殊なアルゴリズムとして、zeroCrossing() があります。ゼロクロッシングは、右側、下側、対角線の右下側のピクセルが反対の符号を持つピクセルとして定義されます。これらのピクセルのいずれかが符号が反対の場合、現在のピクセルは 1(ゼロクロス)に設定されます。それ以外の場合は 0 に設定されます。エッジを検出するには、ゼロ クロッシング アルゴリズムを画像の 2 番目の微分推定に適用します。次の例は、エッジ検出に zeroCrossing() を使用する方法を示しています。

コードエディタ(JavaScript)

// Load a Landsat 8 image, select the panchromatic band.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318').select('B8');
Map.addLayer(image, {max: 12000});

// Define a "fat" Gaussian kernel.
var fat = ee.Kernel.gaussian({
  radius: 3,
  sigma: 3,
  units: 'pixels',
  normalize: true,
  magnitude: -1
});

// Define a "skinny" Gaussian kernel.
var skinny = ee.Kernel.gaussian({
  radius: 3,
  sigma: 1,
  units: 'pixels',
  normalize: true,
});

// Compute a difference-of-Gaussians (DOG) kernel.
var dog = fat.add(skinny);

// Compute the zero crossings of the second derivative, display.
var zeroXings = image.convolve(dog).zeroCrossing();
Map.setCenter(-122.054, 37.7295, 10);
Map.addLayer(zeroXings.selfMask(), {palette: 'FF0000'}, 'zero crossings');

カリフォルニア州サンフランシスコの空港の近くのゼロクロッシング出力は、図 1 のようになります。

ゼロ クロッシング SFO
図 1. カリフォルニア州サンフランシスコの空港付近の領域のゼロクロッシング出力(赤)と、背景の Landsat 8 パンクロマティック バンド(右)。