衛星画像処理の基礎と応用 - リモートセンシングから変化検出まで
衛星画像とリモートセンシングの基礎
衛星画像処理 (Satellite Image Processing) は、人工衛星に搭載されたセンサーで取得した地球観測データを解析する技術です。農業、環境監視、都市計画、防災、気候変動研究など幅広い分野で活用されています。
主要な地球観測衛星:
- Sentinel-2 (ESA): 13 バンド、解像度 10-60m、5 日周期。無料公開。植生・水質監視に最適
- Landsat 8/9 (NASA/USGS): 11 バンド、解像度 15-100m、16 日周期。無料。40 年以上の時系列データ
- ALOS-2 (JAXA): SAR (合成開口レーダー)、解像度 1-10m。全天候観測が可能
- WorldView-3 (Maxar): 解像度 31cm (パンクロ)。商用最高解像度
- Planet (PlanetScope): 解像度 3m、毎日全球撮影。約 200 機のコンステレーション
衛星画像の特徴:
- マルチスペクトル: 可視光だけでなく近赤外、短波赤外、熱赤外など複数の波長帯を同時に観測
- 広域性: 1 シーンで 100km × 100km 以上をカバー
- 周期性: 同一地点を定期的に観測し、時系列変化を追跡可能
- 大容量: Sentinel-2 の 1 シーンは約 800MB (全バンド)
衛星画像は通常の RGB 画像と異なり、各ピクセルが物理量 (放射輝度や反射率) を表す定量的なデータです。この特性を活かした解析が、リモートセンシングの核心です。
前処理 - 幾何補正と大気補正
衛星画像の生データには、センサーの幾何学的歪み、大気の影響、地形の影響などが含まれています。定量的な解析を行うためには、これらの影響を除去する前処理が不可欠です。
幾何補正 (Geometric Correction): 衛星の姿勢変動、地球の曲率、地形の起伏による画像の歪みを補正し、地図座標系 (UTM など) に正確に位置合わせします。
- オルソ補正: DEM (数値標高モデル) を使用して地形の影響を除去し、真上から見た画像 (正射投影) に変換する
- GCP (Ground Control Point): 既知の地上座標点を使用して幾何精度を向上させる
- Sentinel-2 の Level-1C 製品は幾何補正済みで、位置精度は約 12m (CE95)
大気補正 (Atmospheric Correction): 大気中の散乱・吸収の影響を除去し、地表面の真の反射率を推定します。
- TOA (Top of Atmosphere) 反射率: 大気上端での反射率。大気の影響を含む
- BOA (Bottom of Atmosphere) 反射率: 地表面の反射率。大気補正後の値
- Sen2Cor: ESA 公式の Sentinel-2 大気補正ツール。Level-1C → Level-2A 変換
- 6S (Second Simulation of Satellite Signal): 放射伝達モデルに基づく高精度な大気補正
雲マスク: 雲に覆われたピクセルは地表情報を含まないため、解析から除外する必要があります。Sentinel-2 の SCL (Scene Classification Layer) バンドが雲・雲影・雪を自動分類します。Fmask アルゴリズムも広く使用されています。雲被覆率が 30% を超えるシーンは通常使用しません。
植生指数と水域指数 - バンド演算による情報抽出
衛星画像のマルチスペクトルバンドを組み合わせた演算 (バンド演算) により、植生の活性度、水域の分布、土壌の状態などを定量的に評価できます。これらの指数は環境モニタリングの基本ツールです。
NDVI (Normalized Difference Vegetation Index): 最も広く使用される植生指数です。健全な植生は近赤外 (NIR) を強く反射し、赤色光 (Red) を吸収する特性を利用します。
NDVI = (NIR - Red) / (NIR + Red)
- 値の範囲: -1 から +1。裸地 0.1-0.2、草地 0.3-0.5、森林 0.6-0.9
- Sentinel-2: Band 8 (NIR, 842nm) と Band 4 (Red, 665nm) を使用
- 用途: 農作物の生育監視、森林の健全性評価、干ばつモニタリング
NDWI (Normalized Difference Water Index): 水域の検出に使用します。
NDWI = (Green - NIR) / (Green + NIR)
- 水域: NDWI > 0、陸地: NDWI < 0
- 洪水マッピング、湖沼面積の変化追跡に活用
その他の重要な指数:
- EVI (Enhanced Vegetation Index): NDVI の改良版。大気の影響と土壌の影響を軽減。密な植生でも飽和しにくい
- NDBI (Normalized Difference Built-up Index): 都市域の検出。(SWIR - NIR) / (SWIR + NIR)
- NBR (Normalized Burn Ratio): 火災跡地の検出。(NIR - SWIR2) / (NIR + SWIR2)
Python では rasterio でバンドデータを読み込み、NumPy の配列演算で指数を計算します。ゼロ除算を避けるため np.where(denominator != 0, numerator/denominator, 0) のガード処理が必要です。
土地被覆分類 - 機械学習による地表面の分類
土地被覆分類 (Land Cover Classification) は、衛星画像の各ピクセルを「森林」「農地」「都市」「水域」などのカテゴリに分類する処理です。都市計画、環境アセスメント、炭素収支の推定に不可欠です。
教師あり分類の手法:
- Random Forest: 複数のバンド値と指数 (NDVI, NDWI 等) を特徴量として使用。scikit-learn で実装可能。精度 85-90% が一般的
- SVM (Support Vector Machine): 高次元特徴空間での分類に強い。小規模データセットで有効
- 深層学習 (CNN): 空間的なパターンを学習。U-Net や DeepLab で高精度なセグメンテーション。精度 90-95%
訓練データの作成:
- Google Earth や高解像度画像を参照して、各クラスの代表的な領域をポリゴンで指定する
- クラスごとに最低 100-500 ピクセルのサンプルを収集する
- クラス間のバランスを考慮し、少数クラスはオーバーサンプリングする
精度評価: 混同行列 (Confusion Matrix) から以下の指標を計算します。
- Overall Accuracy (OA): 全体の正解率。目標 85% 以上
- Kappa 係数: 偶然の一致を補正した精度。0.8 以上で優秀
- Producer's Accuracy: 各クラスの再現率 (Recall)
- User's Accuracy: 各クラスの適合率 (Precision)
Google Earth Engine (GEE): クラウドベースの地理空間解析プラットフォームで、ペタバイト規模の衛星データにブラウザからアクセスし、分類処理を実行できます。JavaScript または Python API で利用可能で、大規模な時系列解析に最適です。
変化検出 - 時系列衛星画像からの変化抽出
変化検出 (Change Detection) は、異なる時期に撮影された衛星画像を比較し、地表面の変化を自動的に検出する技術です。森林伐採、都市拡大、災害被害の把握に活用されます。
変化検出の基本手法:
- 画像差分法: 2 時期の画像 (または指数) の差分を計算し、閾値で変化/非変化を判定。最もシンプルだが閾値設定が課題
- 比率法: 2 時期の画像の比率を計算。大気条件の違いに対してロバスト
- CVA (Change Vector Analysis): 多バンドの変化をベクトルとして表現し、変化の大きさと方向を同時に評価
深層学習による変化検出:
- Siamese Network: 2 時期の画像を同一のエンコーダに入力し、特徴量の差分から変化を検出。FC-Siam-diff が代表的
- BIT (Bitemporal Image Transformer): Transformer ベースで長距離の空間的依存関係を捉え、高精度な変化検出を実現
- 精度: F1 スコア 0.85-0.92 (データセットに依存)
時系列解析: 2 時期の比較だけでなく、数年分の時系列データを解析することで、季節変動と実際の変化を区別できます。BFAST (Breaks For Additive Season and Trend) アルゴリズムは、時系列の季節成分とトレンド成分を分離し、突発的な変化点を検出します。
実践例 - 森林伐採の検出: Sentinel-2 の NDVI 時系列を月次で計算し、前年同月比で 0.3 以上低下した領域を伐採候補として抽出します。雲マスクと季節変動の補正を適用し、偽陽性を削減します。Global Forest Watch はこの手法で全球の森林変化をほぼリアルタイムで監視しています。
衛星画像処理の実践 - ツールとワークフロー
衛星画像処理を実務で活用するための具体的なツール、データ取得方法、処理パイプラインを解説します。無料で利用可能なリソースを中心に紹介します。
データ取得:
- Copernicus Open Access Hub: Sentinel-1/2/3 の全データを無料ダウンロード。API でバッチ取得可能
- USGS EarthExplorer: Landsat 全アーカイブを無料提供。MODIS、ASTER も取得可能
- Google Earth Engine: ブラウザ上で直接解析。ダウンロード不要で大規模処理が可能
- AWS Open Data: Sentinel-2、Landsat の COG (Cloud Optimized GeoTIFF) を S3 から直接アクセス
処理ツール:
- QGIS: オープンソース GIS。衛星画像の表示、バンド演算、分類が可能。無料
- SNAP (ESA): Sentinel データの公式処理ツール。大気補正、幾何補正、SAR 処理を統合
- Python (rasterio + GDAL): プログラマティックな処理。
rasterio.open()で GeoTIFF を読み込み、NumPy で演算 - xarray + rioxarray: 多次元配列として衛星データを効率的に処理。時系列解析に最適
処理パイプラインの例:
- Sentinel-2 Level-2A (大気補正済み) をダウンロード
- 雲マスク適用 → 有効ピクセルのみ抽出
- NDVI 計算 → 時系列スタック作成
- 変化検出 or 分類 → 結果の GeoTIFF 出力
- QGIS で可視化・地図作成
大規模処理の戦略: 全国規模の解析では数 TB のデータを処理する必要があります。Google Earth Engine、AWS Lambda + S3、または Dask による並列処理が有効です。COG 形式を使用すると、必要な領域のみを部分的に読み込めるため、I/O を大幅に削減できます。