漢字アンビグラムを遺伝的アルゴリズムで自動生成してみた
最近テレビでアンビグラムというものを知りました。
検索すればたくさん出てきますが(是非みて欲しい!)、要は逆さにしても読める文字画像です。
漢字のアンビグラムを自動生成できれば楽しいかなと思い、挑戦してみました!
とりあえず、結果から
「勝利」に見えるでしょうか?笑
反転すると・・・
「挑戦」の方は、はっきり読めますね。
手法
まあ、遊びなので遺伝的アルゴリズムでゴリ押しです。
遺伝子の優劣の評価方法ですが、
0.あらかじめ作りたい文字列の画像をそれぞれ生成しておく
(一方は180度反転)
1.各遺伝子に基づき0.の画像をそれぞれ変形
2.それらを重ねた時の誤差を評価
という感じです。
実装はPython3です。
いざ、実行!
「勝利」と「挑戦」でやってみます。
(僕が初めて見たアンビグラムと同じ)
1世代
まあ文字画像を変形して重ねたものなので、最初から文字らしさはあります。
10世代
ちょっとゴチャゴチャ感が減りました。
20世代
果たして良くなっているのか。。。?
30世代
うーん
40世代
30世代からすると「勝」の力の字がはっきりしています。
50世代目(とりあえず完成)
反転すると。。。
実行時間は大体15分ぐらいです。
感想
欲しい結果は得られました。が、やはり単純な手法なのでクオリティは手作りの物には及びません。
今後も少しづつ改良できればと思います。
この記事が気に入ったらサポートをしてみませんか?