読者です 読者をやめる 読者になる 読者になる

NYAA LAB

グループとしてはNYAAJ(@_nyaaj), 中の人はこいけ(@koike_nano)です。

ゆゆ式Advent Calendar 2016 18日目:nyaa式4コマ切り出しプログラムを作った

こちらは

こちらはゆゆ式Advent Calendar 2016 18日目の記事です。

www.adventar.org

 

ゆゆ式

ついにスペシャルエピソードが発売されますね。新しいお話がアニメーションになるというのはとても嬉しいことです。一人のファンとしてとても楽しみです。

何かしらの機会で、できれば7, 8巻のなんとも言えない独特なゆゆ式の流れやセリフの言い回しをアニメで見てみたいものです。

 

このおめでたい発表の直後にAdvent Calendearというわけで、初参加させていただきます。

今日のテーマ

今日のテーマは4コマ切り出しプログラムです。

私がゆゆ式Advent Calendarを知ったきっかけであり、とても感動したテーマであり、参加しようとしたきっかけです。

 

過去のエントリーはこちらです。

元祖(2014年)

non117.hatenablog.com

 

2015年

esuji5.hateblo.jp

 

これに非常に感銘を受けまして、今回作ってみようかなというわけです。

前置き

書籍を自炊する気にはとてもなれなかったので、Kindle版をiPadで表示して、プログラムと記事作成用にスクリーンショットを何枚か撮影し、それを使いました。

 

基本的にC++言語で作成し、ライブラリとしてOpenCVを使用しました。

仕組み

オリジナル方式

まずはじめに、元祖2014年投稿方式を再現してみました。

こんな感じです。

f:id:nyaaj:20161217215348p:plain

 

このような感じで、基本的な構成のコマは分割することが可能となりました。

 

ところが

ところがこちらの方式には限界があり、以下の扉絵のような特殊なコマでは、枠線が正しく認識されず、コマをぶった切ったり、違う領域を切り出すことがあります。

f:id:nyaaj:20161217220351p:plain

また、特殊な吹き出しについも枠外に飛び出した部分がカットされる問題があります。

 

f:id:nyaaj:20161217220828p:plain   f:id:nyaaj:20161217221215p:plain

 

これらの対策として、従来とは異なるアプローチを導入しようという感じです。

nyaa式コマ切り出し法

処理の手順は以下の通りです。

1.ラベリングにより、ページ全体に含まれる領域を検出します。領域を認識するために、着色を行っています。実際は2値画像です。

f:id:nyaaj:20161217222853p:plain

 

2.検出した領域情報の中で一番面積の大きいもの(最外殻)を選択し、白黒反転します(2値画像のため)

f:id:nyaaj:20161217223523p:plain

 

3. 2で作成した画像を1と同様にラベリングを行い、コマごとに切り抜くための座標を保存します。(検出領域を着色しています)

f:id:nyaaj:20161217224451p:plain

 

4. 保存した座標をコマの位置関係が一致するようにソートを行います。

5. ソートを行った座標情報を元に、元画像をマスクして、個別のファイルとして出力します。

f:id:nyaaj:20161217225320p:plain

 

このような感じです。大抵のコマに対して、いい感じに処理してくれます。

また、ソートの手順を変更することで、4コマだけでなく、横に進むような形式も扱うことができます。

 

実践

さて、ここで従来方式で問題となった扉絵を試してみます。

扉絵に対して処理を行うと以下のようになります。

f:id:nyaaj:20161217231539p:plain

いい感じですね。正しく出力されました。

 

また、特殊な吹き出しのあるコマについては以下のようになります。

f:id:nyaaj:20161217231048p:plain

ソートが狂っちゃいましたが、切り抜きは正しくできていることが確認できます。

ソートについては今後の課題ですね。

 

総評

ゆゆ式は他作品と比べて、非常にコマが綺麗に整っているため、基本的なコマ構成、特殊吹き出し、扉絵に対応させれば1冊の9割はカバーできると思います。

 

連載分を完璧にカバーできたため、扉絵ごとに一つの括りにすれば、全巻通して季節順に並び替えたりすることが可能になるかと思います。ホームボタンとロックボタンが壊れそうなので実践するつもりはないですが(笑)

 

タブレットKindleゆゆ式を読むのは余裕なのですが、スマホだとズームが大変なので、コマごとにして、スクロールで読めるようになったら便利ですね。実際にスマホKindleに実装されないかな。