燐字表示機構開発ログ

1. まずは表示から

いちいち切り分けるのとかめんどいので、巨大なファイルとして読み込んでおいて、それをcanvasで切り出す方針でやってみよう。少しでもサイズを節約するために余白を削って5000x3600にする。

まず、1枚目の原稿用紙。表の4頂点に位置する4字の座標を取って、あとはこれを最小二乗法に突っ込んでアフィン変換とすれば良い。

実験をすると

      y1,   y2      s1 s2
我:  159,  245 --->  0, 0
位: 4658,  254 ---> 19, 0
硬: 4645, 3290 ---> 19, 9
形:  150, 3281 --->  0, 9

である。うまいパラメータt10, t11, t12, t20, t21, t22を持ってきて、

となるようにしてやれば良い。ただしs0たちは全部1である。

Y ≒ TSで最小二乗法をやるのでYST=TSSTを解けばよく、T=YST(SST)-1なのでTは

[[ 160.        ,  236.68421053,   -1.22222222],
 [ 245.        ,    0.47368421,  337.33333333]]

なるほど。実際にやってみると上手くいったのでやったぜ。

さて、二枚目の原稿用紙も同様にやっていこう。実験をすると

      y1,   y2      s1 s2
牌:  158,  210 --->  0,10
唯:  155, 1222 --->  0,13
別: 4654, 1220 ---> 19,13
綿: 4655,  208 ---> 19,10

なのでTは

[[  1.64166667e+02,   2.36736842e+02,  -6.66666667e-01],
 [ -3.16333333e+03,  -1.05263158e-01,   3.37333333e+02]]

だそうだ。

2. 使い物になるように

ということで、1枚目と2枚目が表示できるようになったので、燐字の漢字転写を入れたら表示してくれるような物を作るかね

あ、その前に、枠線付けるか選べるようにしておこう。

選べるようにした。後は組むのみ。

できた。




3. 分割して保存

せっかく線形代数の御加護も得たのだし、それぞれの画像に分割して保存していかねば。

とはいえ、ローカルへの保存だけはJavaScriptでは書きづらいからなぁ。Pythonはよく扱い方を知らんし、とりあえず手で280枚ぐらいを保存していくしかないか。

どうにかする方法もあったんだろうが、手で保存した。

4. 誤り

「文」の欄に「律」が入っていたので抹消。