ビューア開発 – バイラテラルフィルタ追加しました

ツール制作
スポンサーリンク


前々から追加追加しようと思って、初めて作ってみた。

日本語の資料がtpotさんのバイラテラルフィルタしかなくて、勉強するのが大変でした。
海外のサイトはもっとよくわかんない謎の式だらけ。

要約すると、バイラテラルフィルタってのは、注目画素の輝度と、フィルタ処理する時の近傍画素の輝度の差(距離)を
マイナスの係数をかけて、指数関数の中れたもの を A として。 新しいオペレータ = ( A × 普通のフィルタ処理)
新しいオペレータは、係数の合計が1になってないと思うから、正規化して計算しなくてはいけない。
あとは、この新しいオペレータを使って普通のフィルタ処理を行えばOK。
つまり2回色を参照しないといけない。1回目は輝度の距離の計算。2回目はフィルタ処理。

あと、メニューのフィルタをもうノイズ低減エッジ強調の2つにまとめてみた。
今更だけど、大きな画像(今時のデジカメサイズ)の画像処理しようとすると、
Javaがメモリ確保できないとかでエラー出る・・・

一応開発PCはメモリ2Gあるのに、写真の画像処理が出来ないとかヤバイ・・・
起動時にメモリの量を指定することで解決(。>ω<)


2009年7月28日 追記

今色々調べてみると、バイラテラルフィルタの公式が。

あれ、できたソースコードとだいぶ違うような……。(^○^)

というか正規分布に、注目画素と周りの画素との距離(差)を利用したというか、
もともとガウシアンフィルタが正規分布を元にして作ってるから、

説明としては、「画素の色差情報[m~2+n~2]」と「画素の距離情報[(f(i,j)-f(i+m,j+n))~2]」を利用するであっていると思います。
分母に似たような式があるのは、フィルタを正規化するためです。

ちなみに正規分布はこちら。

ガウシアンフィルタのフィルタ係数を作る時に利用するのですが、
フィルタの合計は1に正規化する必要があるので、
expの外に出ている係数は計算せずにフィルタ係数を求めたあとに、正規化します。
外の係数は、次のように正規化したら消えてしまいます。
←基本形

つまり、バイラテラルフィルタを簡単に説明すると
ガウシアンフィルタに「注目画素と周りの画素との色差」の情報を加味したものです。


完成した画像処理のツールは、こちらから試すことが出来ます。

コメント

タイトルとURLをコピーしました