你好,我遇到了关于下面这张彩色字符的分割问题。我正在使用锐化、维纳去模糊和维纳平滑等技术来处理该图片。然后我使用模糊C均值聚类(3类)对图片进行分割。但是在字母E的情况下,最好的结果是没有使用锐化、去模糊和平滑,仅仅使用阈值分割方法。我应该得到比这更好的结果,将那两部分作为一个整体组合起来(而不仅仅将上半部分白色与另一半黑色相结合)。
我应该如何解决这个问题,使其更加稳健,并且可以适用于其他图像,例如图片中的数字5?对于数字5,使用锐化、去模糊和平滑技术,再加上FCM聚类的操作。我应该如何更好地将它们连接起来呢?
如果有任何帮助,我将不胜感激。顺便提一下,我是在Matlab中进行这项工作的,所以希望能够从那里得到任何帮助。谢谢!
编辑:
我的代码如下: function [bw,level]=fcmthresh(IM,sw) if (nargin<1) error('您必须提供一张图片。'); elseif (nargin==1) sw=0; elseif (sw~=0 && sw~=1) error('sw必须为0或1。'); end
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);
这就是所有的代码了,我只是在使用fcmthres处理字母E,因为它效果最好。我读过形态图像处理(膨胀,腐蚀),也许这可以解决问题。
有没有更好的图像对比和去噪技术?