ChMd121 ゴブリンクォーク9にノイズ除去フィルタを装備しました
GOBLIN QUARK 9 has Several Noise Filterings

黒月樹人(KULOTSUKI Kinohito)

ブランチページへもどる

 はじめに

 なかなかUFO画像の解析結果を示すところまでゆきません。
 今回の(生活のための仕事における)シフトでは(私の自由時間を使って)「コンピュータ画像処理」(田村秀行 編著, Ohmsha刊)というテキストを読み進め、「第4章 画質改善と画像再構成」にある「4.4 平滑化と雑音除去」のところで説明されていた、「メディアン・フィルタ」、「エッジ保存スムージング」、「ヒステリシス平滑化」などの機能をゴブリンクォーク9に組み込みました。さらに、これらの利点を組み合わせるとよいかもしれないと考え、独自に「メディアン・エッジ保存スムージング」というものを構成しました。(計算時間はとても長いものですが)これはとても強力なツールとなりました。ゴブリンクォーク9の進化はとどまることを知らないようです。
 このページでは、これらの新しい機能がもつ能力をかんたんに説明したあと、UFO画像について、さっそく、これの効果を示そうと思います。

 「トップ」ページは「Filter」ページへ

 これまでゴブリンクォーク9の「トップ」ページは、ゴブリンクォーク4の時代から、もっと古い時代にもっていた多くの機能を削り落し、表示文字を「JAPANESE <-> ENGLISH」と変化させるスイッチだけが残っていました。ここにスイッチのためのスペースが広く残っていましたので、(他のページの機能も何らかの意味でフィルタの一種なのですが、狭義の意味で、他の人々が考えていたものとしての)「Filter」機能の幾つかを組み込むことにしました。


図1 ゴブリンクォーク9の新しいトップページ
code = face02x4Peach(noise)

 図1は「ゴブリンクォーク9の新しいトップページ」です。ここに示してある画像は、オードリー・へプバーンの顔に、夜空に潜む空気の精シルフを観測した画像をテキスタイル解析で調べたものをノイズ画像として合成したものです。
 向かって左にあるスイッチ群について説明します。「画像呼出」の下に、処理の「反復」回数を指定する行があります。その下の変なイラストがリセットマークです。[Filter] タイトルの行があって、それらの下に4種類のノイズ除去フィルタのスイッチがあります。これらについては、この後、詳しく説明します。表示言語の入れ替えスイッチが残っていて、画像のKEEPとSAVEのスイッチが、このように、あらかじめオン・オフを指定しておくスタイルで表示されています。これにより、解析時間が長いものについて「2度待ち」をしなくてすみます。

 移動平均(running average)

 移動平均は英語でランニングアベレージ(running average)と言います。簡単なアルゴリズムです。移動するのはあたりまえで、ある画素を含む5×5の画素についての、青値、緑値、赤値のそれぞれについての平均値を求めて、これを変換画像の代表値とするものです。


図2 移動平均(×4) code = face02x4Peach(noise)RAve5(x4)

 移動平均はアルゴリズムもかんたんで処理時間も短いのですが、ごらんのように、全体を区別なく処理しますので、ピンボケ状態が進むこととなります。

 中央値フィルタ(メディアン・フィルタ median filtering)

 移動平均では5×5画素の各色成分の平均値を代表値としますが、この中央値フィルタでは中央値(median)を代表値とします。これだけのことですが、図3のように、格段にきれいなものとなります。


図3 中央値フィルタ(×4) code = face02x4Peach(noise)MedianF5(x4)

 テキストでは値を並べ変えて中央値を求めると説明してあります。コンピュータプログラミングでのソートという処理です。考え方はシンプルですが、そのアルゴリズムはややこしいので、ソートのアルゴリズムをまとめている資料を探す必要があって、めんどうだと考えていたところ、もっとシンプルな方法があることに気づきました。
 例えば5×5の25画素で中央値は、大きいほうから数えても、小さいほうから数えても13番目のものとなります。このことを利用すると、最大値を求めて、それを0と置き換えれば、13番目に求めた最大値が中央値になります。このアルゴリズムはかんたんで速いものです。
 平均値を求めようとするとノイズの値に影響されるわけですが、中央値はノイズの変動を無視する傾向があるわけです。

 エッジ保存平滑化(edge preserving smoothing)

 テキストに載っていた分割法ではアルゴリズムが複雑になるので、少しシンプルなものへと改良しました。このアルゴリズムの考え方は、5×5の画素領域を、「左上」「上」「右上」「左」「中央」「右」「左下」「下」「右下」の9つに、一部重複していてもよいので、分割して、それらの分散(平均値からの隔たりぐあい)という値を調べ、この値の最小値となる画素領域の平均値を代表値とするものです。中央値より、さらに合理的なものと見なせるわけです。


図4 エッジ保存平滑化(×4) code = face02x4Peach(noise)EdgePS5(x4)

 このような顔の画像では利点が現れませんが、ベース画像がもっと不連続な色の境界をもっている、たとえば版画のようなものですと、境界(エッジ)がきれいに残ってくれます。連続的な変化で構成されている、上記の顔のような画像では、小さな面が集まったガラスを通して見るような画像へと変化することになります。木彫りの彫刻のようなタッチとなるわけです。

 ヒステリシス平滑化(hysteresis smoothing)

 このアルゴリズムはかなり複雑なものです。ここで説明するのはめんどうなので、テキストを参照してください。


図5 ヒステリシス平滑化(×4) code = face02x4Peach(noise)HysS5(x4)

 画像の完成度には難点が残りますが、顔の情報を引き出すという目的のためなら、かなり効果のあるものです。アルゴリズムをさらに工夫すれば、もっと完成度の高いものへと改良できるかもしれません。

 中央値エッジ保存スムージング(median edge preserving smoothing)

 これはテキストにはなく、私が独自に組み上げたものです。
 画素領域を9分割するのはエッジ保存スムージングと同じですが、調べる指標として「分散」を使うのではなく、(私が名づけたものですが)「メディアン分散」を使います。
 統計学での「分散」というのは、まず平均値を求めておいて、この平均値との差を2乗して、シグマ記号をつけて加算してから画素数nで割るというものです。
 「メディアン分散」では、基準とする値を中央値(メディアンmedian)にします。つまり、中央値の近くにもっとも集まっている、安定した画素群の、中央値についての平均値を代表値とするわけです。
 次の図6は5×5画素領域として4回反復したもので、図7は9×9画素領域で1回だけ処理したものです。


図6 中央値エッジ保存スムージング5(×4)
code = face02x4Peach(noise)MEPSF5(x4)


図7 中央値エッジ保存スムージング9(×1)
code = face02x4Peach(noise)MEPSF9(x1)

 計算時間はかかりますが、5×5画素から9×9画素へと変えて、より低周波成分を残すようにしたところ、1回だけで、図7のような、非常に完成度の高いものとなりました。

 000-2003 [15] stone

 上記のフィルタがどのような効果をもつのか、UFO画像に適用して調べることにします。
 今回採用したのはufocasebook.com の2000-2003にあるoregon2002というものです。[15] stone と添えてあるのは、私が整理するためにつけた記号です。
 図8は原画像で、図9がUFO部分の拡大図です。64倍に拡大したものを50 [%] の大きさで表示しているので、実際は32倍となります。


図8 2000-2003 [15] stoneの原画像


図9 [15]×64(ただしここではその50 [%] 表示)

 このあと、解析をすすめ、仮保存したKEEPXについて光核解析LA(a, 0-64)をほどこし、0-255の中の0-64だけを取り出して広げたもの(これまでのもの)について、レリーフX解析したものが図10です。
 これに対して、ウェーブレット解析の前に、エッジ保存スムージング処理を加えたものについて、レリーフX解析したものが図11です。


図10 これまでのものについてのレリーフX解析
code = KEEPXLC(a)[2]_onAGI(X)32(64)


図11 エッジ保存スムージング処理を加えたものについてのレリーフX解析
code = KEEPXLC(a)[2]EdgePS5_onAGI(X)32(64)
(画像をクリック → 拡大解析画像へ)

 このUFOの変化が激しい周囲のところで、エッジ保存スムージング処理の効果が現れ、より緻密なパターンとなっています。
 次の図12と図13は、このUFOの左あたりの2倍画像を作ってから、これらについて、同じテキスタイル$X解析を行ったものです。


図12 これまでのものについてのテキスタイル$X解析
code = KEEPXLC(a)[2][2]A_onAGI($X)32(64)


図13 エッジ保存スムージング処理を加えたものについてのテキスタイル$X解析
code = KEEPXLC(a)[2]EdgePS5[2]A_onAGI($X)32(64)

 図12と図13では、かなり違いがあります。本物の正体を知らないので、これらを正確に評価できませんが、このように現れてくるのは、もともと、このような精密な構造があったと考えてもよいかもしれません。$X関数は(企業秘密なのですが)かなりシンプルな構造なので、これによる偽像が作ったものとは考えにくいのです。このような空洞が見えているのか、表面のパターンによって、そのように見えているのかは、まだよく分かりません。
 ちなみに、表面のパターンに忠実な関数ast-umによる、図13と同じペース画像についてのテキスタイル解析が次の図14です。これは図11のパターンをよくなぞっています。


図14 エッジ保存スムージング処理を加えたものについてのテキスタイルast-um解析
code = KEEPXLC(a)[2]EdgePS5[2]A_onAGI(ast-um)32(64)

 まとめ

 ゴブリンクォーク9のトップページに、メディアン・フィルタやエッジ保存スムージングなどの、ノイズ除去フィルタを組みこみました。
 これらのプロセスで、メディアン・フィルタとエッジ保存スムージングの利点を組み合わせ、メディアン・エッジ保存スムージングというフィルタを構成し、その9×9画素対応のものを生み出したところ、ノイズ除去に関して優れた効果をもつということが分かりました。
 このようなUFO画像の解析において、ノイズ成分となる、UFOがまとっている雲の情報は、光核解析を使って文離することができます。よって、このようなフィルタの出番はないかもしれないと思っていましたが、このようなUFO画像の解析において、エッジ保存スムージングの処理を途中にはさんだところ、より緻密な解析結果を得ることができました。

 参照資料

[15] http://www.ufocasebook.com/oregon2002.jpg
 2002 - Oregon - A family from Monmouth visting Cape Meares was taking pictures of the scenery. Excited about the photos afterwards, the photographer noticed something odd about one of them as he was uploading to computer.
 Closer examination revealed the UFO in top right portion of photo. No anomalies were found in the film or camera to account for the UFO.
 Thanks to Oregon UFO Research.

ブランチページへもどる