HighQualityBicubicの事前フィルタとは...
.NET FrameworkにあるInterpolationMode列挙体のHighQualityBicubic/HighQualityBilinearメンバの「事前フィルタ処理」とは...
画像フィルタの「ぼかし」の事です。ぼかしフィルターを通してからバイキュービック(Bicubic)、バイライナー(Bilinear)を実行していると思われます。
ぼかしは一般的にこの3つがよく使用されます。
ぼかし(平均化) 除数9 | ||
---|---|---|
1 | 1 | 1 |
1 | 1 | 1 |
1 | 1 | 1 |
ぼかし(弱) 除数16 | ||
---|---|---|
1 | 2 | 1 |
2 | 4 | 2 |
1 | 2 | 1 |
ぼかし(強) 除数48 | ||||
---|---|---|---|---|
0 | 1 | 2 | 1 | 0 |
1 | 2 | 4 | 2 | 1 |
2 | 4 | 8 | 4 | 2 |
1 | 2 | 4 | 2 | 1 |
0 | 1 | 2 | 1 | 0 |
この中で.NET FrameworkのHighQualityBicubic/HighQualityBilinearの事前フィルタに近いものは「ぼかし(弱)」となります。縮小の際は「ぼかし」の事前フィルタを使用しますが、拡大の際は事前フィルタは使用していないと思われます。
ぼかしのサンプルは「ぼかし(弱)のサンプルコード(画像フィルター)」で公開していますが言語はDelphiです。また、JavaScriptでも同様の関数を作成していますので将来的には公開する予定です。
...
実は最速低品質のニアレストネイバー(NearestNeighbor)の前に「ぼかし」を通しても精度があがるんです。
実際に確認してみる
元データ
元データを「ニアレストネイバー」で50%に縮小したものです。
文字が潰れていますね
元データに「ぼかし」効果を適用
「ぼかし」を適用した元データを「ニアレストネイバー」で50%に縮小したものです。
高品質のHighQualityBicubic/HighQualityBilinearを使用しなくてもそれなりに綺麗に縮小できています。この後に「シャープ」(弱)フィルターを通すとさらに精度が上がると思います。
画像の縮小
JavaScriptで高品質の「画像の縮小」を試せます。