ホーム ] 実行例 ] 処理速度 ] 画像処理メソッド構造 ] 技術解説 ]

上へ
高速化
色空間変換
画像色変換処理
画像濃度変換処理
空間フィルタ
非線形フィルタ
機能フィルタ

技術解説

機能フィルタ

最終更新日:2007/04/26  修正

●概要

 複数のフィルタの組合せや、画像演算を伴う処理である。 

●アンシャープ

 筆者も誤解していたが、非シャープ化ではなく、シャープ化処理である。アンシャープ(ボケ)画像を原画から差し引いて、ボケ成分をなくし、シャープにする手法である。単純な先鋭化フィルタを掛けるより、高品質な先鋭化画像が得られる。印刷による原理的なボケを補正するために行われる処理で、以下のように行う。

 先鋭化画像 = 原画 + 係数 * [原画 - ボケ画像]閾値処理

ボケ画像を求めたり、画像間演算したりで時間は掛かる処理となる。

○ボケ画像

 Gaussianフィルタを掛ける。Gaussianフィルタは二次元ガウス分布のことで、アンシャープでは、効果が及ぶ範囲を半径と称し、ピクセル距離の標準偏差で表す。

・二次元ガウス分布

 G(x, y) = 1/(2πσ2) * Exp(-(x2+y2)/2σ2)

で求められる。数学的に無限遠からの算出であるが、適度に打ち切れば良い。ライブラリではσによりその都度算出している。

・実用の分布を求める

 x、yの範囲は結局、空間フィルタの縦横サイズになるので、余り大きいと演算時間が掛かりすぎる。範囲は、σでほぼ決まるので、σ毎に最適なサイズを決めればよい。筆者の実験では、以下の式が得られた。

アルゴリズム

ΣG(x, y) が、限りなく 1 (0.999xxxx) に近くなり、しかも、それ以上範囲を拡大しても、ΣG(x, y) がさほど変化しなくなるような最小の範囲を求める。

 M = 8 * σ - 1

Mは、x、yの幅、つまり、正方形フィルタのサイズ。実際には、M 以上の奇数にし、正規化している。σ = 4 にすると、M = 31 となり、かなり大きなフィルタとなる。下図は、指定のパラメータに従った二次元ガウス分布を求めるツールの実施例である。

左上はマトリクスサイズ、左下はσ、右下はΣG(x, y)

○ボケとの差分

 原画のRGB成分からボケのRGB成分をそれぞれ引く。結果は正負に及ぶので、絶対値が閾値より大きい時だけ処理を行い、小さいときは元の画素のままとする。最後に、RGB値にするための閾値処理を行う。

●暗号化/復号化

 指定された任意の文字列の各文字コードを、ある一次式で結合、変換し、その値を秘密の素数で除算した剰余を乱数の種にし、発生した乱数列で、画素値の置換えと、画素位置の置換えをしている。画素値を乱数で置き換えただけでは、元画像の幻影が僅かに残ってしまうので、画素位置の置換えを追加した。文字は、半角、全角、漢字など任意。

 乱数表は、元の整数に1:1の写像とならないと、復元できない。処理としては、連続数列を乱数にてシャッフルしている。

 乱数関数は、ある方法で種を与えると、必ず同じ乱数を生成する。これを利用して復号化している。先ほどの乱数表の逆のものを生成あるいは、逆読みして同じ処理をしている。C++版あり。