海老ノート

Google Earth Engine 苦闘の記録

SARの勉強3:スペックル その3

複数画像ImageCollectionのmean()とmedian()はどうだろう?

SARの勉強シリーズ1回目でも触れたけど、論文によっては複数画像の平均値だったり、一筆の畑の平均値だったりを使うことでスペックルノイズに対処しているのがある。どのくらいノイズ除去効果があって、エッジは残せるのか?

中心極限定理だろ

スペックル1回目で出てきた中心極限定理。分布の形を問わず、平均μ、標準偏差σの集団からN個サンプリングするとその平均はμ、標準偏差σ/√Nになる。

となると、一定期間でピクセルの散乱強度係数が変わらないと仮定したとき、その期間に得られたN枚の画像の平均から得られるピクセルの値は平均μ、標準偏差はσ/√Nとなると考えられる。つまり、データのバラつき(=スペックルノイズに起因)は標準偏差で表すと1/√Nで減っていくはず。

空間で平均をとっても同じように使える。畑や田んぼ、同じような林など散乱特性が同一と扱っても問題ないような一定面積の場合でも平均の分布を取れば、平均は変わらず、バラつきは小さくなるはず。

というわけで、単純に平均をとるだけでフィルタリング効果的なの得られるんじゃない?と思われるわけです。

やってみる

処理に使うのは3枚(前後1枚ずつ:±12日)と8枚(だいたい前後1か月ずつ)として、平均と中央値を取ってみた。 まずは画像から。前回と場所は同じ。

ターミナル付近

f:id:camarao:20210922095620j:plainf:id:camarao:20210922095624j:plainf:id:camarao:20210922095636j:plain
左:処理なし、中:3枚平均、右:8枚平均

f:id:camarao:20210922095620j:plainf:id:camarao:20210922095936j:plainf:id:camarao:20210922095939j:plain
左:処理なし、中:3枚中央値、右:8枚中央値

東側のゴルフ場

f:id:camarao:20210922100149j:plainf:id:camarao:20210922100154j:plainf:id:camarao:20210922100202j:plain
左:処理なし、中:3枚平均、右:8枚平均

f:id:camarao:20210922100149j:plainf:id:camarao:20210922100230j:plainf:id:camarao:20210922100233j:plain
左:処理なし、中:3枚中央値、右:8枚中央値

滑走路南端

f:id:camarao:20210922100312j:plainf:id:camarao:20210922100315j:plainf:id:camarao:20210922100330j:plain
左:処理なし、中:3枚平均、右:8枚平均

f:id:camarao:20210922100312j:plainf:id:camarao:20210922100402j:plainf:id:camarao:20210922100405j:plain
左:処理なし、中:3枚中央値、右:8枚中央値

感想
  • いい感じでノイズは減っているけど細部も残っている。フィルタリングよりも断然細部がくっきり。

  • 3より8の方が綺麗な画像。

  • 平均と中央値はあまりかわらない?

というわけで、全体としていいんじゃないかと思いました。

平均とか分散とか

CVの棒グラフ

f:id:camarao:20210922101119p:plain 比較のため1枚を使ったフィルタリングの結果も載せた。3枚の平均でもImproved Sigma Leeフィルタと同程度くらいはノイズが下がってる。8枚だともっといい感じ。

ヒストグラム
平均3枚

f:id:camarao:20210922101340p:plainf:id:camarao:20210922101433p:plain
左:VV、右:VH

平均8枚

f:id:camarao:20210922101344p:plainf:id:camarao:20210922101439p:plain
左:VV、右:VH

中央値3枚

f:id:camarao:20210922101622p:plainf:id:camarao:20210922101628p:plain
左:VV、右:VH

中央値8枚

f:id:camarao:20210922101635p:plainf:id:camarao:20210922101639p:plain
左:VV、右:VH

中心極限定理はあってる?

f:id:camarao:20210922102229p:plain
処理前の画像の標準偏差を1とした時の各処理の標準偏差
ちょっとわかりにくいタイトルのグラフだけど、処理前の標準偏差を1とすると、平均3枚では1/√3= 0.5773... 、平均8枚では1/√8 = 0.3535...になると思ったというのを表すグラフ。全体として滑走路以外は遠からずという感じでしょうか。ドンピシャとまでは言い切れないけど、いい線いってる。

今日のまとめ

  • 平均値でもフィルタと同じようなノイズ削減効果が期待できる。

  • 舗装された滑走路は平均をとるとノイズが増えた。ツルツルしたところはそうなるんだと推測。

  • 3枚の平均でもフィルタと同等(詳しくはフィルタによるけど)までノイズが減る。枚数を増やせば増やすほどノイズは減る。

  • 平均のフィルタに対する利点は2点:一つは細部がつぶれずに残ること。もう一つは処理時間が短いこと。フィルタはGoogle Earth EngineでのAssetsへの書き出しに2時間程度かかったけど、平均だと2~3分で終わった。

  • フィルタの平均に対する利点は1点、ただし決定的:1枚の画像だけで処理できること。もちろんSentinel-1は無料だし、GEEでサクサク処理できるから何枚使ってもいいんだけど、時間の経過で地表の状態が変わったら使えない。農地のように短時間で状態がガラッと変わる場所は、時間的な平均をとる処理は正しくない。

  • 空間的な平均も時間的な平均と同じようにノイズ削減効果が期待できそう(やってないけど)。

  • 平均と中央値では平均がいいと思う。似たような結果だったけど中心極限定理を踏まえてとなると平均の方が妥当に思う。

  • フィルタをかけて平均をとったり、平均をとってからフィルタをかけたりすると更にノイズは減るのだろうとは思う。まあ、なんだかんだいってそこまで必要な場合はそんなにないのかもしれない。自分の使いたいデータ分析の方法でどの程度までノイズを許容するかという話だろうから。

  • 平均をとる枚数を増やせば増やすほどノイズは減るけど、減り方はだんだん鈍くなる(1/√枚数)。また、長期間の情報をつかうことになるから、地表の状態が同じという条件を満たすのが難しくなる。たとえば「夏」だと森林かわらない!とか自信を持って言える期間に限定するのがいいと思う。

というわけで、スペックル編はいったんここまで。 勉強になりました。