图像降噪OCR

4

你好,我遇到了关于下面这张彩色字符的分割问题。我正在使用锐化、维纳去模糊和维纳平滑等技术来处理该图片。然后我使用模糊C均值聚类(3类)对图片进行分割。但是在字母E的情况下,最好的结果是没有使用锐化、去模糊和平滑,仅仅使用阈值分割方法。我应该得到比这更好的结果,将那两部分作为一个整体组合起来(而不仅仅将上半部分白色与另一半黑色相结合)。

我应该如何解决这个问题,使其更加稳健,并且可以适用于其他图像,例如图片中的数字5?对于数字5,使用锐化、去模糊和平滑技术,再加上FCM聚类的操作。我应该如何更好地将它们连接起来呢?

如果有任何帮助,我将不胜感激。顺便提一下,我是在Matlab中进行这项工作的,所以希望能够从那里得到任何帮助。谢谢!

这是字母E, 我想要得到一个完整的元素

第二张图片是数字5,应该更加顺滑和连接,线之间没有任何间隔

编辑:

我的代码如下: 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,因为它效果最好。我读过形态图像处理(膨胀,腐蚀),也许这可以解决问题。
有没有更好的图像对比和去噪技术?

你现在的工作代码是什么? - Eitan T
我会先检测背景颜色反转的区域,将图像的所有部分转换为相同的背景(通过反转一半),然后开始分割和过滤... - Spektre
2个回答

1

0

在你把它写成黑白的形式之后,你可以使用奇异值分解(http://en.wikipedia.org/wiki/Singular_value_decomposition),并且你可能会比较奇异值。

为了去除噪音,将较小的奇异值设为0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接