令和ドローの裏側2、画像内オブジェクト領域の頂点をGUIで求める
謎シリーズ第一回に続き第2回目です。
令和ドローリリースから度々アップデートをかけてきたのですが、今回のアップデートが多分最後のアップデートです。あんまり使われてないからねorz
第一回でも述べられているように、平成ドロー、令和ドローは超アナログ手法で画像素材を作っています。
画像素材を作る工程はだいたいこんな感じです。
- 動画を用意する
- ちょっと動画を加工する
- 動画内で削除したい画像領域の頂点を求める
- 3で求めた領域の削除
そして、3, 4でpoints.json
、cropped/i001.png
と言った画像素材を得ています。
実際には 3, 4 を入れ替えて、macOS の Preview で額内の白い領域を削除して、それを覆うように頂点を求めています。
前回は 4 の領域の自動削除を紹介しました。
ただ、(そこで使ったテクニックの有用性はともかく)得られた画像素材がいまいちだったので結局アナログに Preview で削除を行ったのが前のアップデートでした。
今回アップデートしたのは 3 の部分です。
アップデート前、頂点を求めるには
- 画像を表示
- 目視しながら4隅をクリックしていく
- 4回クリックしたら点を記録して次の画像へ
という残念な方法で頂点を求めていました。。。
今回は以下のようなGUIツールを作って頂点を求めました。
4つの点とそれを結ぶ線があり、それらを削除したい画像領域に合わせて配置することで、頂点を求めることができます。
tkinterというpythonのbuilt-inライブラリを使用しています。インストールが必要なのはpillowくらい。
4つの点はマウスでD&D可能で、点を結ぶ線は点に合わせて移動します。
sキーを押すとその画像はスキップし、rを押すと頂点を保存します。
処理の流れはこんな感じ。
次のフレームへ。
ポイントを移動します。
これによって、
- 目視クリックではなく、実際のポイントを視覚的に配置できる
- やり直しが効く
と言ったことが可能になります。アナログなことに変わりはありませんが、この補助があるだけでめちゃめちゃ楽。そして精度もよくなります。
前と今回のアップデートを通して、どれくらい成長したかを比較。
画像枚数が増えたので、違いがいまいちわかりにくいですが、ドローシリーズのプロから見ると圧倒的に精度が上がっている(プルプルが抑えられている)と言えます。
その他応用
点は幾つでも増やせるので、もっと複雑な図形の領域選択や、逆に矩形にも応用できると思います。
そう言った汎用性の高いツールにできるだろうと思って、作りました。思ったより工数もかかりませんでした。
こう言った画像領域の選択および、その領域の頂点を求めるというのは、機械学習界隈でよく使われていて、その辺で使えないかなーという感じです。
もしかしたらもっといいツールがありませんが。。
あとは、ポイントがD&Dしてる間に落ちちゃったり、ガチで使うなら1pxくらいずれていたりするので、細かいチューニングが必要そうです。
戻るボタンとかもあると楽ですね。フレームを前後してポイントの遷移チェックとか。
まとめとしては、tkinterの勉強やこういうツール作るのも含めて、令和ドロー作るの楽しかった!!
本当はもっと使ってもらいたかったですけどね。これからちょくちょく使われるといいなあ。