微小色検出

センサ

はじめに

2026.07.29のblog「微小移動の検出」では僅かな移動を拡大して見えるようにしました。これに対して、静止しているがそこに小さな色変化があるのを見つける処理もあります。医療の分野で、何かができているのを見つけたりするのがその代表的な応用です。今回はその一例を示します。これは2026.07.10「TouchDによる色を使った映像の分解と合成の基礎」の応用と位置付けることもできます。簡単で高い効果が得られる手法です。

色の違いの検出

次の画像は白の背景に黒のニューロン模様があり、そのニューロン模様にはよく見ると所々色が付いています。この色を分離して検出するのが最初の課題です。

色を検出するのは簡単です。次がプログラムです。

level TOPでパラメータInbertで白黒反転し、それをchroma key TOPでHueを調整して色を抽出しています。次が結果です。元の画像と合わせて示します。色の部分だけが抽出できていることが分かります。

異物検出

次はより細かな異物検出をする方法です。次がプログラムです。

これは自分で見つけましたが、恐らく知られた構成でしょう。ポイントはcomposite TOPでDifferenceを使い差を取ります。Differenceはabs(A-B)で差分の絶対値です。何の差分の絶対値かというと、入力のままと、leve TOPとです。level TOPはパラメータBrightnessを4と上げているのが特徴です。Brightnessは形を変えずに明るさをアップします。このため色が付いている部分は明るくなり色の部分に差がでます。level TOPの代わりにconvolve TOPを使ってもできます。convolve TOPはlevelやフィルタと同じ機能を発揮できます。Differenceを取ったcompsite TOPではedgeが残っているので、edge TOPを次のcomposite TOPのパラメータSubtractiveで引き算して消します。SubstractiveはA-Bの引き算です。負になった場合は黒くなります。crop TOPは外枠に差が残る場合を除くために使いました。そしてleve TOPで軽く調整します。ちなみに今回使っておりませんが、composite TOPにはSubtactもあります。これはA+(1-B)です。つまりBを反転して加算します(これはBの暗い部分が強調されることになります。DifferenceとSubstractiveとSubtactは引き算でよくにてますが、処理はそれぞれ違違い、結果も大きく違います)。
こうすることで、次の画像が得られます。元の画像と比較して表示します。

この方法では、色が付いている部分だけでなく、ニューロンの線が途切れたり、途切れそうになるほど細くなっているところも検出しています。白の点あるいは線として見えている箇所が追加できた箇所です。細くなった部分がBrightnessにより変化がでるためです。

次に示すのは、バナナの映像ですが、所々に黒いシミがあります。これを検出する例です。簡単なのはバナナの映像にedge TOPを掛けることです。次のようにシミが検出できます。

edge TOPを施した画像に先ほどのプログラムを使うと、次のようになります。

結果を入力画像と並べて描いたのが次です。

先程のedge TOPだけの画像より随分細かく検出できていることが分かります。

このように、形の変化でなく、表面に色や途切れが有るかどうかを検出するのに、level TOPのBrightnessの違いをcomposite TOPのDifferenceで検出し、残った輪郭をSubtractiveで除く方法があります。

まとめ

元の画像と明るさを変えた画像との差の絶対値を取り、残った輪郭を消すことで、色による違いを検出する方法を示しました。以前紹介した「TouchDによる色を使った映像の分解と合成の基礎」の応用に相当します。オブジェクトの内部の異物を検出するには特別なセンサが必要ですが、表面にある微小な色変化は、カメラ画像と比較的簡単なプログラムだけで検出できます。

コメント