PR

gdal_translateで衛星画像のサムネイル画像を作成する方法

サムネイル画像 GDAL
サムネイル画像

衛星画像のサムネイル(JPEG)を作成する方法を解説します。
衛星画像はスマホやデジカメ、ドローンで撮影した画像とは異なるフォーマットとなっているため注意が必要です。

注意する点は下記になります。
・衛星画像のBand数、並び順
・画素値の範囲

サムネイル作成コマンド

gdal_translateのサムネイル作成コマンドは下記になります。
パラメータの解説を順番に行っていきます。

gdal_translate -of JPEG -b 3 -b 2 -b 1 -ot Byte -scale 1041 9645 -outsize 1000 0 origin.tif thumbneil.jpg

衛星画像のBand数、並び順

衛星画像は機種によってBand数が異なります。さらにBandの順序もバラバラです。
そのためサムネイルを作成する場合にRGBでどのBandを使用するのか指定しないと見た目の色合いがおかしいな画像になってしまいます。

例えばRapidEyeの場合マルチ画像が5Band存在しています。
さらに色の並び順がRGBではなくBGRになっているため作成されたサムネイルの色がおかしなことになります。

バンド RapidEyeのRGB
Band1 Blue
Band2 Green
Band3 Red
Band4 Red Edge
Band5 Near IR

この問題を解決する方法として使用するBandを指定する方法があります。
JPEGを作成する場合Red、Green、Blueを順に指定する必要があります。
-bのオプションを使うことでRed、Green、Blueに何番目のBandを使用するか指定することができます。
上記のRapidEyeの場合は「-b 3 -b 2 -b 1」と指定することでRed、Green、Blueの順になります。

画素値の範囲

JPEGファイルを作成する場合は画素の範囲を0~255に収める必要がありますが、衛星画像の画素の範囲は0~65535となっているためそのまま変換すると対応したビューアーを使用しなければ見ることができません。
そこで画素の範囲を0~65536を0~255に変換する必要があります。
-scaleを指定することで使用する画素の範囲を指定することが可能です。
指定する範囲はgdalinfoコマンドを使用して確認します。

コマンド

gdalinfo -mm origin.tif

結果抜粋

Band 1 Block=5000x1 Type=UInt16, ColorInterp=Gray
  Description = Layer_1
    Computed Min/Max=2032.000,58926.000
  Metadata:
    LAYER_TYPE=athematic

Band 2 Block=5000x1 Type=UInt16, ColorInterp=Undefined
  Description = Layer_2
    Computed Min/Max=0.000,60851.000
  Metadata:
    LAYER_TYPE=athematic

Band 3 Block=5000x1 Type=UInt16, ColorInterp=Undefined
  Description = Layer_3
    Computed Min/Max=651.000,57198.000
  Metadata:
    LAYER_TYPE=athematic

Band1~Band3のComputed Min/Maxの部分を参照して最小値と最大値を確認できるのでこの範囲を指定としたいのですが、衛星画像の画素値にはゴミが含まれていることがあり範囲が広くなりすぎてしまいます。
衛星画像のヒストグラムを見ると「10000~最大」の部分と「0~1000」くらいの部分はゴミ画素として扱ってしまって問題ないことが分かります。

この範囲についてはヒストグラムを確認するか画素の前後2%くらいを除いた範囲を算出したほうが良いです。
ここで有効な範囲は1041~9645とします。そのためオプションは「-scale 1041 9645」です。

実行結果

実行したコマンドと実行結果のサンプルは下記になります。

コマンド

gdal_translate -of JPEG -b 3 -b 2 -b 1 -ot Byte -scale 1041 9645 -outsize 1000 0 origin.tif thumbneil.jpg

サムネイル

サムネイル作成の基本については下記の記事が参考になります。
【超簡単】gdal_translateでサムネイル画像作成する方法
gdal_translateを使って簡単にサムネイル画像を作成する方法をご紹介します。
タイトルとURLをコピーしました