2013-01-22[n年前へ]
■CAPTCHA復元で眺める「単純明快で最適解になっている世界の原理」
インターネットの中を広告・宣伝のためのロボットが走り回るようになってからずいぶん経ちました。ロボットから人間を識別するために(ロボットには読めない)CAPTCHAが作られて、けれど、そんなCAPTCHAに人間も悩まされる時代です。
MintEyeと呼ばれるCAPTCHAは、スライダーで決められたパラメータを使って変形させた画像を、そのスライダーを動かすことで「普通の画像」に戻すことができた間だけ「あなたは人間だ!」と判断するシステムです。
そんなMintEye CAPTCHAを破るのは簡単だ、ほんの数行(実際のところ2行足らず)のPythonコードを書けばいい…という記事”Breaking the MintEye image CAPTCHA in 23 lines of Python”を面白く読みました。内容を簡単に書くと、「エッジ(画像の微分値)の総和が最小になる条件=普通の画像に戻った条件」だ、という具合です。
直交座標を手書きで描くと、空間中を最短距離で結んでいる直線群が描かれます。長方形に張られたゴム紐が形作るような、そんな世界を最短・最適に結んでいる座標軸をかき乱したなら、座標軸に沿って描かれる画像(線分)は(大雑把に平均的に眺めてみれば)必ず長くなるのでしょう。
「線分=エッジ(微分)の総和を最小化し、(攪拌された状態から)元の画像に戻す」という数行のコードは、単純明快で美しい!と思います。