i.pansharpenを使用するときに

76 views
Skip to first unread message

フリード・ティンクス

unread,
Apr 1, 2019, 2:33:22 AM4/1/19
to QGIS初心者質問グループ
こちらフリードです。
お疲れ様です。
i.pansharpenという機能を使おうと思ったのですが、画像が12bitの画像で、計算をしてくれませんでした。
GRASSの説明を読むと8bitの画像しか計算してくれないということでGIMPで8bitに変換したら座標情報が全部消えてしまいました。
座標情報を残したままこの画像をなんとか8bitまで落としてi.pansharpenで計算できるようにしたいです。
何か方法があれば教えてください。

sakuya_izayoi

unread,
Apr 1, 2019, 10:29:14 PM4/1/19
to QGIS初心者質問グループ
フリードさま。
こちらizayoiです。
思っていることと一致しているかが不安ですが、
おそらく衛星画像か航空写真かわかりませんが、
「RGBそれぞれバラバラのスペクトルで取得された画像があり、高精細化するためのpan画像が手元にある」
という感じでしょうか?
そして、
「画像が12bitであったためGRASSの機能では計算できず、見た目高解像度画像を作りたいので8bit化したい」
という感じでしょうか?

それならば、Osgeo4Wのshellを起動してください。これはいつも通りインストールしたときについてくるやつです。(ogr2ogrという言葉が以前から出ているので大丈夫ですよね?)
起動したら、cdコマンドで当該のフォルダ(ディレクトリ)まで移動します。
コマンドですが

gdal_translate -of GTiff -ot Byte -scale 0 4095 0 255 入力画像.tif 出力画像.tif
と入力します。
0 4095
としたのは12bitなので2の12乗(2^12)だから4096になりますが、0からカウントするため0から4095=4096段階になるという事からです。
これで画像の8bit化はできます。
またおまけ。windows限定ですが(CADで一緒に遊んだときはwindowsユーザーでしたよね)
フォルダ内にある画像に対して全部同じ処理を実行したい場合には
for %N in (*.TIF) do gdal_translate -of GTiff -ot Byte -scale 0 4095 0 255 %N convert_%~nN.tif
とすれば実施できます。
(*.TIF)の拡張子は適宜tifかTIFに書き換えてください。
ちなみに、16bit画像の場合は0 65535になります。(2^16 - 1=65536-1=65535)

12bit画像のデータの場合という経験がないですが、画像合成をしたいのかなと思ったのでちょっとおせっかいです。
衛星データであった場合は、ダウンロードしたままの画像では、反射率が計算されていない状態です。このまま8bit化しても望んだとおりの可視光画像になりません。あらかじめラスタ計算機で反射率計算をしたのちに、計算結果図に対して8bit画像化をしてから、3バンド合成画像を作った方が良いという経験則も記載しておきます。そうするとある程度現実再現した8bitのカラー写真が得られます。

フリード・ティンクス

unread,
Apr 2, 2019, 2:03:27 AM4/2/19
to QGIS初心者質問グループ
十六夜先生
ありがとうございます。このような事がやりたかったのです。12ビットって2^12で計算できるのですね。ビットの事をよくわかっておりませんでした。

そして後半部分のアドバイスありがとうです。
気が付かずに実施してしまうところでした。反射率を計算してからビット数を落としてきれいにした後に画像合成ですね。
使用している画像がLANDSAT8という衛星でしたので16bit画像でした。どうもすみません。
Reply all
Reply to author
Forward
0 new messages