• 締切済み

OpenCVで線の補完の方法について(画像処理)

下記に載せた画像の様な画像中の黒い線(上側)と黒い線(下側)の隙間を線で補完したいのですが、プログラムの書き方が分からなくて困っています。 もしわかる方がいらっしゃれば是非教えてください。 (入力画像は黒の線のみが書かれた画像で、みどりの線のように隙間を補完したいです。補完する線はなめらかな線でも直線でも構いません。また、補完する線の色は何色でも構いません。黒の線(上側)と黒の線(下側)は同一直線上にはなく、かつ平行でもないとしてください。) 画像中の赤のコメントはプログラムの流れに関する補足です。 OpenCV2.4.6,VisualC++2010を用いています。入力画像の形式は24bitで白黒のBMP画像です。 処理は出来れば早い方が良いのですが、時間がかかっても大丈夫です。 プログラムの流れは以下の通りです。 (1)線の太さ(幅)を求める(最頻値(statistics mode)を使う?)←実際の入力画像は印刷された線画に手書きの線を加えた紙をスキャンした画像なので、線の太さが2通りあり、書かれている数が多い線の方の線と線の隙間を保管したいので。 (2)もし線の太さが(1)で求めた線の太さであり、かつ線と線の隙間が10ピクセル以内であれば線を補完する(画像中のaとbの座標を求めてcvLineを使う?)←10ピクセルは目安です。 (3)線と線の隙間が補完された後の画像を表示する(cvShowImageを使う) 説明が下手で申し訳ないのですが、もしわかる方がいらっしゃれば教えてください。 私自身、プログラムは大学の授業レベル、OpenCVは使い始めて数ヶ月なので詳しくないです。 なので、言葉ではなんとなく分かっていても実際にプログラムが組めない状態です。 (1)~(2)のプログラムの一部しか分からなくてもヒントになるので一部でも分かる方がいらっしゃれば是非教えてください。 よろしくお願いします。

みんなの回答

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

(1) 以前に、「線がどこにあるのかを見つける」という工程が抜けています。 それさえわかれば後は何とでもなりそうですが、この部分が難しいと思います。 手書きの線ということは自由曲線だと思いますが、大学の授業レベルのプログラムでは手に余るでしょう。 とは言え、画像処理の教科書等を読めばなんとかなると思います。 それでも検討がつかなければ質問してください。 (念のためですが、「代わりにやってください」というのは質問ではありません) ちなみに画像処理とは別に、「プログラムの基礎はある程度わかったけど、書けるようになるにはどうすればいいか」という質問に対しては、 人の書いたコードを良く読むことです。(今の場合なら OpenCV のサンプルコードなど) ちょうど英作文の前に英文読解を勉強するようにです。 ただ画像処理の場合は、アプリケーションが用途ごとの一品物なので、サンプルになるものを見つけるのが難しいかもしれませんが…。

関連するQ&A