2016-08-18 27 views
1

画像の一部を直線の水平線で区切ります。イメージは私の目的のために最も無関係なテキストドキュメントです。文書のヘッダー部分は、通常、必要なすべてのもので、2つの直線の水平線で区切られています(線のスタイルは、1つの線ではわずかに異なりますが、もう1つは太い線でもう1つは太くなります)。ヘッダーセクション。ヘッダーセクションの長さは可変ですので、固定位置を設定することはできません。画像の直線を検出する

この部分の画像をどのように抽出するのですか?私はハフ変換やOpenCVやAccord.netのようなライブラリを使うようなことをいくつか見てきましたが、このすべては非常に簡単なことのために残酷に思えます。可能であれば、追加のライブラリを使用する必要はありません。

理想的には、イメージを入力したいと思います。それは、それが検出したまっすぐな水平線の位置を与えて、それを使ってイメージをトリミングする境界を設定します。誰かが私を正しい方向に向けることができますか?

+3

SO「そう単純なもののためにやり過ぎのように思える」:)あなたが行はあなただけ数えることができるよりも、(厳密に水平方向と垂直方向であることを保証できる場合にのみ、やや簡単ですライン/カラムごとに白/黒のピクセル比で表示)、それ以外の場合は単純です。 –

+0

幅はどれくらいの幅ですか?線が水平なので、幅を言うとき、高さXDを意味する – Neil

答えて

0

線の太さを知っていれば、画像内の各行の最初の10ピクセルを読み取ることができます。x < 10 and y < imageheight

boolチェック値でこの行を1ピクセルごとにtrueに設定し、行の色以外のピクセルを見つけた場合はfalseに設定してください。

次に、行をチェックするbool値がfalseの場合は0に設定され、真の場合は増分されます。

count > linethicknessが見つかった場合はループを解除して、その場所がyで、行の位置を知ることができます。

3

これはハフ変換でチップチックに行われます。

それはそれは単一回答ポストでは、おそらくあなたの質問の範囲を超えてどのように動作するかを説明するのは難しいですが、ハフ変換の作業実装はOpenCVのとAForgeのような多くのビジョンライブラリで見つけることができます(there is also a .NET version of aforge called AForge.NET

ハフ変換は、検出された線を出力し、それらを角度でフィルタリングすることを可能にします。 これは、水平線ではないすべての文字を除外することをかなり容易にするはずです。

以下のイメージは、ハフ変換で検出された行の例です。通常のイメージに戻しています。 (赤線としてオーバーレイ)

上のお願い

enter image description here

関連する問題