4

你好,我有以下图片分割的问题。它是需要被识别的有色字符。我正在使用锐化,维纳去模糊和维纳平滑。之后,我用模糊c均值聚类(3级)分割图片。但是在字母E的情况下,我得到的最好的结果是没有锐化,去模糊和平滑处理,只是使用阈值fcm分割。但是,我应该得到比这更好的结果,我可以将这两部分整体结合起来(不仅仅是上半部分与另一半黑色部分)。图像降噪OCR

我怎么能解决这个问题,以更强大的和其他图像也工作,例如图片中的5? 5的结果是在fcm集群之上进行锐化,减弱和平滑处理。我怎么能让它更连接也许?

我真的很感激任何帮助,我可以得到,拜托,哦,我在matlab中这样做...所以它会很高兴从那里得到任何帮助,谢谢!

This is letter E, i would like to get one element as a whole

Second pic is number 5, should be more smooth and connected, without any spaces between lines

编辑:

我下面的代码是这样的: 函数[BW,电平] = fcmthresh(IM,SW) 如果(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); 

这就是所有的代码,加上我只用fcmthres字母E,因为它的工作原理是最好的。 我读了关于形态图像处理(膨胀,侵蚀),以便可能做的伎俩。

有没有更好的图像对比和噪音去除技术?

+0

您现在的工作代码是什么? – 2012-07-30 07:01:06

+0

我会首先检测背景颜色反转区域,并将图像的所有部分转换为相同的背景(通过反转一半),然后开始分割和过滤... – Spektre 2015-05-19 08:05:40

回答

0

你拥有了它在黑色和白色,你可以使用奇异值分解(HTTP后: //en.wikipedia.org/wiki/Singular_value_decomposition),你可以比较奇异值。

对于去除噪声,将较小的奇异值设置为0.