合計操作について洗練された方法はありません。簡単に言えば、sum(edgedImage1,1)
はイメージ内の各列のすべての行の合計を計算します。これがプロットしたものです。実際には、各列のすべての行について、すべての非ゼロ値(つまり、白のピクセル)の合計を計算しています。プロットの横軸は、観測している行の合計を示しています。同様に、sum(edgedImage,2)
はイメージの各行のすべての列の合計を計算します。これがプロットしたものです。
テキストは横向きに表示されるため、sum(edgeImage,1)
は特に役に立ちません。非常に便利なのは、sum(edgedImage,2)
の操作です。イメージ内の空白の行の場合は、画像の各行の水平列の合計が非常に小さい値になりますが、イメージ内のテキストまたはストロークを含む行の場合は、合計が非常に大きくなります。私が話していることの良い例は、あなたのイメージの底に見えます。あなたが行600と700の間を調べると、それらの行の間に囲まれたテキストがたくさんあるので、あなたのプロットには巨大なスパイクがあります。
この結果を使用すると、イメージ内のテキストまたはストロークを含む領域が、ある閾値を超えるすべての行を見つけることになることがわかります。実行された合計操作からモードまたはピークを見つけることと組み合わせることで、テキストの各領域を非常に簡単にローカライズしたり切り離したりすることができます。
sum(edgedImage,2)
によって提供される曲線を滑らかにしたい場合は、テキストの塊の数を決定することができます。この信号を滑らかにすると、5行のテキストに対応する5つのモードがあることがはっきりとわかります。
あなたの説明は素晴らしく、本当に役立ちます。私がこれを複製できる場所からいくつかのコードリンクを参照することができれば、あなたの親切で上手いでしょう。 –
@ NaseerAhmed元の画像(描画した赤い四角形なし)を指定すると、私は書くことができるいくつかのサンプル結果を表示できます。 – rayryeng
私はオリジナルのImage.ActuallyオリジナルをアップロードしましたImageは入力画像に適用したsobelフィルターです。 –