ゴブリンライス(開発中)の「色紋」解析
Iromon (colorprint) Analysis @ Goblin Rice (on development)

9621 ANALYSIS (黒月解析研究所)http://www.treeman9621.com/
ソフトについての問合せ先 

C言語プログラムブランチページへもどる

 「色紋」解析

 「色紋」解析は、「画紋」解析に準じて、新たに開発したものです。
 「画紋」や「色紋」の「紋」は、「指紋」や「声紋」と同じ意味です。「特有の画像パターン」と説明すればよいかもしれません。
 「画紋」解析では、画像の色情報を調べました。ただし、このときの「色」というのは、画像を構成している、赤緑青(RGB)の3原色を意味していました。
 「画紋グラフ」は、これらの3原色が、濃淡値に対して、どのような関係になっているのかということを示しています。それぞれの画像に特有の画像パターンが得られます。
 これに対して「色紋」解析では、画像の色情報を、赤緑青(RGB)の3原色にまで分解しないで、各ピクセルにある、「そのままの色」として取り扱います。
 画素としての色は、Iro = f(r, g, b) という関数のようなものです。ここで、rは赤色、gは緑色、bは青色の値で、0から255の自然数として変化します。これらの成分としてのr,g,b を調べたものが「画紋解析」でした。
 「色紋解析」では、Iro = f(r, g, b) という関数の、Iroのほうに着目して調べてゆき、最後に、この関数のひとつずつの関係を明らかにします。
 理論的なことだけを述べてゆくと、数学のテキストのようになってゆきそうです。具体的なイメージを示して、さらに詳しく説明してゆくことにしましょう。

 クレーの「金色の魚」

 解析原画像として、クレーの「金色の魚」という絵 [1] を使います。これは、なかなか見事な絵画です。



(画像をクリック → 拡大原画像へ進む)


 ゴブリンライス(開発中)の「色紋」解析で、クレーの「金色の魚」調べると

 ゴブリンライス(開発中)の「色紋」解析で、クレーの「金色の魚」調べると、次の図2〜図4のようになります。
 向かって左上に、原画像の「1/4サイズ画像」があります。その右に「色の積算グラフ(Power)」があり、下に移って、「(存在)色紋グラフ(Exist)」と、「色値表」が並んでいます。



(画像をクリック → 拡大原画像へ進む)



(画像をクリック → 拡大原画像へ進む)



(画像をクリック → 拡大原画像へ進む)


 「色紋グラフ」の基本的なアイディア

 このような構成法を考えるのに、実は、何カ月もかけました。色を3原色としてではなく、そのまま調べて、げんみつにグラフ化しようとすると、3次元の空間が必要となります。コンピュータのディスプレイに3次元空間を描くことは可能ですが、非常に見づらいものとなってしまいます。回転させて、ある断面を見せたとしても、それらの全体像を理解するのは、かなりの難行でしょう。
 3次元空間に代わるものとして、何かを考えつく必要がありました。それが、図2〜図4の、下半分の、向かって左から並んでいる、3つのグラフです。図2から、この部分だけを取り出して図5とします。



(画像をクリック → 拡大原画像へ進む)


 「(存在)色紋グラフ(Exist)」とタイトルづけしていますが、左から、「RGグラフ」「GBグラフ」「BRグラフ」と呼んで区別します。R, G, B は赤(Red) 緑(Green) 青(Blue) の頭文字です。
 上の四角い3つの領域が、げんみつな意味での「色紋グラフ」です。縦軸は「濃淡値」です。白黒画像としたときの、白色と黒色と、その間にある灰色の色値のことです。「濃淡値」を直訳すると長くなってしまうので、Grayという単語で代用しています。
 あるピクセルの色を Iro = (r, g, b) としたときの「濃淡値(Gray)」は、次の式で求めています。
    gray = 0.299×r + 0.587×g + 0.114×b
 さて、「色紋グラフ」の横軸ですが、「RGグラフ」だけについて説明すると、左端がR(赤軸)で、右端がG(緑軸)となります。これらの間は、Iro = (r, g, b) における、赤色成分値rと緑色成分値g についての「比」に応じて、位置を決めます。たとえば、r = 200, g = 100なら、RからGに向かって、1対2の内分点のところとします。さらに b = 50 であったとすると、
    gray = 0.299×200 + 0.587×100 + 0.114×50 = 124.2
となりますが、小数点以下を切り捨てて、Gray = 124となります。
 こうして、Iro = (200, 100, 50) の場合、「RGグラフ」においては、左から右へと、1対2の内分点のところを決め、下から124の位置にあるピクセルに、Iro = (200, 100, 50) の色を入れるわけです。
 「GBグラフ」と「BRグラフ」についても、同じように対応させて、色の位置を決めてゆきます。
 ここで確認しておくことがあります。これらの「色紋グラフ」においては、ある色が、何度重複して使われているかという情報は、まったく無視されています。その情報については、別のグラフ(色の積算グラフ)で取り扱うことにして、ここでは、どのような色が存在しているのかということだけを調べているわけです。
 「色紋グラフ」に (存在) と (Exist) がついて「(存在)色紋グラフ(Exist)」と記されているのは、このような理由からのことです。
 「色紋グラフ」の下に、d, e, f の帯グラフが並べてあります。



(画像をクリック → 拡大原画像へ進む)


 dは「色紋グラフ」の縦軸を見て、最も「輝度」の大きな色(あざやかな色)を選んであります。これは、縦軸の「あざやか選抜色」ということになります。「輝度」も直訳するとむつかしそうなので、Kido と記すことにしました。
 eは、「色紋グラフ」の横軸を16分割したときの、それぞれの区間において、dの中から、最も「輝度」の大きな色を一つずつ、代表色として選んだものです。「地区別チャンピオン」のようなものです。
 fは、「色紋グラフ」の横軸を16分割したときの、それぞれの区間において、dの色を平均化したものです。各区間の平均色ということになります。「地区別の統計値」のようなものです。

 色の積算グラフ(Power)

 図5の「(存在)色紋グラフ(Exist)」は、「このような色が存在します」ということだけを表わしていました。しかし、原画像のサイズは、もっと大きなものですから、必ずと言っていいほど、「同じ色のピクセル」が、たくさんあるはずです。
 図7の「色の積算グラフ(Power)」(RGBまで)では、このような、「(存在)色紋グラフ(Exist)」に示された色が、いったい、どれくらいあるのかという、いわゆる積算値を数え上げたものです。黒い点は少ない数で、明るい色の点になるほど、多いということになります。「(存在)色紋グラフ(Exist)」のRGグラフに対しての積算値では、RとGに同じ値を入れて、黄色(イエロー)となります。GBグラフのときは、水色(シアン、あるいはアクア)です。BRグラフだと、藤色(マゼンタ)です。□色比 のスイッチで、1〜8を選ぶことができます。この値は、色を強めるためのものです。
 「色の積算グラフ(Power)」は、255×255の領域だけでなく、その右に並んでいる3本の薄い線までを含みます。ここは、3色のうち、1色だけがゼロではないという色です。たとえば、Gの線の下のほうには、rgb(10, 0, 0) のような、ほとんど黒で、やや赤味のかかった色などがカウントされます。これらは、あまり支配的なものとならないようです。



(画像をクリック → 拡大原画像へ進む)


 「各種帯グラフ」の「rg」「gb」「br」について説明します。
 「rg」の帯グラフは、(存在)色紋グラフ(Exist)のRGグラフと、その色の積算グラフ(Power)を考慮して、各濃淡値の位置で、もっとも 数の多い色をリストアップしたものです。「各濃淡値のレベルにおける、最大得票色」と表現すれば分かりやすいかもしれません。
 「gb」「br」の帯グラフも、同じような対応で求められています。
 「kido」と記した帯グラフは、各濃淡値のベルについて、「rg」「gb」「br」の3候補の中から、最も輝度の大きなもの(あざやかな色)を選んだものです。これは、横軸の「あざやか選抜色」ということになります。
 「PK」と「PA」は、16地区選抜色ということになりますが、その選び方が異なっています。
 「PK」のPはPowerの、KはKidoの頭文字です。16に分割された濃淡値の区分の中で、最も輝度の大きなもの(あざやかな色)を選んだものです。各区分における輝度選抜チャンピオンのリストということになります。
 「PA」PはPowerの、AはAverage(平均)の頭文字です。このときは、16に区分された濃淡値の中にある色をすべて使った平均値としての色を求めています。

 色値表

 「色値表」が現れるためには、「[3] 色値表」でスイッチが何か選ばれていなければなりません。図8が、そのスイッチです。かなり複雑な分類となっています。まず、◇Power と◇ Exist に分類されます。
 ◇ Power のほうでは、[PK] と [PA] から、どちらかを選ぶだけです。16色の帯グラフと、図9の「色値表」(左のもの)の対応は、まったく同じです。
 ◇ Exist のほうでは、さらに「Order→, V(↓)」と「GrayVal, V(↑)」の2種類のタイプに分かれます。
 「Order→, V(↓)」は、e [RG][GB][BR] やf [RG][GB][BR]の、各帯グラフにおいて、左から右へと並んだ16色が、図9にある「色値表」(中のもの)では、上から下へと並ぶことになります。
 「GrayVal, V(↑)」では、濃淡値について並び替えをおこなって、濃淡値の小さい色から大きい色へと、図9にある「色値表」(右のもの)では、下から上へと並ぶことになります。



(画像をクリック → 拡大原画像へ進む)




(画像をクリック → 拡大原画像へ進む)


 「色値表」で、とくに説明しておかなければならないことは、「Gray」という記号が「濃淡値」を表わしているということでしょうか。この濃淡値と、Red(赤), Green(緑), Blue(青)の、各成分値を数字で並べています。

 参照資料

[1] 金色の魚
  http://art.pro.tok2.com/K/Klee/vv005.htm
  1925  50 x 69 cm   ハンブルク美術館、ドイツ


 

C言語プログラムブランチページへもどる