キャラ弁作りに力を入れる人が増えていることに表れているように、ランチタイムに食べるものの見た目がきれいだったり面白かったりすると楽しい気持ちになります。そこで、開発者のAaron Randallさんが製作したのが、食事を写真撮影すると食べ物の形を認識して顔っぽく再配置してくれるアプリ「Megabite」です。

Megabiteがどんなアプリなのかは以下のムービーを見ると一発で理解できます。

Megabite - YouTube

ムービーに登場したのはiPhoneのスクリーンショット。画面に映っている「Megabite」というアプリをタップすると……



以下のような画面が表示されます。「Take a photo」という文字をタップ。



すると、カメラが起動。ベーコンや目玉焼き・トマトなどがのったお皿が写っています。しばらくすると……



最初の画面に撮影した写真が表示されました。



お皿がぐるぐると回転し始め……



写真がぐちゃぐちゃに。



気付いた時には顔ができあがっていました。



Megabiteの仕組みがどんな感じになっているのかはRandallさんのブログを見ると分かります。

Megabite | Aaron Randall

http://aaronrandall.com/blog/megabite/

まず、ユーザーが食べ物を撮影すると、アプリはテーブルにのっているもののうち、お皿とその上にあるものだけを切り取ります。



続いて、お皿にのっている1つ1つのアイテムの輪郭を認識する段階へ。Canny Edge Detectorを利用してモノクロイメージを抽出し(画像1〜5)、findContours機能で輪郭などを把握(画像6)。非凸状の輪郭など、余計なものを排除してから(画像7)、輪郭のうち重複しているものをフィルターにかけて削除します(画像8)。



次に、上記画像の「画像8」の中から各食べ物を取り出し、食べ物を回転させながら食べ物を囲む最小面積の長方形を計算します。



例えばトーストの場合、回転させることで、長方形の面積は以下のグラフのように変化します。赤い線が引いてある部分が長方形が最小面積になる時。



全ての食べ物について上記の処理を行うとこんな感じ。



アプリには「顔」のパーツ配置のテンプレートが組み込まれており、この各パーツとして、食べ物たちが配置されていくわけです。上記画像のうち一番右のテンプレートは目・鼻・口・耳の全6パーツに分かれていますが……



具体的にはパンが口に、目玉焼きが目に、ベーコンが耳に、トマトが鼻として見なされています。



あとはテンプレートにあるポリゴンの向きに合わせて、食べ物を回転させて配置させていけば……



いつもの昼食があっという間に顔になるわけです。



なお、MegabiteはApp Storeなどで配信されていないのですが、GitHubでコードが公開されています。

GitHub - AaronRandall/Megabite: Turn a photo of your food into a face

https://github.com/AaronRandall/Megabite