mieki256's diary



2016/04/07(木) [n年前の日記]

#2 [gimp] GIMPのMathMap用スクリプトを少し修正

昨日書いた GIMP + MathMap用のスクリプトは、横:縦=1:1の心射円筒図法の画像を、MathMap で正距円筒図法の画像にしてから、GIMPで2:1になるように縦方向を縮小、ということをやってたのだけど。MathMapのフィルタ処理+GIMPの縮小処理で、2回の変換が入るせいか、画像が荒れてしまうことに気づいたわけで。

そこで、MathMapで縮小までやってしまうようにスクリプトを少しだけ修正。これなら変換が1回で済むから多少はマシなはず。

_cylindrical2equirectangular_scale.mm
# cylindrical to equirectangular and scale
filter cylindrical2equirectangular_scale(image in)
    in( xy: [x, (1/pi) * tan( clamp(y*pi, -pi/2, pi/2) ) ] )
end
修正内容は…。tan( y * (pi / 2) ) としていたところを、tan( clamp(y*pi, -pi/2, pi/2) ) にしただけ。

画像の縦方向を半分に縮小するなら、in(xy:[x, y * 2]) と書けばいいわけだけど。そのノリで、tan( y * (pi / 2) ) * 2 と書いてしまうと、心射円筒図法から正距円筒図法に変換するあたりがおかしくなる。この場合、tan() に渡す値を x 2 してやらないといけない。ということで、tan( y * (pi / 2) * 2) = tan( y * pi ) になる。

ただ、tan() に渡す値を x 2 にしただけでは、画像が縦方向に何回も描画される結果になってしまう。何故かというと、tan() に渡してる値が、-90度 〜 +90度を超えてしまうため。 _tan()は90度を超えるとまた同じ値の変化が表れてしまう ので、同じ画像が何回も描画されてしまうわけで。

なので、clamp(値, 最小値, 最大値) を使って、値が -90度から+90度の範囲に収まるようにしてる。

使う時の注意点・作業手順。 :

前述のスクリプトを使う際、対象画像は、横:縦 = 1:1 の画像にしておくこと。

例えば、Vue で 46:21、1024 x 467ドットの360度パノラマ画像をレンダリングしたとして。GIMP で開いてから、以下のような手順になる。
  1. 画像 → キャンバスサイズの変更。縦幅を横幅と同じ 1024ドットに、かつ、画像を中央に配置する。オフセットの「中央」ボタンを押せば、中央に配置できる。あくまで、キャンバスサイズの変更をするだけ。画像の拡大縮小はしない。拡大縮小してしまうと、心射円筒図法から正距円筒図法への変換がおかしくなる。
  2. そのままだと、対象レイヤーが以前のサイズを引き継いだままになってる。レイヤーサイズも変更しないといけない。レイヤーを右クリック → アルファチャンネルの追加。かつ、レイヤーを右クリック → レイヤーをキャンバスに合わせる。これで、レイヤーも、キャンバスと同じ、1:1のサイズになる。
  3. 前述のMathMapスクリプトを実行。フィルタ → 汎用 → MathMap。これで、正距円筒図法の画像になってるはず。

変換後、上下の透明部分が邪魔なので、トリミングしないといけない。
  • 画像 → 画像の自動切り抜き。これで上下の透明部分を省いたサイズでトリミングされる。その後、画像 → キャンバスサイズの変更。横:縦 = 2:1 のキャンバスサイズに変更する。
  • あるいは、ガイドと切り抜きツールを使ってトリミングしてもいい。表示 → ガイドにスナップ、が有効な状態で、画像 → ガイド → 均等にガイド。横の分割数を1、縦の分割数を4にしてガイドを作成。これで、切り抜きツールを使って 2:1 のサイズでトリミングしやすくなる。

「均等にガイド」は、GIMPの追加スクリプト。 _均等にガイド(Grid of guides) から入手できるはず。

MathMapの設定について。 :

色々試してみたけど、MathMap の Settings の Supersampling は、有効にすればいいというものでもなさそうだなと。有効にしたら、結果画像が結構ぼやけてしまった。

デフォルトでは Antialiasing だけチェックが入ってるけど、その状態が、バランスが取れてるのかもしれず。

以上です。

過去ログ表示

Prev - 2016/04 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project