全人類の顔のパターンを数値化する

穂滝薫理



 言うまでもないことだが、世の中には自分に似た顔の人が3人いる。3人のうち1人は自分自身だから残りは2人だ。ところで、現在世界の人口は63億人と推定されているから、人間の顔のパターンは、その3分の1である21億通り程度あるということだ。
 さて、231=2147483648なので、21億は、およそ2の31乗、つまり31ビットで記述できる数である。ということは、わずか4バイト(=32ビット)あれば、人間の顔のパターンは網羅(もうら)できてしまうということになる。4バイトと言われてピンとこないかたのために例を挙げておくと、今私がパソコン上で書いているこの日本語の文章の文字、たった2文字分、それが4バイトの量である。“顔型”、この2文字の中に21億通り、すなわち全人類の顔の型が入ってしまうかと思うと、人類のはかなさや自然の偉大さを思わずにはいられない。

 では、具体的には、31ビットで描ける顔のパターンというのはどういうものなのだろう。最初に思いつくのは、1ビットに1ピクセルの画素を割り当て、パソコンの画面みたいに点の集まりで顔を描くことである。図1は、6×5−1+2=31ピクセルのマス目(×印のところは使用しない)を用意して顔を描いたもの。このうち、点のあるところ(黒いところ)=1、点のないところ(白いところ)=0と考え、全マス目を1列に並べれば、31ケタの2進数列ができあがる。図1の例では、0001111011100100100110100001011となり、これは10進数では、2億5914万9067である。つまり、21億通りのうちの2億5914万9067番目のパターンが図1ということだ。このように白黒のパターンを1と0に置き換えれば、31ビットで約21億通りの顔を判別できる。
 ちなみに、図1は小泉総理の写真を加工したものだが、判別できるだろうか? もちろんできない。そもそも全部0だったり、全部1だったりしたら、それはただの真っ白か真っ黒の平面であり、顔とすら認識できないからだ。
 よって、この方法は、21億通りの顔を表わすのには不適当ということがわかる。

 人の顔は、基本的にはみな同じようなつくりをしている。すなわち、目が2つあって、鼻が中央に1つ、その下に口、といった具合だ。あとは、その微妙な位置や大きさの違いにより、個々の顔の違いを判別していると考えられる。そこで、その微妙な違いを数値化してみることにする。

図1

 表1は、多少試行錯誤しながら作成した、私の案である。顔の輪郭、眉、目、鼻、口のそれぞれについて必要と思われる要素を抜き出し、それぞれの属性を数値化できるように表わしたものである。やはり、人の顔の判別には目が重要ということで、目には合計11ビットが割り当てられている。たとえば、“目のたての大きさ”という属性には2ビットが割り当てられ、目のたての大きさ、すなわち目の太さ(細さ)を4段階で表わしている。小泉首相の例で言えば、彼は目が非常に細いので、ここの値は“0”、つまり目の細さの平均値より50%細い目を持っているということになる。このようにしてそのほかの属性にも値を入力していけば、その組み合わせは約21億通りになり、地球上のすべての顔のパターンを表わすことができるのである。
表1


 というわけで、この方法を使って描かれた図2が小泉首相である。明らかに小泉首相を判別できるであろう。ちなみに彼の値は、10進数で7億5950万7885となり、同じ値を持つ人が地球上にあと2人いるのである。いるといったら、いるのだ。

図2





論文リストへ