画像処理でよく目にする「畳み込み」って?
更新日:2012-02-24 10:51:07 投稿者:mar コメント:0 トラバ:0 カテゴリ:home
調べると行列ってキーワードにぶつかり、積分式が出てきて、、、で?
ってなってる方も多いはず。
私はまさしくこれでして。お恥ずかしい限りでございます。
しかしながら分からない訳にもいかなかったので、手探りで色々とjavaで画像処理をしてた訳です。
前回BufferedImageで焼きこみやらやってみた訳なんですが、要望と違ったんですね。。。これが
まず画像のノイズを除去しようと、3x3(センターと周囲8方向のピクセルを比較するやつ)のフィルターを作った訳です。
何か方法はないかと探る為に。
そこでふと畳み込みって3x3のマトリックスがどうの書いてたな。。。と、再度畳み込みを調べました。
おなじみの「物理かぎしっぽ」が検索にかかり、東北大学工学部のたたみこみ解説の紹介がありましたので、
見てみたところ、単純に範囲内の合成積の事だと分かりました。確かに分かりやすい!
て事は、フィルターの時と同様に、あるピクセルと周囲8方向のピクセルの掛け算だと判明。
RGBとかは置いといて。
javaで調べたところ、CodeZineのコンボリューションの解説に辿り着く。
「Kernel」というクラスがある。
これは、 行列を定義するクラス。次に
「ConvolveOp」 というクラス。
これは、KernelをBufferedImageに適用するクラス。
しかしここまでで。
私が求めてるのは、指定ピクセルの3x3畳み込みの結果なんです。
どうしたらいいんだ。。。。
「入力ピクセルから出力ピクセルを求めるには、畳み込み演算カーネルに入力ピクセルの周囲の値を乗算します。」
ってカーネルインスタンスに周囲のピクセル値を掛けるとは思えない。。