4

こんにちは、下の画像のセグメンテーションに問題があります。認識する必要があるのは、色付きの文字です。シャープニング、ウィーナーブレ除去、ウィーナースムージングを使用しています。その後、fuzzy-c を使用して画像をセグメント化し、クラスタリング (3 クラス) を意味します。しかし、文字 E の場合、私が得る最良の方法は、シャープニング、ブレ除去、スムージングを使用せず、しきい値処理された fcm セグメンテーションのみを使用することです。ただし、これよりも良い結果が得られるはずです。これらの 2 つの部分を全体として組み合わせることができます (上部の白い部分だけでなく、残りの半分の黒い部分でもあります)。

この問題をより堅牢に解決し、他の画像、たとえば写真の 5 と連携するにはどうすればよいでしょうか? 5 の結果は、fcm クラスタリングに加えて、シャープ化、ブレ除去、およびスムージングを使用したものです。どうすればもっと接続できるようになりますか?

私が得ることができる助けを本当に感謝します、ああ、私はこれをmatlabでやっています...そこから何か助けを得ることができてうれしいです、ありがとう!

これは文字 E です。全体として 1 つの要素を取得したい

2 番目の写真は 5 番です。行間にスペースを入れずに、よりスムーズに接続する必要があります。

編集:

私の次のコードは次のとおりです。elseif (nargin==1) sw=0; elseif (sw~=0 && sw~=1) error('sw は 0 または 1 でなければなりません'); 終わり

data=reshape(IM,[],1);
[center,member]=fcm(data,3);
[center,cidx]=sort(center);
member=member';
member=member(:,cidx);
[maxmember,label]=max(member,[],2);
if sw==0
    level=(max(data(label==1))+min(data(label==2)))/2;
else
    level=(max(data(label==2))+min(data(label==3)))/2;
end
bw=im2bw(IM,level);

function img=wienerDeblur(im)
ImgNoisyBlurry = im2double(im);
PSF = fspecial('laplacian'); %LEN, THETA add parameters for 'motion'

noise_var = 0.0001; %0.0001
estimated_nsr = noise_var / var(ImgNoisyBlurry(:));
wnr3 = deconvwnr(ImgNoisyBlurry, PSF, estimated_nsr);
img = wnr3;

end

H = fspecial('unsharp');
im = imfilter(im,H,'replicate');
im = wienerDeblur(im);
im = wienerSmoothing(im);

以上がすべてのコードで、文字 E には fcmthres のみを使用しています。形態学的画像処理(膨張、侵食)について読んだので、おそらくうまくいくかもしれません。

画像のコントラストとノイズ除去のためのより良い技術はありますか?

4

2 に答える 2

1

hチャネルでキャニーエッジ検出を試すことができます(すべてのチャネルを試して比較します)(rgb2hsv)、続いて形態学的操作を行って曲線を閉じ、数字と文字の曲線を塗りつぶします(埋めます)。私は現在matlabにアクセスできませんが、同様の問題でこれに成功しています。

http://www.mathworks.se/help/techdoc/ref/rgb2hsv.html http://www.mathworks.se/help/toolbox/images/ref/edge.html http://www.mathworks.se/ help / toolbox / images / ref / imfill.html

于 2012-07-31T10:01:16.597 に答える
0

白黒にした後、特異値分解(http://en.wikipedia.org/wiki/Singular_value_decomposition)を使用して、おそらく特異値を比較することができます。

ノイズ除去のために、小さい特異値を0に設定します。

于 2013-01-14T17:00:03.167 に答える