2

これが元の画像です。

ここに画像の説明を入力

1) グレースケールに変更し、2) しきい値を適用します。

元の画像に見られるように、上記の 2 つの方法を適用した後もまだ存在する影がいくつかあります。

しかし、ほとんどの画像は2つの方法で完璧です。

ここに画像の説明を入力

テキストを抽出する必要があるため、ノイズを取り除く必要があります。私はほとんど作業を終えていますが、問題は、場合によっては黒い境界線があり、それを白い色に置き換えたかったことです.

そして、境界線だけを白くしたいと主張します

白い長方形を作成し、それらの長方形で境界線を塗りつぶすことを考えていますが、その方法がわかりません。

Matlabを使用してそれを達成するにはどうすればよいですか? 他の方法もありがたいです!

4

1 に答える 1

1

境界線だけが黒くなることが確実な場合は、すべての孤立した形状が認識可能な文字になるまで画像を単純にトリミングしてみませんか? の線に沿った何か

done = false;
ii = 1;
while (~done)

    % fill the outer border
    img(:,ii)       = 255;    img(ii,:)       = 255;
    img(:,end-ii+1) = 255;    img(end-ii+1,:) = 255;

    % (run your algorithms here. It positive match, done = true)

end

反復ごとにパターン認識を行う必要があるため、計算負荷が高くなる可能性がありますが、「一部のケース」でのみ発生することを示しました。

それ以外の場合は、おそらく侵食や間伐などの形態学的操作も使用できると思われます。ただし、これには、一致させたい文字を変更するという欠点があります。しかし、あなたが処理しなければならないすべての画像があなたが示したものと同じように見えたとしても、それで問題が生じるとは思えません.

直線を検出するいくつかの方法は、この質問に記載されています。すべての線を検出し、完全に水平/垂直で、エッジの 1 つにある線 (周囲にわずかな許容差がある) を削除できると思います。

于 2013-01-25T07:40:16.667 に答える