Structure-based ASCII Art
SIGGRAPH2010の論文、Structure-based ASCII Artを実装しました。
この手法は、画像の濃淡を利用したTone-basedにアスキーアートを生成する手法に対して、画像の形を利用してアスキーアートを生成するというものです。
手法の概要は以下のようでした。
3,4,5のループにおいて、画像と文字のマッチングの具合と、画像を歪ませたことによる変化の二つの要素に基づいて計算された指標値を最小化する最適化問題に帰着します。元の論文では焼き鈍し法で最小化を試みていました。
つまり、入力そのままの画像からアスキーアートを生成するのでは不自然な場合に、入力画像を変化させることでアスキーアートとしてより自然なものにする、という手法でした。
今回私の実装も、基本的には論文のとおりに進めましたが、論文自体にいくつか不明瞭な点があったり、解釈がおかしいのか式がおかしいのかよくわからん部分があったり、入力データ用意するのが予想以上に面倒だったりと、結構大変でした。しかし、いくつかのインプットで試したところ、画像を大きくは歪ませることなく、ほどよくより良いアスキーアートが生成されたような気がするので、まあいいでしょう。
以下が結果です。
元画像。
結果。
左が単純に入力からアスキーアートを生成したもの。
右が何回か反復して改善された(?)結果。
髪の毛の右側や、襟などはちょっと良くなってる。
ただ、元論文だともっと良くなってるので、これはどちらかというアルゴリズムのせいではなく、フォントの特徴ベクトル生成があんまりうまくいかなったからじゃないかなーと想像している。
まあ半角固定幅アスキー文字のみ、という条件にしてはそこそこ?