ニームの書(https://halipe.co/

まだ全然データ足りないんだけど、色んな人にボコボコにしてもらうほうがモチベーション保てると思って見切り発車しちゃった。地図足りてないんで日々追加してます。

SS撮る(1600ピクセル四方くらい)→Firewirksでつなげてトリミング→色調補正バッチに食わせて出力→サーバに転送

なんてダルいんだ。色調補正バッチがうまいこと稼働してるので、地図張り合わせるのがすごくダルいくらいで済んでる、それはいいんだ。
今日の問題は色調補正バッチ。さくさく変換してくれるのはいいんだが、一枚あたり30秒かかる。ほっときゃいいとはいえ辛い。というか、あきらかに遅い箇所があって、さすがにバカなことやってる箇所だから直したい。

実験用にJupyterNotebook起動。

import os,sys,re
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
import matplotlib.pyplot as plt
import itertools as it
import time
%pylab inline --no-import-all

いつものやつ。余計なのも入ってるが気にしない。

img = Image.open(r"la-noscea_サスタシャ浸食洞.png")
im = np.array(img)

サスタシャの地図を一枚読み込む。
今回やろうとしとるのは、ゲーム内の画像そのまんまだと色調があまりにもくすんでいるので明るい感じに修正する、というもの。実際には前にやっていて(FF14の画像をバッチで画質処理+コピーライトの貼り付けしたい)、こんかいはそれのリファクタというかありえないコードになってるとこを直す話。

元のコード

30秒かかるのは流石にやばい。これ書いた当初は「画像の変換って時間かかるんだな~」とか牧歌的に思ってたが、PhotoShopがこんな速度でフィルタかけてたらAdobeは今頃地上から消えていたはずだ。
なにが問題かというとまあさすがに明白で、ピクセル一個ずつをループで丁寧に変換して歩いてるところ。当時は書き方わかんなかったし、改善よりも歩を進める事を優先したので斯様な惨状を放置する運びに。

なんでじゃあ改善するかというと、リリースしてガンガン地図増やすぞという頃合いになると、所要時間がだんだん冗談で済まされなくなってくるから。
いま作り終わってる地図が33枚あるんだけど、こいつの処理完了に15分かかる。ちょっとこれは引く。

修正後

あれこれすっ飛ばして結論。行列への関数適用をずばっとやってくれる関数を見つけたので、何となくこうですか的な具合で書いてみる。
0.27秒。意味がわからん速度が出た。いやわかるわ。30秒が意味分かんないわ。
ということであっけなく変換バッチの改善作業が終わった。

まったく苦労してないので、今回もまたnumpyとからへんが身につくほどの作業量にならずじまい。
画像の変換は触り始めると楽しいので、継続的にやってこうかなという気にはなってる。

こんかいつかったnotebook(gist)
https://gist.github.com/mezquita/0d4d99e2d66c9397949966840853779e

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です