wavelet によるサブバンド分割、オクターブ分解

現在位置のナビ

トップコンピュータの国フリーソフト → wavelet によるサブバンド分割、オクターブ分解

説明

wavelet アルゴリズムの学習用で BMP 画像のサイズをくり返し wavelet 変換したり元に戻すプログラムです。

wavelet サブバンド分割

wavelet による画像サイズ変更 で簡単に wavelet について解説しました。 そのプログラムでは、高域成分を扱っていませんでしたが、 ここでは、分割した高域成分を可視化しています。

ここのプログラムは、 まず 512x512ピクセルの BMP ファイルを読み込みます。 その次に 横512 x 縦256ピクセルの画像と 512x256個の高域データに分割します。 次のステップでは、 画像を 256x256ピクセルと 256x256個の高域データに分割します。 先のステップで得られた高域データもその中で低域と高域に分割します。 その結果、256x256 ピクセルの画像と 256x256個の高域成分三つが得られます。

逆方向の合成もできます。 ここで使用している計算式は JPEG2000 の loss less 圧縮と同じものです。 変換、逆変換を繰り返しても画質は劣化しません。

オクターブ分解

2ステップのサブバンド分割で画像サイズは面積 1/4 になり、 高域信号も得られました。

この 1/4 の画像にさらに同じ処理を行って 1/16 の画像と小さい高域成分を得ることができます。 くり返し行えば、1/64, 1/256 の画像になります。

だんだん小さくなってゆく画像にくり返し同じ処理をかけることを オクターブ分解と呼びます。 このプログラムは、 画像が32x32ピクセルに縮小されるまでくり返し処理できます。

ROI (Region Of Interest)

wavelet 変換で ROI を指定できます。 ROI とは、1つの画像の中でくっきりした部分とぼやけた部分を作る技術です。 高域信号をカットすることでぼやけた部分をつくり出し、 本来の解像度に復元した部分と区別します。

ファイル出力

このプログラムはファイル出力ができます。 しかし、512x512ピクセルx3バイトの BMP ファイルを読み込んで、 512x512個x3色x16bit のデータを出力するので、 見掛け上データサイズは倍増しています。

「wavelet は JPEG2000 圧縮アルゴリズムで使われているのに 圧縮されていないじゃないか」と早とちりしないでください。 ここで記録するデータは、余分な領域を含んでいます。 無駄を捨てて圧縮すればオリジナルよりも小さくなりますが、 ここでは JPEG2000 の圧縮以前で使われるアルゴリズムを解説することが目的なので、 圧縮していません。

コマンドの使い方

最初は、引数に BMP ファイル名を指定してください。 BMP ファイルの左上から 512x512ピクセルを切り出して処理に使います。 サイズが512ピクセルに満たないときも誤動作はしませんが、 処理結果がつまらなくなるので 512x512ピクセル以上の画像を使用することを勧めます。

起動すると 512x512ピクセルの画像の右側に、 ボタンが縦一列に並びます。 このボタンで処理を行います。 ボタンは処理の進め方によって現れたり消えたりします。 消えているときは、そのボタンの処理はできません。 以下にボタンとその機能を解説します。

step forward ボタン

上から2番目のボタンです。 このボタンを押すと、wavelet 変換を1ステップ行い、画像が半分になります。 画像が 32x32ピクセルまで小さくなると、押せなくなります。

forward to end ボタン

一番上のボタンです。 一気に画像を 32x32ピクセルにします。 step forward ボタンをくり返し押すのと同じ効果です。 画像が 32x32ピクセルまで小さくなると、押せなくなります。

step backward ボタン

上から3番目のボタンです。 このボタンを押すと、wavelet 逆変換を1ステップ行い、画像が倍になります。 画像が 512x512ピクセルの状態では、押せなくなります。

backward to start ボタン

上から4番目のボタンです。 一気に画像を 512x512ピクセルにします。 step backward ボタンをくり返し押すのと同じ効果です。 画像が 512x512ピクセルの状態では、押せなくなります。

set ROI ボタン

上から5番目のボタンです。 画像の4隅に相当する高域成分をカットします。 画像が32x32ピクセルのときだけ押せます。 一度押すと効果は持続するので、二度以上押す必要はありません。

save to fileボタン

上から6番目のボタンです。 縮小画像と高域成分をファイルに記録します。 画像が32x32ピクセルのときだけ押せます。

load from file ボタン

上から7番目のボタンです。 save to file ボタンで記録したファイルを読み出します。

ライセンス

この程度のプログラムは、 誰が書いても同じようなものになると思われます。 そのため、使用、再配布、商業利用などに制限をつけません。

GPL にもしません。

参考文献

プログラム

対応OSファイルサイズバージョン日付
unix with gtkソース wavelet2.tgz8,036 Byte0.22006年3月7日

back button もどる