第3回アプリケーションコンテスト 最優秀作品 「CatPunch」

第3回アプリケーションコンテストで最優秀賞を頂きました山岸です。
アプリケーションコンテストにエントリーした私の作品について紹介させて頂きます。

■アプリ概要

Android向けのランダム順番決めアプリです。

複数人の顔が写っている画像を選択すると、顔の数を自動で検出して対象人数を算出し、ボタンをタッチするたびに1から順に番号を割り当てることができます。

画像は端末内の既存データから選択する以外に、カメラで撮影したものを使用することも可能です。

番号を割り当てる順番は完全にランダムなので、同じ画像でも実行するたびに異なった順番が割り当てられます。

CatPunch_01

 

CatPunch_02

※顔の一部が隠れていたり、ピントが合っていなかったり、画像全体に対して顔が小さすぎたり(大きすぎたり)すると、上手く顔として検出されない場合があります。

■素材 ~画像と効果音~

今回作成したアプリでは、番号を割り当てる際に “猫の手形” が付き “猫の鳴き声” が鳴るようになっています。これらの画像と効果音は、アプリが内部で持つ「素材」を使用しています。

実は、作成当初は「素材」としてまったく異なるものを使用していたのですが、このアプリの場合「素材」を変更するだけでアプリ全体の雰囲気がガラッと変わるので、色々な「素材」を試してみました。

例えば、”銃で撃たれた痕” と “銃声”だと西部劇風に、”斬撃” や “打撃” などを混ぜるとRPGゲーム風になるなど、「素材」によって様々なアプリの雰囲気を楽しむことができました。

残念ながら実装には至りませんでしたが、「素材」を変更する機能を付与すれば、もっとアプリの楽しみの幅が広がると感じました。

■画像認識

このアプリでは、画像が選択されたときに “顔の数を自動で検出する” という処理が行われます。

このような、画像データの内容をコンピュータが自動で分析し特定の形状を認識する技術を「画像認識」といいます。

複数人の顔が写っている画像を見たとき、人間ならばすぐに何人の顔が写っているかを判断することができます。これは “画像内の背景と対象物を切り分けて、対象物が何であるかを分析する” という行為を無意識のうちに当たり前に行っているからです。しかし、コンピュータが同じことをするには高度で複雑な処理が必要になります。

幸いにも、Androidの標準APIには “顔検出” を行ってくれる機能が存在していたため今回はそれを利用しましたが、あまり精度がよくないので、より正確な顔検出を行いたい場合は自分で機能を拡張するか、標準API以外のAPI等を利用する必要があると思いました。

また、今回は画像認識の中でも “顔検出” の部分にしか触れることができませんでしたが、次回は文字認識やバーコード/QRコードリーダーといった、もっと日常で使用する機会が多い認識方法を組み込んだアプリを作成してみたいと思っています。