1ページのマンガの白黒画像が与えられたとき、
そのコマ割りを自動的に判別するプログラムを作れたらと考えています。
たとえば右上の図のような感じです。
マンガは、同じ大きさの四角が4つ並ぶ単純な4コママンガではなく、
この質問に示した図のように、コマごとの大きさが異なる、枠線がナナメになっている等、
ある程度、複雑なコマも含まれると思ってください。
そのとき、
[1] どんな方法でコマ割りが実現可能か(必ずしも成功率100%でなくてOKです。支援できればいいので)
[2] すでにそのような研究があるか(ゼロからコマ割りができるマンガ・ワープロの研究は未踏にあるようです)
[3] あなたの考えるところ、有望そうなテクニック(できれば簡単な理由つきで)
のいずれかを、教えていただければと思います。
また、[1]~[3]に関連する、[4] 良さそうな参考文献 もご紹介いただければうれしいです。
なお過去の回答がポイントゲッター的であると判断した場合、回答をオープンしないことがあります。
よろしくお願いいたします。
【0】以下のような課題設定をしたい。
(a) コマは原則としてコマの端を示す線分(以下、端線)で区切られる。ページの端も端線である。
(b) 端線の外は空白(コマ以外)の場合(例:コマ2の上)と、直接他のコマの場合(例:コマ2の下がコマ3)がある。
(c) 時に端線は分断される(例:コマ4、5)が、これは処理上では無視して可である。
(d) 端線の多くは水平ないし垂直であるが、そうとは限らない。
【3】コマ割とは、端線を過不足なく抽出することとして、次の処理方針をとる。
(1) 端線、すなわち線分の検出はハフ(Hough)変換[*]を用いるが、これは計算量が多いので、あらかじめ(2)(3)で(d)の水平・垂直線分を検出する。
(2) 黒画素の連続長さ(run)を水平、垂直に求め、長いものを端線とする。
(3) 検証で、端線とみなされる線の法線方向にrunをもとめ、白のみ(コマ2の上)、runがあるが、上下が不一致ゆえ区切りの端線とみなされる(コマ2と3の間)などを行う。
(4) 上記検出の端線を除いてハフ変換を行い、これを(3)と同様の手法で検証する。
【0】以下のような課題設定をしたい。
(a) コマは原則としてコマの端を示す線分(以下、端線)で区切られる。ページの端も端線である。
(b) 端線の外は空白(コマ以外)の場合(例:コマ2の上)と、直接他のコマの場合(例:コマ2の下がコマ3)がある。
(c) 時に端線は分断される(例:コマ4、5)が、これは処理上では無視して可である。
(d) 端線の多くは水平ないし垂直であるが、そうとは限らない。
【3】コマ割とは、端線を過不足なく抽出することとして、次の処理方針をとる。
(1) 端線、すなわち線分の検出はハフ(Hough)変換[*]を用いるが、これは計算量が多いので、あらかじめ(2)(3)で(d)の水平・垂直線分を検出する。
(2) 黒画素の連続長さ(run)を水平、垂直に求め、長いものを端線とする。
(3) 検証で、端線とみなされる線の法線方向にrunをもとめ、白のみ(コマ2の上)、runがあるが、上下が不一致ゆえ区切りの端線とみなされる(コマ2と3の間)などを行う。
(4) 上記検出の端線を除いてハフ変換を行い、これを(3)と同様の手法で検証する。
sibazyun様、完璧な回答、ありがとうございます。
参考文献までご紹介いただき、頭が下がるばかりです。
ポイントはずまさせていただきます。
自分的にはもう大満足ですが、他の方の意見も参考にしたいので、質問自体は継続させてください。
下のリンクの「輪郭処理(cvFindContours)を使ったラベリング処理」の辺りのサンプル
絵的に、参考になりそうな気がするんですが、どうですか?
http://imagingsolution.blog107.fc2.com/blog-date-201003.html
見当違いだったらごめんなさい。
OpenCVは、C言語のライブラリですね。本いろいろ出てます。
matane様、ありがとうございます!!
現実のマンガ画像は、スキャナでスキャンして取り込むことになりますので、
かなり汚い画像となることが予測されるため、
おそらくは提案いただいた手法だけではなく、前処理も必要になると思いますが、参考にさせていただきます。
sibazyun様の方法で完璧だと思いますが、私の考えた雑な方法。
(1)コマの個数については、カメラで読者の視点と視点の静止時間を計測して、1コマを見る平均的時間でコマ数を割り出す。
静止していた視点周辺をコマと見なし、sibazyun様記載の端線検出方法で、そのコマ周辺の端線で囲われた部分を切り出す。
(半自動化ですね。誰かに読んでもらう必要があります)
(2)上記の他に、漫画を顔認識にかけ、顔が検出された部分と端線で囲われた部分、検出されなかった部分と端線で囲われた部分を切り出す。
(3)Amazonのメカニカルタークみたいに、海外の何千人もの人にコマ分けをお願いする。
意外にプログラムを作るより安く済むかもしれません。
※なぜ、半自動化をおすすめするかというと、漫画のコマ割りは、今後10年経っても必要な技術ではありません。
電子化に伴い、今後はコマごとに作者がパソコンで書けばよいんです。
ということはコマ割り判別を必要とするのは、過去に書かれた漫画であり、過去に書かれた漫画をすべてコマ割りしてしまえば、
コマ割り自動化プログラムの役目は終わります。
そのため、困難な完全自動化プログラムを作る必要があるかどうかは良く考えられた方が良いかもしれません。
ey272様、ありがとうございます。
[1]のアイカメラが使えるとは思えないのですが、その代案として、各マスの中央付近をユーザにクリックしてもらう、というのは自分も考えました。
研究+趣味でやるので、失敗してもOKだと思ってます。ありがとうございます!!
sibazyun様、完璧な回答、ありがとうございます。
参考文献までご紹介いただき、頭が下がるばかりです。
ポイントはずまさせていただきます。
自分的にはもう大満足ですが、他の方の意見も参考にしたいので、質問自体は継続させてください。