Chaos Visitor’s Face Viewer を展示しています

現在開催中の「【新しい】カオス*ラウンジ【自然】」
http://chaosxlounge.com/atarashiishizen/
に参加しています。

破滅の人間が今回展示しているのは、「Chaos Visitor's Face Viewer」です!
破滅*ラウンジで展示していた「Chaos Proxy Viewer」ではインターネットの画像を根こそぎ取ってきていましたが、
今回は現実に進出!

来場者の顔をカメラで自動認識し、回したり

大量に動かしたり
http://d.hatena.ne.jp/hagino_3000/20101211/1291997625
しています。

技術的な話

私が担当した画像認識部分についてちょっと説明します。
顔の認識は、OpenCVの顔認識ライブラリを用いています。
フローとしては、Webカメラから顔を取得→顔認識→回すという感じになっています。
顔認識アルゴリズムはHaar-Likeです。
回す処理は、認識した全ての顔断片に対し、指定されたアングル分回してやって、元の画像に貼り付けています。
最初は顔を追跡して、それぞれに対して認識したときを0度として違う角度で回す予定だったのですが、
そのためにオプティカルフローの計算をするのはコストがかかるのと、見た目が実際あまり変わらないので、全部同じ角度にしています。(会期が始まった次の日にリリースされたOpenCV2.2ではGPU演算に対応したので、もう少し早ければ採用していたかも)
認識は100x100ドットより小さいものは弾くようにして、誤認識をある程度防いでいます。保存はWebGLの都合で128x128ドットにしています。
途中メモリリークで常にメモリをMAXで食いつぶしている状況でしたが、今は非常に快適に動いています。
顔画像はLANの中でのみアクセスでき、Sinatraで再利用できるようにしています。