平滑化(1) 前説
2010/01/11 19:58 - AS3.0
画像処理をおこなうにあたっては、まず前処理として「平滑化」という処理をおこなう、と、どの本にも書いてあります。
平滑化とは、画像からノイズを除去する処理で、「OpenGL+GLSLによる画像処理プログラミング」P78~ によると、平滑化は以下のようなものがあるとのこと。
- 線形空間フィルタ(単純な平滑化)
- 平均値フィルタ
- ガウシアンフィルタ
- 非線形フィルタ(エッジ保存平滑化)
- メディアンフィルタ
- 選択的局所平均化フィルタ
- 最近隣平滑化フィルタ
- 最大値・最小値フィルタ
- 最頻値フィルタ
- バイラテラル・フィルタ
- デジタル・フィルタ
平滑化(ノイズ除去)には、画像がボケるという副作用があるそうで、線形空間フィルタはそれが露骨に出てしまう手法だそうな。 そして、それを抑えるために編み出されたのが非線形フィルタ以降のもので、一番代表的なものがメディアンフィルタらしい。
今回のオレオレライブラリーはウェブカム映像、つまり動画を対象としたものを考えています。
できるだけ処理負荷を減らしたいところなので、毎回複雑な計算を要求する非線形フィルタ以降のものは採用致しかねるし、線形処理フィルタの実態は画像をボカすことそのもののようなので、だったら BlurFilter でいいじゃねーか、というのが平滑化について達した結論。
てゆーか、ぶっちゃけ、静止画の画像処理なら原画像のクオリティを極力高めなきゃならんと思いますが、ActionScript でウェブカムならそこそこのクオリティで充分じゃね? ってゆーか多くを望むな?
なので、オレオレライブラリーに平滑化フィルタは加えず、軽く BlurFilter をかけることで良しとします。
とはいうものの、線形空間フィルタをコード化するというのは、ConvolutionFilter を使うことそのもののようです。 よって ConvolutionFilter 学習のために、平均値フィルタとガウシアンフィルタについてコードは組んでみることにします。