こんにちは、下の画像のセグメンテーションに問題があります。認識する必要があるのは、色付きの文字です。シャープニング、ウィーナーブレ除去、ウィーナースムージングを使用しています。その後、fuzzy-c を使用して画像をセグメント化し、クラスタリング (3 クラス) を意味します。しかし、文字 E の場合、私が得る最良の方法は、シャープニング、ブレ除去、スムージングを使用せず、しきい値処理された fcm セグメンテーションのみを使用することです。ただし、これよりも良い結果が得られるはずです。これらの 2 つの部分を全体として組み合わせることができます (上部の白い部分だけでなく、残りの半分の黒い部分でもあります)。
この問題をより堅牢に解決し、他の画像、たとえば写真の 5 と連携するにはどうすればよいでしょうか? 5 の結果は、fcm クラスタリングに加えて、シャープ化、ブレ除去、およびスムージングを使用したものです。どうすればもっと接続できるようになりますか?
私が得ることができる助けを本当に感謝します、ああ、私はこれをmatlabでやっています...そこから何か助けを得ることができてうれしいです、ありがとう!
編集:
私の次のコードは次のとおりです。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 のみを使用しています。形態学的画像処理(膨張、侵食)について読んだので、おそらくうまくいくかもしれません。
画像のコントラストとノイズ除去のためのより良い技術はありますか?