カテゴリ:写真:画像( 51 )

画像の拡大・縮小

最近、急にラスター画像の拡大・縮小のことが気になりだした。私の知っていること、分かったこと、疑問などを書きとめておこう。
画像を縮小・拡大する最適なアルゴリズムは対象画像に大きく依存する。拡大・縮小する、ともともと存在しなかったピクセルを補間する必要がある。ニアレストネイバー法、バイリニア法、バイキュービック法が有名。ニアレストネイバー法とは、いちばん近いピクセルを複製するか削除するだけのアルゴリズムである。もとのドットをそのまま拡大したい場合に適するが、ジャギーも目立つ。バイリニア法は近隣2×2ピクセルを使って線形補間する方法。バイキュービック法は近隣4×4ピクセルを使って3次式をつくり補間するもの。通常の写真のサイズ(厳密にはピクセル数)を変更する場合は、(この三つのアルゴリズムのうちでは)バイキュービック法がよいと言われている。(計算量が多いのが欠点と言われるが、アマチャアが少量処理する場合は問題にならないだろう)Photoshop Elementsでも写真のサイズを変更する場合、バイキュービック法が初期設定されている。しかし実際には画像によって、方法を使い分ける必要がある。二値画像ではニアレストネイバー法を使う必要がある。日の丸のような画像をバイリニア法やバイキュービック法でサイズ変更すると赤の周りにピンクの部分ができてしまう。二値画像だけでなく局部的に見て二値になっていて中間の色があってはいけない画像にはバイリニア法やバイキュービック法は使えない。バイキュービック法で画像を拡大するとアンシャープマスクをかけたように、エッジが強調される。つまりアンシャープマスクをかけたくない画像には向かないと考えた方がよい。
イラストをバイキュービック法で10倍に拡大して、細部を表示したサンプルを示す。(左から元画像、元画像の拡大標示、バイキュービック法で拡大した画像)なおサンプルはこのサイトから借用。
同一の色で塗った部分があるイラストやそれに似た写真をバイキュービック法で拡大してはいけない。
(標示している画像は間違った使い方)つまり、イラストは初めからラスター画像ではなくベクター画像にするべきである。たとえラスター画像として描いても、まずベクター画像(拡張子svg)に変換してしまう。そうしたら縮小・拡大が自由にできる。(ただしベクター画像が扱えるソフトたとえばInkscapeが必須)ただしベクター画像をラスター系ツールに読み込むとその時点でラスタライズされてしまう。
文字を書き込んだ画像で拡大縮小の実験結果を示したブログがある。実験としては分かりやすいが、実際は文字のない画像で拡大縮小を行い、その上に文字を書き込むようにしなければならない。(Photoshop Elementsなどのラスター系のツールでも、ラスタライズしない限り文字はベクター画像として取り扱われる)
疑問点:Photoshop Elementsでサイズ変更する場合、上の三つ以外に「バイキュービック法(滑らか)」と「バイキュービック法(シャープ)」がある。名前から意味は推察がつき使えそうではあるが、がそのアルゴリズムはどうなっているのだろうか。
画像を縮小する場合には平均画素法という方法が有力であろう。たとえば赤2個と白2個の4ピクセルを1ピクセルに縮小すると赤と白の平均値ピンクに見えるはず、というのは直感にも合っている。縮小アルゴリズムの決定版のように思うが、プログラムを作る立場からは工夫がいるらしい。通常平均するピクセルに端数ができる場合があるので、元画像を最小公倍数で一旦拡大する必要がある。それにしてもPhotoshop Elementsでもサポートしてほしいものだ。
画像の拡大にはLanczos法(ランツォシュと読むらい)が優れていると言われる。
こちらを参照。
上の記事にあるようにLanczos3では6×6のピクセルを考慮している。遠くのピクセルの影響を受けるといことは、「ピンボケ画像にアンシャープマスクをかけたような画像なる」と考えたほうがよいだろう。
手元にあるソフトではGIMP2.6.7がLanczos3をサポートしている。ただし「GIMP2.6には画像縮小には無条件で平均画素法が使われる」というブログを見かけるため注意が必要かもしれない。IrfanViewという有名なフリーソフトは、多数の画像拡大・縮小アルゴリズムを実装している。
IrfanViewのサイズ変更で指定できるもの;Hermite(最高速)、Triangle、Mitchell、Bell、S-Spline、Lanczos(高画質)
残念なことにirfanViewはWindows7での作動実績が思わしくない。(Microsoft Office2007 IMEとの関係らしい)
フリーソフトの中にもLanczos3をサポートするものがいくつかある。
藤‐Resizer-
「R13」
Ralpha
しかし「座標(距離)の小数部を丁寧に処理していないために、Lanczos関数の値が正確に計算できていない物もあった」という ブログ記事を見かけたので注意が必要であろう。
Corel Paint ShopPro Photo X2にはバイキュービック法はサポートされているが、「スマートサイズ」、「ピクセルリサイズ」は何を意味するのか分からない。
e0020950_14214624.jpg

[PR]
by takaminumablog | 2010-03-07 14:25 | 写真:画像 | Comments(0)