海老ノート

Google Earth Engine 苦闘の記録

SARの勉強2:入射角の影響

SAR勉強シリーズを始める

ちょっと勉強したいと思ったら結構なボリュームを勉強しないと分からないことが片付かないSAR。ちょっとずつやれば、そのうち理解が深まるんじゃないかと期待してシリーズを始めることに。まず、前回ノイズとエラーの原因として挙げたことから見てみようかと。で、まあ簡単に見られそうな入射角から取り組んでみます。

問題のおさらい

Google Earth Engineで提供されているSARデータは、衛星から斜め下方に照射されるマイクロ波のうち、衛星に帰ってきたものの強度(とタイミング的なやつが本当はあるけど入っていない)を測った結果をきれいにして画像にしたもの。衛星からはある幅をもってマイクロ波を照射するため、衛星に近い側と遠い側では(地表面が平坦であるとき)入射角が変わる。波の反射する角度やら反射しやすさやらは入射角によって変化するので、地表の状態が同じであっても(つまり土地被覆がおなじでも)、SARの画像データの値が違うはず。それはどうなのということ。

実際に画像を見てみると、偏波VVのSentinel-1画像の海上では境目に線がはっきり見える。この線の東西で地表の状態が違うことは考えにくいから、入射角の影響だと見て取れる。ただ陸上はよくわかんないな。それでVHの方には見えない。

f:id:camarao:20210912203335p:plainf:id:camarao:20210912203007p:plain
Sentinel-1 左:VV、右:VH

検証方法

土地被覆が同じで傾斜がない場所であれば(本来の)後方散乱強度は同じはず、というわけなんですが、検証できるのは広大な場所でないといけない。Sentinel-1の一枚の画像は数百キロくらいだから、取りうる角度を網羅しようと思ったら相当広くないとしんどい。というわけで、3か所を考えてみました。 それぞれの場所で、Sentinel-1画像をモザイクして得られる値(ここではσ0)と入射角の散布図を描きます1。その後、前回紹介したTerrain Flatteningの前処理(下記リンク)を施して同じような散布図を描いて、補正処理の効果をみます。散布図に線を引っ張ってみましたが検定はかけてません。

github.com

アマゾンの森林

アマゾン広大だし、平坦な場所多そうだし。

f:id:camarao:20210912204852p:plainf:id:camarao:20210912204856p:plainf:id:camarao:20210912204905p:plain
処理前:左からVV、VH、VV/VH
f:id:camarao:20210912205052p:plainf:id:camarao:20210912205055p:plainf:id:camarao:20210912205058p:plain
処理後:左からVV、VH、VV/VH
アマゾンでは入射角度が大きいほど値は小さくなる傾向。VVの傾きが一番大きく、VHは中間、VV/VHはほとんど傾いていない。 前処理をするとVVでは影響が緩和されたけど、VHでは傾きがちょっと急になった。

オーストラリア南部の荒野

検索したら世界一広い平地と出てきたので。多分砂漠だと思います。

f:id:camarao:20210912205612p:plainf:id:camarao:20210912205615p:plainf:id:camarao:20210912205624p:plain
処理前:左からVV、VH、VV/VH
f:id:camarao:20210912205721p:plainf:id:camarao:20210912205731p:plainf:id:camarao:20210912205737p:plain
処理後:左からVV、VH、VV/VH
オーストラリア南部でも入射角度が大きいほど値は小さくなる傾向。VVの傾きが一番大きく、VHは中間、VV/VHはほとんど傾いていないというのも同じ。 前処理をすると回帰式の傾きが逆(負から正)になっちゃったりしました、傾きは大きくないけど。なんか元のデータのとり方がまずかった気もする。

五大湖のひとつ、スペリオール

横に広そうな湖ということで。

f:id:camarao:20210912210147p:plainf:id:camarao:20210912210151p:plainf:id:camarao:20210912210159p:plain
処理前:左からVV、VH、VV/VH
f:id:camarao:20210912210226p:plainf:id:camarao:20210912210231p:plainf:id:camarao:20210912210238p:plain
処理後:左からVV、VH、VV/VH
こちらも傾向は同じ。入射角度が大きいほど値は小さくなる傾向。VVの傾きが一番大きく、VHは中間、VV/VHはほとんど傾いていない。補正をするとVVの傾きは緩やかになりVHはやや緩やかに。

まとめ

というわけで、まとめると

  • 入射角が大きいほど値は小さくなる。
  • 入射角の影響はVVで一番大きく次にVH。VV/VHの比をとると影響はほとんどなさそう。
  • 前処理(Terrain Flattening)をすると、VVでは入射角の影響が緩和される。VHは微妙。VV/VHは元々影響がなさそうなので前後での傾向に変化は少ない。

さらに実用を踏まえて付け加えると

  • 一枚の画像で小面積(例えば市町村とか以下のサイズ)を対象とした分析をする場合、入射角はそれほど変わらないのであまり気にする必要はない。ただし、画像が複数枚のモザイクの場合、あるいは衛星の進行方向の違うデータ(ASCENDINGとDESCENDING)を混ぜて使う場合は別。
  • そもそも森林、草地灌木(砂漠のイメージ)、水域でかなりσ0の値が違う。この土地被覆による違いと比べると入射角の影響による違いは随分小さい。なので分類のためにSentinel-1を使うときは、入射角の前処理でそんなにカリカリしなくても分類できちゃいそう。
  • 分類ではなく、たとえばσ0と植被率を回帰するとか(できるか知らないけど)の場合は当然補正をすべし。
  • ものすごく平坦な場所とかでない限り、どうせTerrain Flattening (地形補正)はする。その時に入射角の影響が緩和されるならよし。
今回のコード

前で紹介しているMullissa et al. 2021のコードを使わせてもらっています。GitHubからリンクを辿ると前処理用のコードがコピーされるので、それをrequireで読み込んでいます。上の8行目までを適当に変えれば、3箇所の結果の散布図が出てきます。

https://code.earthengine.google.com/8f48feec90c619deb614489765718072


  1. なお普通にデータカタログに出てくるSentinel-1はlog値(デシベル)のやつなんですが、前処理のお手本コードでは小数点表記のものを使っていたのでそれに乗っかってみました。この、FLOATというσ0のデータは検索しても出てこなくって、いったいどこから出てきてるのかよくわかりませんでした。 FLOATのデータの説明も公式にちゃんとありました(一番下に" If you want to use the underlying collection with raw power values (which is updated faster), see COPERNICUS/S1_GRD_FLOAT.“との記述)。