太田研 公開用Wiki

つくばチャレンジのための色情報と形状情報を用いた人物検出手法

はじめに

色覚異常とは、目の錐体が機能しないために、正常な人とは異なる色の見え方になってしまうことである。正常な方の見え方と色覚異常の方の見え方を以下に示す。

図1.png

原因としては遺伝などの先天的な原因や、病気などの後天的な原因などがあり、日本人の男性で 5 % , 女性で 0.5 %の割合でいる。この割合は小学校のクラスの中に一人いるかいないかくらいの割合であり、身近にいる割合である。こうした人々を理解し、配慮することはとても重要である。 現代ではメディアが発展して色を区別や強調するために使用したりしている広告や、路線図などが多く存在し、色が非常に多く使われている。色を使うことで文字量を少なくし、シンプルにすることができる。また、イメージとして頭に残りやすくなる。正常な人にとってはこのような色で区別する方法はとてもわかりやすく、便利な表現方法である。しかし、色覚異常者にはそのような色を判別することができずに、不便に感じてしまうことが多々ある。また、日常生活においても色の判別ができないために不利益を被ってしまう。こうした不利益を色覚異常 者が被らないように画像処理によって手助けすることは非常に有効的である。本研究では、主にコンピュータ上でグラフなどを使用する場合に色が混同してしまっている状況を想定し、画像処理を用いて色覚異常者が判別できない隣り合う色の変化を色勾配を利用することで判別できるようにする手法を提案する。

 

色覚異常の原理

人の網膜上には視細胞という光に反応する細胞があり、これらが受ける光の刺激が脳に伝わり、人間は見ることができる。視細胞には 2 種類あり、桿体と錐体と呼ばれている。2つはそれぞれ別の働きをしていて、桿体は主に暗所で機能して、色の知覚に関しているのは錐体の方である。錐体が反応する光の波長は 380∼780nm であり、これを可視光と呼ぶ。可視光のどの部分の波長を感じるかによって種類があり、 L 錐体、 M 錐体、 S 錐体が存在する。この3種類の刺激の比によって色を視認することができる。おおよそ L 錐体が赤色(長波長)、 M 水錐体が緑色(中波長)、S 錐体が青色(短波長)の波長を感じることができる。

図2.png

色覚異常とはこれら3種類の錐体の内1つ以上の錐体になんらかの以上が発生し、機能していない状態のことである。原因としては前述したように、先天的なものや病気などが考えられる。色覚異常には機能していない錐体の組み合せによって何種類か存在する。機能が残っている錐体の数が3つある場合は3色覚、2つなら2色覚、1つなら1色覚という。そして機能していない錐体が L 錐体なら1型、 M 錐体なら2型、 S 錐体なら3型呼ぶ。 2 色覚の場合は色の完全に知覚できないというわけではなく、特定の範囲の色の知覚は可能である。L 錐体だけが機能していなければ 1 型 2 色覚、 M 錐体だけが機能していなければ2型2色覚というように、これらの組み合わせで色覚異常の種類を表す。色覚異常の大半は、1型2色覚と呼ばれる色覚異常で、つまり L 錐体が機能していない人たちである。よって本研究は1型2色覚を対象として進めることにする。この1型2色覚を第一色盲と呼ぶ。第一色盲は緑系統と赤系等の色が判別することができないという問題がある。正常な方の見え方と色覚異常者の方見え方を以下に示す。

図3.png

図4は正常な方の見え方である。図5は色覚異常者の方の見え方である.右側のように色覚異常者は見える色の種類が少なくなり、色の判別が非常に困難であることがわかる。   

混同色の境界検出アルゴリズム

色空間の変換

RGB表色系とはR、G 、B、つまりRed,Blue,Greenの3つの要素を用いて色を表現する方法である。この表色系は一般的なディスプレイやカメラなどの画像で用いられるRGBはそれぞれ 0 から255の値をとり、すべて0にすると黒、255にすると白になる。赤を表現する場合は R のみを255にしてGとBの値は0にする。他の色もそれぞれの値の組み合わせによって表現される。RGB表色系の一つして CIERGB というものがある。これはCIE( 国際照明委員会 ) が定めたものでRGBの定義を波長 700nm(R),546nm(G),435.8nm(B) の単色光としている。このRGB表色系は色知覚のよい近似であるが、人間が知覚できる色を完全に網羅しているわけではない。レーザー光などにみられる単一波長の色はRGB色空間の外側であって単にRGBの混ぜあわせだけでは表現できない。これを表現するために RGB に負の値を許さなければならない。しかし、負の値は扱いにくいため負の値をなくすために考えだされたのがXYZ空間である。XYZ空間のXYZは直感的に何を表しているかRGB空間と比較するとわかりにくいが Y は明るさ、 Z は青み、 X はそれ以外の要素を含んでいる。RGB空間からXYZ空間に変換させるためにまず、RGB を sRGB に変換する。sRGBとは色空間の国際標準規格である。ディスプレイなど機器の違いによって異なる色にならないようにするための表現形式である。RGBの値を変化させた場合ディスプレイ上でも同じように変化しているわけではない、ガンマ特性というガンマをγとして(RGB)^γに比例して変化する。色空間を変換する場合このガンマ特性を考慮して変換しなくてはならない。よってXYZ空間に変換する場合にRGB空間をsRGB空間に変換する必要がある。
ガンマ特性を考慮した場合のRGBの値は以下のように変化する。

ganma.png

このf は以下の式でガンマ特性を表している。

fx.png

そしてこの求められたR'G',B'よりXYZ空間に変換する。 RGB空間からXYZ空間の変換は一次変換によって求められ、以下の式で表され る。

XYZ.png

XYZ色空間に変換した後、色覚異常色空間への変換を行う。色空間X =(X Y Z) から錐体の色刺激空間Y = (L M S ) への変換は

A.png

として、Y = AX で計算される。この刺激空間を色覚異常色空間に変換する。本研究では第一色盲についてのみ扱うので、第一色盲の異常色空間に変換する。第一色盲の色刺激空間Y'=(L′M′S′)への変換は

B.png

として、Y'= BY で計算される。したがって色覚異常者のXYZ 色空間X′ = (X′Y ′Z′) への変換はM =A^-1BAとして、X'= MX となる。そして、第一色盲について解析すると、

M.png

この式よりv1,v2,v3が得られる。それぞれ

v1v2v3.png

ベクトルv3はXYZ色空間でのゼロ空間ベクトルである。XYZ空間のv3方向の成分は色覚異常者の色空間に変換する際にすべて0 になってしまう。このために、色覚異常者の方は色がわからなくなってしまう。ベクトルv1,v2方向の成分は値を持ったまま、色覚異常者の空間に変換される。つまり、XYZ空間でベクトルv1、ベクトルv2 で張られた平面の色の変化は色覚異常者の方は判別できるということである。しかし、この平面に垂直なベクトルv3 の変化は色覚異常者の方は判別することができない。したがってXYZ空間の色勾配に含まれるv1v2 方向の成分は色覚異常者が判別できる成分であり、v3 方向の成分は色覚異常者が判別できない成分である。このベクトル用いて、色勾配からそれぞれの成分を抽出する。

色勾配の計算

色の境界を調べるため、色の変化している部分を計算する。色の変化している部分を色勾配といい、色勾配の計算方法を説明していく。画像を RGB から XYZ 空間に変換する。画像の位置 (i,j) の画素 (Xi,j ,Yi,j ,Zi,j ) と隣の画素 (Xi+1,j ,Yi+1,j ,Zi+1,j ) とする。この画素の差を計算することで横方向の色勾配 Cx を求めることができる。同様に縦方向の色勾配を求めると

Cx.png
Cy.png

これらの色勾配から色覚異常者が判別できる成分と判別できない成分を求める。まず、色覚異常者が判別できない成分を抽出してエッジ e i,j とする。

v3.png

これで色覚異常者の判別できない成分を求めることができる。v3 成分は色覚異常者に判別することができない成分であり、色覚異常者が判別しにくいほどv3 方向の成分が含まれているということである。次に色勾配から色覚異常者が判別できる成分を抽出してエッジe2i,j とする。

v1v2.png

この式によって色覚異常者が判別できる成分を求めることができた。そしてこの計算をすべての画素について行う。

色覚異常者が判別できない境界の検出

 作成した画像は色覚異常者が見える成分の画像と色覚異常者が見えない成分の画像の二枚である。それらを画像にする際、計算した結果をそのまま画像にしても値が非常に小さく、すべて黒の画像が作成されるだけである。よって、作成したそれぞれの画像で最大値を求め、最大値で割って 255 を掛けることによって画像にしている。

これらの画像から色覚異常者が判別できない境界のみを求める。方法としては、色覚異常者が見えない成分の境界画像 a 、色覚異常者が見える成分の境界の画像 bとする。そして画像 a から画像 b を引くと色覚異常者が見えない成分だけが残るので色覚異常者が判別することができない境界を取り出すことができる。差分をとった時に負の値になったものはノイズの原因になるので負の値は 0 にする。しかし、これだけではまだ色覚異常者が判別できない境界だけではなく、余分な境界も含まれてしまう画像cができてしまった。この余分な境界を消すために以下のことを行う。

余分な境界とは色覚異常者が判別できる境界である。余分な境界が出てきてしまう原因は画像 a から画像 b を引いた時に、画像 a の色覚異常者が判別できるところの値が 0 にならなかったということである。このような余分な境界は必要ない。したがって色覚異常者が見えない成分画像 a があっても、色覚異常者が見える成分画像 b が一定数値以上あれば色覚異常者が見えない成分は無視することにする。画像 b で、ある一定以上の値を超えたということは色覚異常者には判別ができるということである。

したがって閾値を設定して閾値を超えたところの値を画像 b で最大値の 255 にしておけば画像 a と画像 b の差分を取るときに画像 a の値が 0 になって画像 a の余分な境界を消すことができる。そして残った部分が色覚異常者の方見えない境界であるので残った部分を最大値 255 に強調して画像を作成する。

実験と結果

提案手法の確認

まず最初に色覚異常者の方が完全に混同してしまう境界を持つ画像を作成した。 図6 に示す。また、作成した画像を色覚異常者が見た場合の見え方を図7 に示す。

図4.png

この画像では4色使っているが、色覚異常者が判別できない色の境界は下2つの境界である。色の作成方法としてはある色をP = (X  Y Z) として、

P.png

この式により、色覚異常者が判別できない色を作成した。これはP′からPを引いた時にv3 方向の成分のみが残るような式になっている。この作成した画像から色覚異常者が判別できない成分と判別できる成分を求めていく。

色覚異常者が見えない成分は色勾配のv3 方向の成分である。そのv3 方向の成分を画像にしたものが図8である。また、色覚異常者が見える成分を画像にしたものが図9である。

図5.png

色覚異常者が見えないv3 方向の成分はすべて出てきているが、これはどの色の境界にも少なからず色覚異常者が見えない成分は含まれている。よって、このようにすべての境界が出てきているという結果になった。v1v2 方向の成分画像は下2つの色の境界と左2つの色の境界ができていない。これは色覚異常者の見え方を見ると、色覚異常者の方が判別しにくい境界である。よって境界が出てきていないという結果になった。したがって、v3 方向の成分は 色覚異常者の方が判別できない成分、v1v2 方向の成分は色覚異常者の方が判別できる成分ということが確認できた。

次に、これらの画像から差分画像を作成し、色覚異常者が判別できない境界のみの画像を作成する。しかし、単純に引いただけでは余分な境界が残ってしまう。こうした余分な境界を除去するためにはv3 方向の成分画像からv1v2 方向の成分画像を引いたときにv3 方向の成分画像の値が0 になるようする。そのために閾値を設定してv1v2 画像で色覚異常者が判別できる境界の値を最大値にする必要がある。したがって閾値を設定してv1v2 方向の成分画像で色覚異常者が判別できる境界が検出できていればいい。閾値を設定して色覚異常者が判別できる境界がどのように検出されるかを確認する。

図6.png

閾値20の場合では左2つの色の境界が出てきていない。しかし、閾値1の場合は左2 つの色の境界は出てきている。これは閾値20 の場合に左の境界も色覚異常者の方は判別できないだろうと判断しているので境界が出てきていない。しかし、この境界は図7 を見ると、確かに色覚異常者の方は判別しにくい境界ではあるがまったく判別できないわけではない。閾値1 の場合は左の境界は色覚異常者の方に判別できると判断し、境界が出てきている。よって、差分画像は以下の図になる。

図7.png

閾値20 の場合は左の境界と下の境界が検出されていて、閾値1 の場合は下の境界のみが検出されている。これは、差分を取った時に閾値1 の場合は左の境界が色覚異常者が判別できる余分な境界となったため除去されたからである。このようにまったく見えないわけではないが見えにくい境界は閾値を低くすることによって除去し、色覚異常者が判別しにくい境界のみを検出できる。

グラフに対しての処理

次に一般的に使われているグラフに対しても処理を行った。

図8.png

図14、図16 が正常な方の見え方で図15、図17 が色覚異常者の見え方である。 これに対して処理を行うと以下の結果になる。

図9.png

結果を見ると色覚異常者が判別できる境界である青と茶色の部分には白い線は 入っておらず、色覚異常者が判別できない茶色と茶色の境界に白い線が入ってる。 また、もう一方のグラフについても色覚異常者がわからない境界に白い線が入っ ている。 したがって色覚異常者が判別できない色の境界を補助することができている。

考察

図10.png

この図に処理を行うと以下の図になった。

図11.png

結果を見ると、右下の色覚異常者が混同してしまっている青と紫の境界や色覚 異常者が判別しにくい境界には白い線が入っていて色覚異常者がわかるようになっている。しかしながら白いノイズなどが入ってしまった。ノイズになっている部分は黒や白から違う色に変化している部分である。これは色勾配の大きさが大きい場合、色勾配に含まれるv3 方向の成分割合は小さいが大きさは他の境界とあまり変わらない場合、画像にした時に最大値で割って255 を掛けて画像にしているので色覚異常者の見えない境界と同じような数値になってしまい、差分画像を作成した時に余分な境界を消すことができずにノイズが生まれる原因となってしまうのではないかと考えられる。また本手法では差分を取った結果が値を持っていればすべて色覚異常者が見えない境界というようにしてしまったが、差分を取った結果がある程度あれば色覚異常者が見えない境界というようにすれば、こうしたノイズを消すことができるのではないかと考えられる。また、考えられる要因としては画像をサイズ変更などで圧縮した場合に、色の境界部分にノイズが入ってしまうことがある。本手法では色勾配を求めるのに一つ隣の画素しか見ていないのでこのようなノイズが消せない原因になっていると考えられる。


添付ファイル: fileP.png 335件 [詳細] file図11.png 329件 [詳細] file図10.png 330件 [詳細] file図9.png 324件 [詳細] file図8.png 337件 [詳細] file図7.png 374件 [詳細] file図6.png 396件 [詳細] file図5.png 368件 [詳細] file図4.png 373件 [詳細] file図3.png 760件 [詳細] file図2.png 348件 [詳細] file図1.png 474件 [詳細] fileXYZ.png 347件 [詳細] filev1v2v3.png 333件 [詳細] filev1v2.png 356件 [詳細] fileM.png 317件 [詳細] fileganma.png 327件 [詳細] filefx.png 331件 [詳細] fileCy.png 345件 [詳細] fileCx.png 368件 [詳細] fileB.png 370件 [詳細] fileA.png 343件 [詳細] filev3.png 329件 [詳細]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-16 (木) 14:09:44