TAMALOG

プログラミングがあれば遠いところへ行けます。プログラムと人の共生を記録します。

Python+OpenCVで二次元ウェーブレット変換

クリエイティブコモンズの写真に対して、二次元離散ウェーブレット変換を適用してみました。

この記事では逆変換は扱っていません。変換の様子がみたい!という人は下の動画を見ると楽しいと思います。

画像を離散ウェーブレット変換してみた ‐ ニコニコ動画:GINZA

洗濯機に吸い込まれそうな

はじめの入力画像はこちら。 f:id:tamanobi:20150718110431p:plain

これを、一度だけウェーブレット変換にかけてみます。ウェーブレット変換によって次のような画像が取得できます。 f:id:tamanobi:20150718110458p:plain

左上の縮小画像が、低周波成分、下の画像がy方向の高周波成分、右の画像がx方向の高周波成分に該当します。 f:id:tamanobi:20150718110517p:plain

表情豊かな写真で

次は、この人でやってみましょう。今度は2度ウェーブレット変換をかけてみます。 f:id:tamanobi:20150718110542p:plain

2度ウェーブレット変換をかけると、1度目に得られた低解像度部分がウェーブレット変換されます。 f:id:tamanobi:20150718110557p:plain

結果が分かりにくかったので、Photoshopトーンカーブ機能で強調加工しました。 f:id:tamanobi:20150718110610p:plain

ソースコード

PythonOpenCVを使っています。下のgistのリンクを辿ってください。 https://gist.github.com/tamanobi/7e35f164b0e9d67266f2

ウェーブレット変換

ウェーブレット変換は、多重解像度解析の走りになっているようです。ウェーブレット変換を何度も繰り返すと、低解像度の画像がいくつか得られます。計算の方法は違いますが、低解像度画像(スケールの異なる画像)をいくつか生成するという点では、ガウシアンピラミッドと似ていますね。