最初に、能登地震により影響を受けた方々へ、心からのお見舞いを申し上げます。
今回は、地震の影響による、海岸沿いの道路についての状況を確認してみようと思い、衛星画像から差分解析。
いつものようにEObrowserで画像を取得。
場所は、石川県輪島市 三ッ子浜のあたり。
雲が多く、比較したのは2023.12.06と2024.01.30を選択した。
差分をとって、改めて見るまでは、意味がよくわからなかったのだが、海岸線沿いに大きな変化が見られる。
左が地震前、右が地震後である。(見やすいよう明るさは変更している。)
差分解析による、差分抽出を実施しできた画像
今回の差分はclaude 2に投げて作ってもらったプログラムを用いている。
海岸線に沿って、海岸線が隆起した事で、茶色い部分が増えているのが最初の画像でもみてとれる。さらに差分データを元にマークをつけた画像でみるとさらにわかりやすい。
たしかに、海岸線の話も、言葉には聞いていた。
しかし、今回の地震のテレビ報道は、特に繰り返しの衝撃映像が多く、家族の手前あまり見ていなかった。
今更ながらであるが、実際このような状態になっているのを、衛星画像で目の当たりにし衝撃を受けた。
これまで、私も何回かは、地震前後の画像比較は行なっているが、海岸線がここまで変化した状況を目の当たりにするのは初めてである。
Youtubeにアップされている近況の動画をみると、現在でもこんな感じのようだ。
石川県輪島市渋田町 三ッ子浜海岸 国道249号線崩落部分 2024年3月17日(日) 風切り音あり音量注意 - YouTube
全面的な復興への道のりは、まだまだ時間がかかるだろうが、復旧して観光できるエリアもあるので、復興の助けになるような、エリアには、皆様にもぜひ足を運んでいただき、復興につなげていただければと思います。
差分解析に使ったプログラムは以下の通り。
import cv2
import numpy as np# 画像を読み込む
#グレースケールで読み込み
img1 = cv2.imread('2023-12-06-00_00_2023-12-06-23_59_Sentinel-2_L2A_True_color.png',1)
img2 = cv2.imread('2024-01-30-00_00_2024-01-30-23_59_Sentinel-2_L2A_True_color.png',1)# グレースケール変換
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)# ガウシアンフィルタで平滑化
blur1 = cv2.GaussianBlur(gray1, (5, 5), 0)
blur2 = cv2.GaussianBlur(gray2, (5, 5), 0)# 差分画像の計算
diff = cv2.absdiff(blur1, blur2)# 二値化
thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]# 輪郭抽出
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 変化領域を可視化
result = img2.copy()
for cnt in contours:
area = cv2.contourArea(cnt)
if area > 10: # 小さな変化領域を無視
cv2.drawContours(result, [cnt], 0, (0, 255, 0), 2)#cv2.imshow('Change Detection', result)
#cv2.waitKey(0)
#cv2.destroyAllWindows()cv2.imwrite("diff-c.png", result)