您好我在下面的图片细分问题。这是需要识别的有色人物。我正在使用锐化,维纳去模糊和维纳平滑。之后,我用模糊c分割图片意味着聚类(3级)。但是在字母E的情况下,我得到的最好的是没有锐化,去模糊和平滑,只是使用阈值fcm分割。然而,我应该得到比这更好的结果,在那里我可以将这两个部分作为一个整体组合(不仅仅是上部白色部分而另一半是黑色部分)。
我怎样才能解决这个问题,使其更加健壮并与其他图像一起使用,例如图片中的5? 5的结果是在fcm聚类之上进行锐化,去抖和平滑。我怎么能让它更加连接呢?
我真的很感激我能得到的任何帮助,拜托,哦,我在matlab中这样做...所以从那里得到任何帮助会很高兴,谢谢!
编辑:
我的以下代码是这样的: 函数[bw,level] = fcmthresh(IM,sw) if(nargin< 1) 错误('你必须提供图像。'); elseif(nargin == 1) SW = 0; elseif(sw~ = 0&& sw~ = 1) 错误('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,因为它的效果最好。 我读到了关于形态学图像处理(扩张,侵蚀)的信息,因此也许可以做到这一点。
是否有更好的图像对比和噪音去除技术?
答案 0 :(得分: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
答案 1 :(得分:0)
在黑白之后你可以使用奇异值分解(http://en.wikipedia.org/wiki/Singular_value_decomposition),你可以比较奇异值。
对于噪声消除,将较小的奇异值设置为0.