1.简述
随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕) 包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引和检索非常有帮助。图像文字提取又分为动态图像文字提取和静态图像文字提取两种,其中,静态图像文字提取是动态图像文字提取的基础,其应用范围更为广泛,对它的研究具有基础性,所以本文主要讨论静态图像的文字提取技术。静态图像中的文字可分成两大类: 一种是图像中场景本身包含的文字, 称为场景文字; 另一种是图像后期制作中加入的文字, 称为人工文字,如右图所示。场景文字由于其出现的位置、小、颜色和形态的随机性, 一般难于检测和提取;而人工文字则字体较规范、大小有一定的限度且易辨认,颜色为单色, 相对与前者更易被检测和提取,又因其对图像内容起到说明总结的作用,故适合用来做图像的索引和检索关键字。对图像中场景文字的研究难度大,目前这方面的研究成果与文献也不是很丰富,本文主要讨论图像中人工文字提取技术。
二.静态图像中文字的特点
静态图像中文字(本文特指人工文字,下同)具有以下主要特征:
(1)文字位于前端,且不会被遮挡;
(2)文字一般是单色的;
(3)文字大小在一幅图片中固定,并且宽度和高度大体相同,从满足人眼视觉感受的角度来说,图像中文字的尺寸既不会过大也不会过小;
(4)文字的分布比较集中;
(5)文字的排列一般为水平方向或垂直方向;
(6)多行文字之间,以及单行内各个字之间存在不同于文字区域的空隙。在静态图片文字的检测与提取过程中, 一般情况下都是依据上述特征进行处理的。
三.文字提取、识别的一般流程
静态图像文字提取一般分为以下步骤:文字区域检测与定位、文字分割与文字提取、文字后处理。其流程如图1所示。
2.代码
%% 学习目标:通过matlab识别中文字符图像
load fbp; %加载训练好的神经网络模型
G=imread('biaozhun.jpg'); %读取图片
I=rgb2gray(G); %转灰度图象
B1=filter2(fspecial('average',3),I)/255; %均值滤波
d=im2bw(B1,0.5); %二值处理
imshow(d);
k1=1;
k2=1;
s=sum(d');
j=2;a=1;
c=1
[m,n]=size(d');
while s(j)==m
j=j+1;
end
k1=j;
while s(j)~=m && j<=n-1
j=j+1;
end
k2=j-1;
d=d((k1:k2),:);
%% 行分割
[m,n]=size(d);
k1=1;k2=1;s=sum(d);j=2;a=1;c=1
for a=1:16
while s(j)==m
j=j+1;
end
k1=j;
while s(j)~=m && j<=n-1
j=j+1;
end
k2=j-1;
%% 列分割
if c==1
b1=d(:,(k1:k2));
imwrite(b1,'im1.jpg');
t1=tezhengtiqu(b1);
P_test = [t1'];
y = sim(net,P_test);
word=fbmjieguoxianshi(y)
end
%% 第1个字符
if c==2
b2=d(:,(k1:k2));
imwrite(b2,'im2.jpg');
t2=tezhengtiqu(b2);
P_test = [t2];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%第2个字符
if c==3
b3=d(:,(k1:k2));
imwrite(b3,'im3.jpg');
t3=tezhengtiqu(b3);
P_test = [t3];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%第3个字符
if c==4
b4=d(:,(k1:k2));
imwrite(b4,'im4.jpg');
t4=tezhengtiqu(b4);
P_test = [t4];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%第4个字符
if c==5
b5=d(:,(k1:k2));
imwrite(b5,'im5.jpg');
t5=tezhengtiqu(b5);
P_test = [t5];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第五5个字符
if c==6
b6=d(:,(k1:k2));
imwrite(b6,'im6.jpg');
t6=tezhengtiqu(b6);
P_test = [t6];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第6个字符
if c==7
b7=d(:,(k1:k2));
imwrite(b7,'im7.jpg');
t7=tezhengtiqu(b7);
P_test = [t7];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第7个字符
if c==8
b8=d(:,(k1:k2));
imwrite(b8,'im8.jpg');
t8=tezhengtiqu(b8);
P_test = [t8];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第8个字符
if c==9
b9=d(:,(k1:k2));
imwrite(b9,'im9.jpg');
t9=tezhengtiqu(b9);
P_test = [t9];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第9个字符
if c==10
b10=d(:,(k1:k2));
imwrite(b10,'im10.jpg');
t10=tezhengtiqu(b10);
P_test = [t10];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第10个字符
if c==11
b11=d(:,(k1:k2));
imwrite(b11,'im11.jpg');
t11=tezhengtiqu(b11);
P_test = [t11];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第11个字符
if c==12
b12=d(:,(k1:k2));
imwrite(b12,'im12.jpg');
t12=tezhengtiqu(b12);
P_test = [t12];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第12个字符
if c==13
b13=d(:,(k1:k2));
imwrite(b13,'im13.jpg');
t13=tezhengtiqu(b13);
P_test = [t13];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第13个字符
if c==14
b14=d(:,(k1:k2));
imwrite(b14,'im14.jpg');
t14=tezhengtiqu(b14);
P_test = [t14];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第14个字符
if c==15
b15=d(:,(k1:k2));
imwrite(b15,'im15.jpg');
t15=tezhengtiqu(b15);
P_test = [t15];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第15个字符
if c==16
b16=d(:,(k1:k2));
imwrite(b16,'im16.jpg');
t16=tezhengtiqu(b16);
P_test = [t16];
y = sim(net,P_test');
word=fbmjieguoxianshi(y)
end
%--------第16个字符
c=c+1;
end
subplot(2,8,1),imshow('im1.jpg');
subplot(2,8,2),imshow('im2.jpg');
subplot(2,8,3),imshow('im3.jpg');
subplot(2,8,4),imshow('im4.jpg');
subplot(2,8,5),imshow('im5.jpg');
subplot(2,8,6),imshow('im6.jpg');
subplot(2,8,7),imshow('im7.jpg');
subplot(2,8,8),imshow('im8.jpg');
subplot(2,8,9),imshow('im9.jpg');
subplot(2,8,10),imshow('im10.jpg');
subplot(2,8,11),imshow('im11.jpg');
subplot(2,8,12),imshow('im12.jpg');
subplot(2,8,13),imshow('im13.jpg');
subplot(2,8,14),imshow('im14.jpg');
subplot(2,8,15),imshow('im15.jpg');
subplot(2,8,16),imshow('im16.jpg');
3.运行结果