BILINEAR モードについて
rev10 では、geotransraw() と poltransraw() の2つの 8bit データ -> 画像変換関数にモード (mode) として 'NEAREST' 又は 'BILINEAR' を指定することができるようにしました。
生 (raw = 8bit ) データ変換 (trans) 関数 { 但し、変換方式は緯度経度 (geo) 又は ポーラステレオ (pol) } における 'NEAREST' 又は 'BILINEAR' というのは、例えば Python の Image ライブラリ (PIL) においても resize() などの関数で利用できるようになっており、 PIL ではさらに 'BICUBIC', 'ANTIALIAS' も利用できるようになっている。
画像処理論のオンライン教材では、 http://sango.lab.tkikuchi.net/Members/tkikuchi/courses/img2008/07 にあるが、元ネタは「画像処理ハンドブック」である。NEAREST と BILINEAR の計算式は以下の通り。
最近隣内挿法
-
P = Pi,j i = [ u + 0.5 ] j = [ v + 0.5 ]
共一次内挿法
-
P = {(i + 1) - u}{(j + 1) - v} Pi,j + {(i + 1) - u}{v - j} Pi,j+1 + {u -i}{(j + 1) - v} Pi+1,j + {u -i}{v - j} Pi+1,j+1 i = [u] j = [v]
但し、i, j はそれぞれ u,v 軸で実際の点 P(u,v) (u,v は実数) に下から最も近い整数で、[ ] はガウスの(切り捨て)記号である。最近隣内捜法では要するに座標値を四捨五入しているのに対して、共一次内挿法では周りの4点を使って内挿値を計算する。
保存書庫のデータの「モード」
気象情報頁の開始のきっかけとなった GAME と ALL の PGM 画像データは全て 'NEAREST' モードで作成されている。計算機の能力の問題もあり、開始当初は 'BILINEAR' モードを実装することが、特に衛星本体の姿勢制御データを考慮した変換をしなければならなかった GMS-5 の場合には、困難であったことが理由である。MTSAT になって、気象衛星センターにおいてそのあたりは計算済みで、変換式が簡単になったことや計算能力の向上によって 'BILINEAR' の利用が可能となった。
また、以前の画像は一旦 GAME 形式になったものから作成していたが、mtsatlib の整備により IMG_DK* データから直接変換できるようになった。
2011年 12 月 5日現在で、次の画像作成において BILINEAR モードを利用している。
- HD極東域赤外画像 ... ポーラステレオ変換 (poltransraw)
- HD東南アジア赤外画像 ... 緯度経度変換 (geotransraw) 以前から処理している 東南アジア赤外画像 では (擬似?)メルカトル変換 で NEAREST であるが、ここでは緯度経度座標に変換している。
- 日本付近可視画像 ... 緯度経度変換 (geotransraw) 12月4日以前は NEAREST。
実例
実際には拡大して詳細を点検しないとこの2つのモードの違いを見分けるのは難しい。ここでは日本付近可視画像で比較してみる。
上の2つの画像で最初が NEAREST 後者が BILINEAR である。日本付近画像の一部を切り出し4倍に拡大してある。元画像が赤道上空から斜めになった日本列島を眺めているため南北方向の解像度が足りず、縦縞のように画素が拡大されてしまっている。下の画像の方がスマートにそのあたりを誤摩化せていると見ることができるだろう。
最後に、実際のサイズで2つの画像を並べておくので比較して欲しい。