ChMd210 色紋解析の空白パターン分類法 (1)色紋グラフ
Blank Pattern Taxonomy of Color Looks Analysis(1)Color Looks Graph

黒月樹人(KULOTSUKI Kinohito)

ブランチページへもどる

 はじめに

 色紋解析(Color Looks Analysis)というシステムを構成しようとしたとき、ある解析対象画像のすべての画素に使われている色を、赤や緑や青の成分に分解するのではなく、その色のままで調べてみようと思いました。
 そのままの色を、何らかの基準に沿って配置させる必要があるのですが、その一つの基準軸は濃淡値とすることにしました。これ以外の軸として考えようとすると、どうしても、赤と緑と青に関する3つの軸が必要となりそうです。ところが、それでは4次元空間が必要となってしまいます。
 この問題を解決するため、縦軸は濃淡値としておきますが、横軸に3種類の座標を想定して、3枚の解析グラフ(色紋グラフ)を並べることにしました。
 このとき組み込んだ、3種類の座標のための工夫が、あるとき不思議な効果を生み出しました。鉱物を主体とした画像では、3枚の解析グラフのいずれも同じように使われるのに対して、(さいしょに調べた)緑の葉をもつ植物の画像では、青色にかかわる領域が、まったくの空白になるのでした。
 これは、青色成分がまったくないというということではなく、このとき導入した工夫のせいで、青色成分の値が常にいちばん小さいということです。
 このような性質を利用すれば、鉱物画像と植物画像を、この色紋解析によって識別できるかもしれません。
 このあとの物語は、とても長く、かつ、複雑なものとなりますので、このあと、順を追って説明してゆくことにします。

 色紋解析の3つの構成法

 ほんの少し前まで、色紋解析は図1に示した、ゴブリンアイズ(とゴブリンライス)の色紋解析だけでした。
 ゴブリンクォーク9に色紋解析を移植したとき、詳しい色情報を一度に表示できるようにしました(図2)。
 さらに、これまでの色紋解析では、色紋グラフで最大輝度色を選ぶとき、濃淡値の0から255までの範囲で1色ずつとしていましたが、暗い底部のところで、影に由来する色があると、これが選ばれてしまい、その上の色がすべて無視されてしまいます。このことを避けるための工夫を組み込むことにして図3のゴブリンクォーク9の色紋解析$$$を構成しました。ここに記した$$$は単なる識別記号です。とくに意味はありません。


図1 ゴブリンアイズ(とゴブリンライス)の色紋解析による凡例
(画像をクリック → 拡大ページへ)

 @解析対象画像(1/4サイズ)、A色の積算グラフ(赤□緑 RGB)、B水平に調べた色、C存在色紋グラフ(R-G, G-B, B-Rの3つ)、D縦に調べた色、EBやDの色情報


図2 ゴブリンクォーク9の色紋解析DFTによる凡例
(画像をクリック → 拡大ページへ)

 @解析対象画像(1/4サイズ)、A色の積算グラフ(赤□緑 RGB)、B水平に調べた色、CBのPKとPAの色情報、D存在色紋グラフ(R-G, G-B, B-Rの3つ)、E縦に調べた色(dは横に256分割の縦の領域にある色についての最大輝度色, eは16分割での最大輝度色, fはdについての16分割での平均色,)、FEの色、GFの色情報


図3 ゴブリンクォーク9の色紋解析$$$による凡例
(画像をクリック → 拡大ページへ)

 @解析対象画像(1/4サイズ)、A色の積算グラフ(赤□緑 RGB)、B存在色紋グラフ(R-G, G-B, B-Rの3つ)、C存在色紋グラフを上から4つの領域に分けて、それらの領域内での、横に256分割した、縦にある色の中での最大輝度色

 このように凡例として記しましたが、このあと主に使用する図3についてだけ、詳しく説明します。@については自明のことですので、これについての説明は割愛します。

 ゴブリンクォーク9の色紋解析$$$によるAとBの構成法

 図3から、@と他の不要な部分を取り除いたものを、図4とします。
 Aは色の積算グラフ(POWER)です。R-GとG-BとB-Rの3枚となっています。
 Bは色の存在グラフ(EXIST)です。こちらもR-GとG-BとB-Rの3枚となっています。
 CはBの縦軸に沿って調べた最大輝度色です。この$$$では、Bの領域を4つに分割して、それらの中で調べています。


図4 ゴブリンクォーク9の色紋解析$$$のABC

 @の解析対象画像のすべての画素にある色について、APOWERとBEXISTのグラフを構成する方法について説明します。
 @の画像サイズが仮に900×600[画素]でしたら、540000個の画素について、次のことを繰り返します。
 540000個の画素のn番目の色をC(n)=(r, g, b)とします。このとき、濃淡値をgrayと記号化して、次式で求めます。(int)はC言語において、数値を整数値に変換するための記号です。
   gray = (int)(0.299 * r +0.587 * g +0.114 * b) ;
 このgrayの値が、AとBでの縦軸位置となります。Bの左に座標値が記してあります。Aについては、この座標値の表示は略しています。
 縦軸の値はdy=grayと決まりました。
 このC(n)の色の横座標の位置はR-GとG-BとB-Rの3枚ごとに異なります。
 R-Gグラフでの横座標の値dxは次の式で決めます。
   dx = (int)(256*g/(r+g));
 このように定義すると、r=255, g=0のときはdx=0となります。逆にr=0, g=255のときはdx=256となります。同じr=255, g=255のときはdx=128となります。色値として256は使わないのですが、この値にしておくことで、同じ値のときはdx=128という、ちょうど中間の値となるので、このようにしています。
 G-Bグラフでの横座標の値dxは次の式で決めます。
   dx = (int)(256*b/(g+b));
 B-Rグラフでの横座標の値dxは次の式で決めます。
   dx = (int)(256*r/(b+r));
 Bは、このような(dx, dy)の位置に、このC(n)色を入れるだけです。同じ場所に入るのは同じ色となります。何回入れても同じ色です。
 Aは、このような(dx, dy)の位置に、ここに対応する色が1回あれば、+1のカウントを加えていきます。ある閾値を超えたら、イエローやシアンやマゼンタの色にして表示します。
 このようなアルゴリズムのため、n番目の色C(n)=(r, g, b)についての、赤色rと緑色gの関係がR-Gグラフで示されることになります。G-Bでは緑色gと青色bの関係が、B-Rでは青色bと赤色rの関係が示されます。
 3つの色についての関係を一度に表そうとすると、3次元空間が必要となって、それを描写したとしても、そこにある関係性が分かりにくくなります。映画でなら、その色立体の様子を調べるため、カメラが周囲を回って、見る人の視点の方向を変えてしまうことでしょう。でも、それでは時間がかかってしまいます。
 このような問題に対して、上記のようなアルゴリズムを工夫することにより、(r, g, b) -> ((r, g), (g, b), (b, r))という変換を行ったので、3つの色紋グラフにより、3色の関係性を一目で認識することができました。

 ゴブリンクォーク9の色紋解析$$$におけるCの構成法

 BからCを構成する方法について説明します。
 Bの存在色紋グラフのR-Gは縦横256×256のマトリックスになっています。
 横の配列を数えて操作するための変数をiとします。このiは0〜255の値をとって変化します。赤文字でRとしてあるところの縦線位置はi=0で示されます。ここがR軸です。緑色でGとしてあるところがG軸で、こちらはi=255です。
 縦の配列を数えて操作するための変数をjとします。


図5 色紋解析$$$のEXIST R-GによるBからC

 縦のjに沿って、0から255を4等分しておきます。厳密にいうと、Dは0から63まで、Cは64から127までで、Bは128から191までで、Aは192から255までです。
 横にiを0から255まで一つずつ動かします。このiのひとつについて、jに沿って、そのAにある色を調べ、最大輝度の色となるものを決めて、CのAの段でi番目のところに表示します。そこに何も色がなければ、Cは白いままです。BとCとDについても、同じようにBで調べてCで表示します。
 図1のゴブリンアイズ(とゴブリンライス)の色紋解析や、図2 ゴブリンクォーク9の色紋解析DFTでは、このような256分割での最大輝度色に基づいて、16分割の色を決めていましたが、この$$$では、それは行いません。

 まとめ

 色紋解析の空白パターン分類法というタイトルを決めて、その内容についての画像資料は集めてあり、そのおおよその解析の流れも構成してあるのですが、これは純粋に科学的な論証ページとなりそうですので、少しずつ分割することにしました。
 今回説明した中心課題は、色紋解析の中心となる、色の位置を3つの色紋グラフへ振り分けるアルゴリズムです。ここのところを明かしてしまうと、腕のあるプログラマーなら、かんたんに色紋解析のプログラムを作ることができます。たとえ秘密にしておいても、これくらいのアルゴリズムなら、解析結果の画像を観察すれば分かることです。それよりも、このあと展開してゆく数々の発見についての基礎をしっかりと固めておくべきだと考えて公開しました。
 BからCを構成するところは秘密でもなんでもありません。ここのところは詳しく説明しておかないと、この後の議論がすすまなくなります。
 (Written by KLOTSUKI Kinohito, Feb 08, 2016)

 

ブランチページへもどる