4

您好,我在分割下面的图片时遇到问题。它是需要识别的彩色字符。我正在使用锐化、维纳去模糊和维纳平滑。之后,我用fuzzy-c 对图片进行分割意味着聚类(3 类)。但是在字母 E 的情况下,我得到的最好的结果是没有锐化、去模糊和平滑,只使用阈值 fcm 分割。然而,我应该得到比这更好的结果,我可以将这两个部分组合为一个整体(不仅仅是上部白色部分和另一半黑色部分)。

我怎样才能解决这个问题,使其更健壮,并与其他图像一起工作,例如图片中的 5?5 的结果是在 fcm 聚类之上进行锐化、去模糊和平滑。我怎样才能让它更连接呢?

我真的很感谢我能得到的任何帮助,哦,我正在 matlab 中做这个......所以很高兴从那里得到任何帮助,谢谢!

这是字母 E,我想把一个元素作为一个整体

第二张图片是5号,应该更流畅和连接,行之间没有任何空格

编辑:

我的以下代码是这样的: function [bw,level]=fcmthresh(IM,sw) if (nargin<1) error('You must provide an image.'); 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);

这就是所有的代码,加上我只使用 fcmthres 来表示字母 E,因为它工作得最好。我阅读了有关形态学图像处理(膨胀,腐蚀)的信息,因此也许可以解决问题。

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

4

2 回答 2

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/帮助/工具箱/图像/ref/imfill.html

于 2012-07-31T10:01:16.597 回答
0

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

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

于 2013-01-14T17:00:03.167 回答