2010年12月13日月曜日

文字顔カメラ(4) 画像文字変換

簡単に文字変換部分の説明です。

画像を文字に変換するコア部分は、まず扱いに慣れていた Windows アプリ(VC++)でテスト版を作りました。表示の実験だけでなく、本アプリで使っている文字データベースの bin ファイル作成もそれでやっています。データベースは、文字の文字コード、明るさ、形状の情報を含んだシンプルなリストです。

しかし、VC++ では順調だったものが Android 上では遅すぎて話にならず、色々と最適化が必要でした。そうやってできたデータベースを基に、撮影した画像を細かく刻んで一番評価値の高い文字を選びます。

が、

この後、少ない文字数でまともな出力を得るための試行錯誤が延々続きました。

文字で表現できる色の範囲が一番問題で、画像が 0~100% の黒さを持っているとすると、文字で表せる黒さは「覇」とか「離」のような黒っぽい文字でも、せいぜい 50% くらいです。そのため画像の色域を変換したり、簡易的なγ補正をかけたりして、諸々調整した結果が今の状態です。

うまく撮影するにはコツがいる、マニア向けのカメラみたいになってしまいましたが、ゲーム感覚で楽しんでいただければと思います。

2010年12月6日月曜日

文字顔カメラ(3) 公開二日目

公開から24時間以上たってようやく更新されました。
ダウンロード数は 400 以上で、予想外に多くて嬉しかったです。ありがとうございます。

勢いで有償版も公開したところ、新着アプリ掲載中に早速数件購入していただけました。購入してくださった方の登録名や地域の情報まで見ることができて、これで大丈夫なのかとちょっと驚きました。

そのうちどこかの Web などで、このアプリで撮影した文字顔が掲載されているのを見かけられたら面白いと思っています。まずは宣伝用の作戦を考えています。

2010年12月4日土曜日

文字顔カメラ(2) 公開初日

諸々手続きを済ませ、ようやくフリー版を公開しました。

…が、考えていたよりずっと厳しい結果でした。公開後、ものの5分でエラーレポートがあがってきて焦りました。内容はありがちな ArrayIndexOutOfBoundsException だそうで、レポート自体はありがたいのですが、情報不足でいまだ原因がわからず悩んでいます。

また、公開から12時間以上経過しましたが、いまだにダウンロード数は 0 のままです。あちこちで書かれている情報を見ると、Android market のダウンロード数は更新頻度が低かったり遅れたりするようです。

と言うわけで、現在はダウンロード数が 0 のままエラーレポートだけ増えていくという最低な状況で泣きそうです。

2010年12月3日金曜日

文字顔カメラ(1) 初アプリ

Android アプリ初挑戦です。撮影画像から顔を検出して文字で表示する妙なカメラ "文字顔カメラ" を作ってみました。


撮影後、このような表示画面に切り替わります。


文字数や明るさを調整し、顔をタッチすると文字で表示されます。離れた位置から見た方がわかりやすいですね。
撮影時になるべくコントラストのはっきりした環境で撮ることと、メニューで明るめに調整するのがコツです。文字数は、自分の Xperia でメールに貼り付ける際に改行せず表示できた 20x20 文字をデフォルトにしていますが、16~30 の範囲で調整が可能です。

ようやく公開の目処がたち、有償版(文字列の保存とコピー可)、フリー版を公開予定です。
よろしければフリー版だけでも遊んでみてください。

以下は撮影したテキストのサンプルです。表示は等幅フォントが必要になります。


24x24
ヽヾ八駅睡侃八ヽ        ヽ〃少已溢匪斃鰯
丶ヾ刃據鏑功うヽ        ヾゾげ沃旺智榧檣
丶〆功鏑榧已うヽ  丶   丶ヽ〃八か沂況湍駅槧
へ沈冥檣匪沃ジヽ丶 丶 丶  ヽッう乂次刃功旺漲
乂淦煽檣漲炎ジ冫ヽ     丶ヽゞゾう乂の乃已旺
炎即槧離渣かシヾヽヽ    ヽヾ〃ゾツてか乃已湍
沈頑競曩漲のゾッ〃冫ヽ丶 ヾ八災次かげか沂功啖漲
侃頑董曩噬丸か刃右乃〃ヾへか湍即吻妨湍思即頑砦匪
把砦鏑醜磐砦即況啖抬巛〃八妨槧殘功況押煽離醜睡匪
智榧競艦遭鏑匪押離撫功ッ火頑殘洗乃煽離睡遭榧湍妨
駅競醒畳桓功丸父況形災ヾ火押抬げ彳次功淦形災か已
秦鏑離畳抬乂ズげ已のミゞズ侃功少乂の沂巛乂てげ右
匪檣醜層桁ゾヾヽ冫ヾッ冫て沃炎ゾヾヽ丶ヽッ八炎啖
煽醜畳層鉱ズッヽヽヾへヾズ乃災シヾヽヽヾシ夕已溢
斃鰯曩層匪乂へヽヽへゞヽて沂炎ミッ冫冫〃て沂妨殘
畳曩離壘磐次ッヾヾ〃ッヾズ沈已てゾ〃〃彳の況即眉
畳曩曩層槫氏うゞッ八ッ冫災近況火ゾゾミげ沈勁催睡
嚶畳畳覇鵬冥次〆ツズの乃殘鏑煽炎ッツ火沂淦冥榧檣
顧嚶壘覇覇眉功炎うヾう智曩畳榧丸ズげ炎已旺漲榧離
層層嚶覇覇董侃已災ジッ沂智頑湍況洗近沾功湍智眉鰯
層覇塵鵬覇畳抬沈右淦亦刃勁駅噬眉桓已刃功旺駅槧醜
層層畳層櫑櫑頑沈災て八少沈思殘把已沃刃況押撫睡畳
壘鵬壘覇櫑欟醜吻刃八火沾湍即押妨淦近況湍催斃離壘
塵覇覇櫑櫑欟櫑醜把巛ズズ災沈況侃抬妨湍砦競離畳層

20x20
丶ゞ近董抬う丶      ヽッ夕形智榧檣
丶ジ吻董氏彳ヽ      ヾミの右思秦醒
冫它催磐功ミ丶丶丶   ヽへ〆夕丸況把砦
火勁競榧丸ツヾ丶  丶 丶冫ツズげ巛已奕
巛駅醒撫災シヾヽ丶  丶ヽッゾミ火次沃旺
右撫離榧次ツゾゾヾ丶丶〃災乃炎災巛右啖冥
奕撫醜磐近亦玩淦げゞツ洗駅押啖把駅撫榧煽
智撫鰯醜鏑頑吻殘啖ツ少催秦近冥鏑睡畳磐智
駅競曩磐旺托已冥沾ッ夕智兵彳沃妬押淦乃右
匪斃畳匪少火次沈てゞ父妨乃火夕沂炎乂火沾
撫離顧匪ミ冫ヽ冫ゞ冫乂沃ズ冫ヽヽヾツの淦
榧曩壘鏑父ッヽヽッヽ乂丸火冫ヽヾゞ火沾渣
離醜畳曩次ゞヽ冫ッヽ火沃夕シへッミ次妨噬
畳曩顧塵氏ツ冫〃ジヾか功丸ツシ彳げ近冥鏑
嚶畳層覇漲の彳ジ夕か智眉吻シツ父沈湍撫醒
顧層覇櫑斃近炎〃〃湍曩槫奕少か丸形溢撫離
層層層櫑醜啖沾次ツか吻即抬湍洗沾形押撫鰯
覇層顧櫑嚶思刃兵沃沃吻匪榧渣沈刃洗漲槧曩
層顧層櫑欟鏑近父ミの近吻思洗右近湍撫醒顧
顧覇櫑櫑欟櫑槧右父父沂近啖抬妨思匪董畳層

20x20
奕沾壬父它次ツ  丶ヽ丶丶丶ッう〃八侃已
思抬災巛うミ丶     丶ヾ〃て〆沂拊乃
桓噬洗火ミ丶       丶ヽて乃油噬炎
沈匪進彳ヽ        丶へ火沂油煽眉
火漲啖ヾ         丶ゞ乂亦們砦鰯
米洗任冫        ヽ〃て災抬桓殘斃
拊洗冥彳丶     丶〃丸抬拊頑匪匪桓漲
抬功漲它巛てシッヽヾげ押噬匪殘噬匪押油抬
米夕奕吻拌吻桓侃乂げ思冥押狂沂們沈げ拌桓
沈の兵進近抬漲兵小冫已狂少ゾかズヽ彳吻漲
已炎火押災〆〃〃ヽ丶父彳丶ヽ丶丶ヾの殘吻
頑洗沈殘少丶ヽ丶ヽ丶火〆丶 丶へ八右即拊
頑況漲鏑功丶丶丶ヾ丶ミげミ丶ヽ〃少狂油已
醜桓顧壘煽彳冫ヾゞ丶シズ丸冫ヾシ夕任洗巛
櫑嬲嬲嚶聞乃ッ冫ミシ炎押漲ツヽゾ巛狂沈右
櫑櫑櫑嬲冥冫〃ッヾて啖拌て冫ゾう沈拌巛托
櫑櫑櫑睡ヾ 〃ゾミ〆乂丸它已功乂近拌丸〃
欟櫑櫑乃  ヽミ丸次少少乃かてて洗洗彳 
欟欟曩ヽ   冫彳父哇洗已巛夕か奕丸丶 
欟櫑奕     ツ乂彳ミゾズ父啖啖ミ 〃

30x30
即托右啖功げの拌か少ヽ   ヾ冫丶丶丶丶丶ゞうジ〃へ父拊思沈
洗拌刃〆ゾ乃米ジのヾ     丶丶丶ヽヽヾ〃う〆ッズ炎功任次
油駅抬它沂火ゾ八ゞ          丶ヾへジ乂火乂壬奕狂の
押憤殘托少てズ〃丶           丶ヽ〃父次右思漲押彳
洗駅駅噬扛ジ〃丶            丶ヽシ乂次已抬砦斃沈
夕奕憤即次シ丶             ヽゞツげ巛洗冥噬斃睡
八沾眉思少丶              ヽゞシ夕丸洗漲殘斃鰯
大乂即拌ズ丶              ヽ冫〃夕功抬冥即檸董
侃乃侃任乃ヽ丶           丶〃うげ穴乃拊即殘桓撫鏑
啖啖狂油拌冫丶          ヾて沈拊侃押頑駅砦砦頑殘頑
思狂拌們冥ゾへヾ丶 丶丶   丶彳功押殘油拌油殘煽煽殘押即洗
冥炎任抬噬巛托丸大ズツシヾヽゞか油桓砦煽檸憤噬匪噬桓拊拊進抬
狂て次洗殘奕拊洗抬押油已父シ災抬押冥頑油殘抬啖駅奕災次托押冥
刃夕か狂們抬功思噬鏑煽押扛ゾげ拊漲漲思夕冫ッ任托うゞて近漲冥
托乃か它右漲沈抬它抬已災か丶ヾ次狂巛〆シ〆夕少ゞ丶ヽ乂油駅押
狂次少炎げ殘它て乂へゞツヽ丶丶火夕〃丶ヽヾヽ丶 丶へ炎漲桓思
拌功拌彳沈駅乃ヽッツ冫ヾ丶丶丶ズ少ツ丶  丶丶ヽへて近駅吻抬
噬頑乃已漲噬米丶丶 丶丶ヽ丶丶ズて八ヽ  丶ヾゾての拌即抬拊
冥奕功進即斃油ヾ丶 丶丶ヾ丶丶ミ〆災ズ丶丶丶冫ツズ巛侃進拌已
檸拌油檸董聞眉彳冫ヾヽヽへヽ ッ乂て父ゞ丶ヽ冫ツ乂丸拌抬功巛
顧憤煽壘顧顧輔扛彳〃ヽヾへヽ へ〆父刃乃ヽヾ冫ジ少乃狂啖乃乃
櫑嚶顧壘壘嚶壘殘乂〃冫冫〃〃ヽう亦思桓啖冫ヽ冫ジ災刃洗任夕狂
櫑櫑櫑櫑嬲壘顧漲〆〃へへへ夕它拊駅噬抬父ヽヽゞ彳巛已拌扛少進
櫑櫑櫑櫑櫑壘煽ヽヽシ〃〃ヽ冫シ刃捉炎うゞ冫ツ八て刃洗拌丸沈沈
櫑櫑櫑櫑嬲檣シ 丶ッツシッシ〃ツミか次乃功任米ズ沈侃洗炎沈ヾ
櫑櫑櫑櫑壘沈   ヽゾゾ少托功托功功沃丸巛か火て已抬洗乃シ 
欟櫑櫑櫑離冫    ゞ彳巛少てツて乂它刃大乂〆父近奕托八  
欟欟櫑覇洗     丶シ八ジげ任駅押思托刃巛火の洗油乃丶  
欟櫑櫑嚶彳      丶う八げ沈夕彳ミ八ズて父沈冥狂ジ   
欟櫑櫑匪丶       冫乂てツ〃ミシ彳少乂它押托右ヽ 丶少