「平滑化」マニュアル

黒月解析研究所 & 西尾美術研究所


ゴブリンアイズの使用権を販売します  ゴブリンアイズの注文書

医療画像解析ソフト ゴブリンアイズ ブランチページへもどる

 移動平均(ランニングアベレージ)

 平滑化という名前にしましたが、その前はフィルターと呼んでいました。
 しかし、フィルターという名称は、ゴブリンアイズの「色紋解析」を除く、すべての解析手法にあてはまります。
 実は、このような解析法のページを構成するまで、このタイプの平滑化フィルターとしては、移動平均(ランニングアベレージ)しか知りませんでした。
 地面の中の不発爆弾を見つけるための仕事では、そのためのセンサーを地表に沿って動かしたり、ボーリング孔の中で移動させ、そのセンサーの周囲の磁場の様子を記録します。
 このような観測実験を行っているとき、データにひどいノイズが乗ってしまったことがありました。この結果を学会で発表したとき、見に来ていた、そのセンサーの製作会社の人が、「あんなノイズは入らないはずだ」と、私の上司のK部長にぷんぷん起こっていたそうです。
 しかし、それはセンサーの性能が悪いのではなく、観測実験のために掘った(倉庫へと通じる通路に掘った)ボーリング孔のすぐ近くに、工場としてつかっていたときの高圧電線が埋められていたからでした。
 このときの高周波ノイズの周波数を調べると、関東での交流電気に固有の50ヘルツでした。ただ、ボーリング孔と埋設電線との距離が近かったらしく、ノイズの振幅がはんぱではありません。まるで観測波形は毛虫のように、太くなっていました。
 このような高周波ノイズの場合、移動平均を行ってやると、これらの毛虫ノイズの「毛」のところは刈り取られて、ほぼ一本の、まるで毛虫の「腸」のような、くねくねとした曲線が得られました。
 ランニングフォームを調べる解析プログラムを作ったときも、データの平滑化には、移動平均を使いました。ランニングのデータには、やっぱり(笑いも少しとれる)ランニングアベレージです。

 メディアンフィルター(平均値ではなく中央値をとる)

 ところが、画像解析を行うと、このような画像に乗ったノイズを取り除くために移動平均を使うと、全体がピンボケ状態になってしまいます。
 そこで、平滑化のことを取り扱ったテキスト[1] を調べ、まずはメディアンフィルターというものがあることを知りました。
 移動平均では、対象領域の代表値として、その領域のすべてのデータの平均値をとります。これに対して、メディアンフィルターではメディアン(中央値)をとるのです。
 例えば、決めたい座標値の画素の周囲に、それを中心とした5×5の対象領域をとるとします。すると、この中には25の画素が含まれます。この画素の濃淡値を1番から25番まで並べ替えて、その(少数の混じった12.5番目はないので)13番目を中央値として、これを代表値とします。
 テキストには、このような並べ替え(ソートと言います)のアルゴリズムが面倒で、時間もかかると、問題点が指摘されていましたが、私はソートを使わない方法があることに気づき、よりシンプルなアルゴリズムで、計算時間も比較的短くして使っています。

 エッジ保存スムージング

 中央値フィルター(メディアンフィルター)は移動平均ほどピンボケにはなりませんが、それでも、少しはボケた感じになります。
 このような性質を回避しようと考えられたのがエッジ保存スムージング(フィルター)です。
 これは、対象領域を、より小さな領域に分割して、それらの小領域ごとの分散を調べ、それが最小となる領域の代表値をとるというものです。分散が小さいということは、その中のデータに突出したものがあまりないということです。
 テキスト[1] に、次のように記されています。

 「いずれの平滑化法でも雑音除去の能力は大差ないが、エッジにおけるぼけの程度を比較すると、移動平均、メディアンフィルター、エッジ保存スムージングの順にぼけが少ない。その反面、エッジ保存スムージングは計算量が多いという欠点がある。」([1] p114)

 この本が出版されたのは2002年だということですが、このころのコンピュータの画像処理や計算のスピードは、まだまだ遅いものでしたから、このようなことが欠点とみなされるのもしかたがなかったことでしょう。
 ただ、「いずれの平滑化法でも雑音除去の能力は大差ない」というのは誤りです。実際にこれらの手法をソフトに組み込んで画像解析してみると、大きな違いや微妙な違いがあらわれてきます。

 中央値エッジ保存(スムージングフィルター)とORIGINALフィルター

 これらはすべて私が独自に生み出したものです。
 中央値エッジ保存スムージングフィルターは名前を全部書き下すと長くなってしまいますので中央値エッジ保存としてあります。
 これは、上記のエッジ保存スムージングが平均値を使っているので、それを中央値としたらどうなるかと考えて組み上げたものです。
 ORIGINAL のところに並べてある、Phantom(幽霊), Twin(双子), Angel(天使), Bass(バス), Chimera(キメラ), Gill(ギル) は、得意とする解析領域が Dark(暗い), Mid(ium)(中間), Light(明るい) の3つに対応しています。
 これらは、これまでの平滑化フィルターがあまりに一般的なものであり、特殊な状況に弱いということに気が付いて、新たに生み出したものです。
 さらに、このマニュアルの編集をたびたび中断し、よりノイズがきれいに取れるようなものへと改良しました。
 そのような取り組みを続けるなかで、最強の能力をもつに違いないと考えられるGemini(双子座)平滑化フィルターを構成することに成功しました。
 これらのアルゴリズムは企業秘密となりますから、くわしいことは説明するわけにはいきません。のちに、それらの能力のそれぞれについて、実際の解析例を示すことにします。

 「平滑化」解析ページのスイッチ

「平滑化」解析ページのスイッチについて図1にまとめました。

図1 「平滑化」解析ページのスイッチ

 (a) リセット これらのロゴマークはリセットスイッチです。
 紺色はストロングリセットで、[1][3][番外]のところをリセットします。
 黄色はウィークリセットで、[3][番外]のところだけをリセットします。連続して解析結果を保存(SAVE(on))するときは、こちらのほうが便利です。
 (b) 保存予約 KEEPとSAVEの予約を先にしておきます。なぜかというと、この「平滑化」の処理では、計算時間が多いものがたくさん含まれているからです。
 [KEEP] は画像データを内部配列のiso[ ] に記録し、外部のKEEP.bmpとして仮保存します。このKEEP.bmpはゴブリンアイズを閉じるときに削除されます。
 [SAVE] は「名前を付けて保存する」ダイアログボックスを呼び出します。KEEP.bmp, P.bmp, Q.bmp, G.bmp 以外の名前を付けて保存してください。このとき内部配列のiso[ ] は変えません。
 (c) 反復回数 反復回数を決めておきます。
 (d) 種類 「移動平均」「中央値フィルター」「エッジ保存平滑化」「中央値エッジ保存」「Original」の5つの小分類となっています。
 各スイッチ記号名につけてあるHは高周波数、Lは低周波数の意味です。LはHに比べ、ノイズに対する能力は高まりますが、その分、計算時間が多くかかります。高周波Hのもので反復回数を増やすほうがよいかもしれません。
 この中で「中央値エッジ保存」と「Original」は私が新たに工夫したものです。
 「Original」の7つの平滑化フィルターは、それぞれが得意とする画像領域をもっています。AngelはLight部分に対応するようにと構成したものですが、解析テストを行ってみると、ほぼ全領域でノイズをとれるということがわかりました。ですから、Angel → All とかんがえてもらってかまいません。
 Gemini → All は、アルゴリズム上そのようになると確信して構成したものですが、解析テストでも、その期待を裏切りませんでした。
 (e) ノイズ添加 これらの平滑化フィルターの効果を確認するため、[番外] として「ノイズ添加」の機能をくわえました。一行目はノイズパターンの種類です。
 COLの記号はCOLORの意味です。BWは白黒、BUは青、Gnは緑、Rdは赤の意味です。
 DNSはDENSEの略記号です。0, 128, 255の値は、色が白黒なら濃淡値の意味です。他の単独の色の場合は、その色についての値です。このとき、他の色については0となります。
 (f) 実行 この「平滑化」解析ページでは、ここ以外のところに実行スイッチを入れていません。ノイズ添加のところも含めて、反復回数や種類を決めてから、最後にこの実行スイッチをクリックしてください。

 ノイズ添加

 平滑化フィルターの大きな役目は、ノイズの除去にあります。
 ノイズのない画像が、どのように変化するのかということは、その能力の「おまけ」もしくは「代償」のようなものです。
 これらの平滑化フィルターの能力を調べるため、まずは、通常の画像にノイズを添加した、試験画像を作っておく必要があります。
 ノイズパターンとして、@■, AΧ, B__| を用意してあります。@は対象画素を中心とした3×3の画素を塗りつぶすものです。AとBは5×5の領域で対角線や辺を使ったものです。これらの位置は時間を初期変数とした乱数関数で決めていますので、同じノイズ添加操作をしても、まったく同じにはならず、どんどん密集してゆきます。
 色(COL)はBW(白黒)と3色に分けることができます。
 重要な要素は色が白黒のときの濃淡値の違いです。これをここではDNSとして、0(黒)、128(灰色)、255(白)として描けるようにしました。
 通常、ノイズというものは、黒いものとして入り込んでくる、と考えてしまっているかもしれませんが、その反転画像なら白になりますし、ある特定の濃淡値となるかもしれません。ここではテスト的に、0, 128, 255 の値を用意しました。

図2 原画像と、黒いノイズ、灰色のノイズ、白いノイズを添加したもの

 移動平均

図3 高周波移動平均(RAH)

 いろいろな分野で活躍してきた移動平均という解析法も、対象が画像であるとき、このようになります。
 ノイズの部分をならしてしまうので、そこのところが、ぼんやりとした点のようになるわけです。
 低周波移動平均(RAL)では、このようなぼんやりとした点が、もっと広がってしまいます。

 中央値フィルター(メディアンフィルター)

 図4が高周波中央値フィルター(メディアンフィルター)MDHを適用したものです。

図4 高周波中央値フィルター(メディアンフィルター)MDH

 メディアンフィルターで解析すると、このように、濃淡値が0の点は、ほとんど中央値として採用されず、もとのOrg画像の画素が選択されることになります。
 図の高周波中央値フィルター(メディアンフィルター)MDHでは、(a) X(BW, 0)黒いノイズと(b) X(BW, 128)灰色のノイズで、いくらかの黒い染みが残っていますが、これは、たまたま5×5の対象画素の中に、ノイズの部分が中央値の13個以上含まれる状況が起こったからと考えられます。
 もちろん、このような状況は一般的なものではなく、もっとノイズの密度が大きければ、苦心することでしょう。
 (c) X(BW, 255)白いノイズでも、小さな白い点が残っているところがあります。
 ここでは取りあげませんが、低周波中央値フィルター(メディアンフィルター)MDLでは、3種のノイズに対していずれもうまくとりのぞくことができます。

 エッジ保存平滑化

 このようなピンボケ化をどのようにして避けるか、という目的で開発されたのが、エッジ保存平滑化というフィルターです。
 これは、対象領域を、そこに含まれる小さな領域に分解し(一部重なっていてもよい)、それらの分散という統計量を調べ、それが最も小さな小領域の平均値を代表値とするものです。
 ノイズによる黒い染みが残るのですが、これらにおいては、「危険」や「警戒」や「注意」の文字が、よりくっきりとしています。

図5 高周波エッジ保存平滑化EPH

 中央値エッジ保存(平滑化フィルター)



図6 高周波中央値エッジ保存(平滑化フィルター)MEPH

 (a) X(BW, 0)黒いノイズでは明るい領域に黒い染みがたくさん現われてしまいます。
 (b) X(BW, 128)灰色のノイズと(c) X(BW, 255)白いノイズでは、ノイズに由来する染みは、かすかに残りますが、ほんのわずかです。

 Original(平滑化フィルター)



図7 Phantom

 (a) X(BW, 0)黒いノイズでは、ノイズは完全に消えています。
 (b) X(BW, 128)灰色のノイズでは、ノイズに由来する染みが、わずかに残っています。
 (c) X(BW, 255)白いノイズでは、ノイズに由来する染みが、もう少し多く残っています。

図8 Twin

 Twin という名前に、この解析アルゴリズムのヒントがあります。まあ、明かしませんが。
 Twin は灰色のノイズのために生み出したものです。しかし、そのように考えていましたが、画像というものは複雑なので、白いところの灰色と、黒いところの灰色では、まったく立場が異なってしまいます。そのようなわけで、こちらが期待したとおりにはならず、けっきょく、このTwin は黒いノイズに対して、もっとも効果的に作用しているようです。

図9 Angel

 Angel の狙いは白いノイズでした。ここでも期待を大きく裏切り、黒いノイズ、灰色のノイズ、白いノイズのいずれででも、見事にノイズを消しています。天使という名前が良かったのかもしれません。天使さまに、できないことは何もないのですから。

図10 Bass

 Bass(バス)とChimera(キメラ)とGill(ギル)は、エッジ保存平滑化をベースとして構成したものです。しかし、アルゴリズムが複雑化しすぎて、あまりうまく機能していないようです。エッジ保存平滑化を組み込んでありますので、文字だけは見やすくなっているのですが。

図11 Chimera

図12 Gill

図13 Gemini

 上記のBass, Chimera, Gill の作用が今一つだったので、新たなアイディアに基づき、このGemini(双子座)を作りました。
 これは、驚くべき効果を生み出してくれました。上記Angel(天使)と肩を並べることができる、パーフェクト関数(解析法)です。
 これ以上のものは、必要ないと考え、この平滑化マニュアルをまとめることにしました。

 まとめ

 これまでの評価をかんたんな記号でまとめてみました。
 この表から、Angel(天使)とGemini(双子座)が双璧だということが分かります。

表1 平滑化フィルターの評価



 (Written by KLOTSUKI Kinohito, September 10, 2016)

 参照資料

[1] 「コンピュータ画像処理」、田村秀行(著)、Ohmsha(刊)2002(平成14年)

 

医療画像解析ソフト ゴブリンアイズ ブランチページへもどる