URL一発でエロエロになれるエロ目ジェネレータ

あけおめ。

新年といえばお年玉。お年玉と言いつつお札ばっかりあげている今日この頃ですが、今年もよろしく。

お年玉をもらったら何に使いますか?Wiiですか。そうですか。Wiiを買う前にそのお札でちょっと遊びましょう。最近はターバン野口とかかなり高度や奴もありますが、今日は基本の奴を。

目を中心に山折するだけで、野口英雄も福沢諭吉もエロエロなスケベさんです。
これってプログラムで簡単に実現できるんじゃないかなー、と作ってみました。

エロ目ジェネレータ

なんと顔写真のURLを入力するだけでエロ目にしてくれるジェネレータ。その名も「エロ目ジェネレータ」。
昔画像処理の勉強中にアプレットで少し作ったことがあったのですが、そのときは目線をマウスで入力する必要があったりしてイマイチだったのでした。今回は出血大サービス! 画像から自動的に目の位置を検出して全自動でエロ目にしてくれます!!

材料はこんなかんじ。

まず、目をスケベにするアルゴリズム

  1. 目の中心を境に左右の画素を少しずつ下から持ってくる。
  2. このとき、持って来る画素は目の中心に近いほど下からもってくる

という流れで山折り感を出せます。このとき、山折りの割合は目の幅1に対して折り目の高さ0.75ぐらいがいい感じです。

さて、目の検出ですが、巷でおなじみのOpenCV。一時期、顔を検出して笑い男をスタンプするプログラムが流行ったりしましたが、今回は顔ではなく両目を検出して上のアルゴリズムを適用しなければなりません。

顔についてはOpenCVにくっついてくるcascadeで簡単ポンですが、目のcascadeは探すのに苦労しました。
結局、urtho.netから頂いたXMLを使って処理しています。

ただ、やはり目の検出は顔に比べて格段に難易度が上がるようで、この精度を上げるのに苦労しました。。。
今は二段階で検出しています。

  1. 顔を検出して、その画像をコピー
  2. コピーした顔画像に対して目の検出
  3. 出てきた矩形(2個以上ありうる。。。)から横に並んでいる組み合わせ、且つ領域が被っていない(衝突していない)組み合わせを取り出す

という泥臭い作業になったわけですが・・・ おかげで結構精度は上がっていると思います。ただ、やはり目の小さい人(ブッシュ大統領とか)や、ちょっと横向きな顔などは検出に失敗することがあります。また、顔が二つ以上ある場合も失敗します。

Pythonはこの度初めて本格的に触ったのですが、結構書きやすいですね。安定してるし。PythonいいよPython

さてさて年末の貴重な時間を費やして上記のような自由研究を行った結果、出力したものをいくつかご紹介しておきましょう。

まずは元祖、夏目漱石、野口英雄。

続いて芸能人・アナウンサー



高島アナとか、かなりブサイクな感じに仕上がっています。。。

ギークだってお構いなし。

日本の首相もこのぐらいエロかったらよかったのに。

極めつけはこの人。

この人は自然すぎて怖いですね。


うーん、もう少し早くできていれば2007年ジェネレータ・オブ・ザ・イヤーにノミネートしたのに。
今年もやってくれないかなぁ。
ていうか、人の顔、こんなに好き放題にしたら誰かから怒られるかも。

それにしても先月ぐらいから、erogeekなネタが満載ですね。
2008年もみんながエロエロできますよーに。