wavelet による画像サイズ変更 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
説明wavelet アルゴリズムの学習用に BMP 画像のサイズを半分や2倍に変換するプログラムです。 | |||||||||||||||
wavelet とは?wavelet は、画像圧縮手法 JPEG2000 にも採用されたアルゴリズムです。 その作用を簡単に言うと、1次元の波を低域成分と高域成分に分割します。 low pass filter と high pass filter の組と考えてもかまいません。 逆変換では、高域成分と低域成分の組から、もとの信号を復元します。 画像のような2次元のデータに wavelet 変換をかけるときは、画像を1行とか1列とかのデータの集合ととらえ、各行または列に対して変換をかけます。 画像を縦横1/2 にするには縦方向の変換と横方向の変換を順番にかけます。 | |||||||||||||||
wavelet によるサイズ変換ここで行っているサイズ変換は、1/2 倍と 2倍のサイズへ画像を変換するものです。 1/2 倍する場合は、元画像を wavelet 変換して低域成分をとりだします。 ただ低域成分を取り出しただけでは画像サイズは元のままなので、データを1個おきに取り出す間引を行います。 高域成分はここでは必要ないので、捨てています。 実際には低域成分を取り出して間引く作業を効率化した手順がJPEG2000 向けに提案されているので、それを流用しました。 変換パラメーターは JPEG2000 lossy compress (非可逆圧縮)のものを利用しました。 2倍する場合も JPEG2000 lossy compress の手順を利用しています。 JPEG2000で圧縮された画像を復元する場合と違って、ここでは合成すべき高域成分は存在しません。 そのために、高域成分を全て 0 として変換しています。 その結果、得られる画像はぼやけた画像になります。 もともと情報が足りないのを無理矢理拡大しているので、 他のアルゴリズムを使った時と同じく細かいところが見えてきたりはしません。 | |||||||||||||||
コマンドの使い方コマンドは、画像を 1/2倍にするものと2倍にするものの二つになります。
| |||||||||||||||
ライセンスこの程度のプログラムは、誰が書いても同じようなものになると思われます。 そのため、使用、再配布、商業利用などに制限をつけません。 GPL にもしません。 | |||||||||||||||
参考文献
| |||||||||||||||
プログラム
| |||||||||||||||
|