图像数字字符定位

来源:互联网 发布:淘宝怎么换绑支付宝 编辑:程序博客网 时间:2024/06/06 01:54
字符的准确定位是字符准确识别的一个重要前提。并且有些条件下光照太弱定位变得很困难。
下面是一个基于边缘检测和方向累积进行字符定位的Matlab程序。
clear;close all;
%横向和纵向梯度阈值
xth = 60;
yth =10;
%读入图像,灰度化后缩放
I = imread('D:\\4.bmp');
I = imadjust(I,[0.1 0.9]);
figure(1);
subplot(3,1,1);imshow(I);
title('OrgColorImg');
J=rgb2gray(I);
J = imresize(J,0.25);
OrgImg = J;
J = edge(J,'canny');
subplot(3,1,2);imshow(J);
title('Canny');

[M,N] = size(J);
X = zeros(1,M);
Y = zeros(1,N);

%求Canny图,X方向累积。
for i=1:M
X(i) = sum(J(i,:));
end
%二值化累积结果
for i=1:M;
if(X(i)>xth)
X(i) =1;
else
X(i) = 0;
end
end
%求X方向起始点和终点。
for i=1:M
if(X(i)==1)
x1 = i;
break;
end
end
for i=1:M
if(X(i)==1)
x2 = i;
end
end
%将X方向多余的去处掉,产生一张新的临时图,在对其进行Canny,求Y方向累积
Newtmp = zeros(x2-x1,N);
Newtmp  = OrgImg(x1:x2,1:N);

Newtmp = edge(Newtmp,'canny');
for j=1:N
Y(j) = sum(Newtmp(:,j));
end
for i=1:N;
if(Y(i)>yth)
Y(i) =1;
else
Y(i) = 0;
end
end
for i=1:N
if(Y(i)==1)
y1 = i;
break;
end
end
for i=1:N
if(Y(i)==1)
y2 = i;
end
end

figure(2);
subplot(2,1,1);plot(X);
title('X方向累积结果');
subplot(2,1,2);plot(Y);
title('Y方向累积结果');
%残生最后的结果图。
NewImg = zeros(x2-x1,y2-y1);
NewImg  = OrgImg(x1:x2,y1:y2);
figure(1);
subplot(3,1,3),imshow(NewImg);
title('Result');

图像字符定位

图像字符定位
0 0