- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自动识别字母的研究
自动识别字母的研究
【 】: MATLAB 环境下的实现方法 。
【 】: 、 、 、MATLAB
0.
在识别字母时,我们只关注字母的形状,而其颜色、大小等其它因素不会影响整个识别过程,因此可以先屏蔽掉这些因素,再判断其形状是否与我们认识的字母相符。基于上述的考虑,我们将字母图像转换成灰度图或黑白二值图像,并对其消噪及图像增强,利用边缘检测、寻找连通区域实现图像分割,最后计算分割出的区域与字母模板的相关性,从而判定是哪个字母。
为了实现上述的操作,我们需要对图像中的每个像素做相应的处理, MATLAB( ) MATLAB
解算识别过程简单快捷 。
1.
1.1
图像识别处理中,采用的方法需要将彩色图转换成灰度图, 256阶,,。, RGB 彩色模型,、、、Gray,RGB中的R、G、B Gray替换,RGB(Gray,Gray,Gray),RGB(R,G,B)即得到灰度图 。
imread 函数读入需要识别的RGB 图像 ,rgb2gray使用浮点算 法Gray =R ×0.299 +G×0.587+B×0.114 将其转换成灰度图,,。
1.2
将图像转换成灰度图后,,(salt-and-pepper noise)。、、、。,。,,,,,,、 ,,。,,,。
,,,。 ,,,。,,,。、、 、。3×3,5×5 逐渐增大,。,,,,。,。
MATLAB中,medfilt2 函数中,。:
B=medfilt2(A,[m,n]); B是中值滤波后得到的图像矩阵,A ,m n 是处理模版大小,3×3。。
1.3
为了便于识别,将图像二值化,B=im2bw(A,level), B将输入图像A中亮度值大于阈值 level的像素值替换为1(白色), 0(黑色), A 最好是像素点,,,。
、,,,。,。,4 连通和8连通之分,8连通来确定区域,,、 、 、 、、、、8个方向的移动组合 ,。,bwlabel 函数。 L=bwlabel(B,n); 语句调用函数,n 的值为4或 8, 返回一个与 B 大小相同的 L 矩阵,B 中每个连通区域的类别标签,。
,,,,。 ,,。, Sobel 算子进行边缘检测。Sobel ,。Sobel,。A ,Gx Gy 分别表示经横向及纵向边缘检测的图像, :
G=(G x +G y )将其横向及纵向梯度近似值结合得到,并由公式
得到梯度方向 。MATLAB中,edge 实现上述算法,通过语句 B=edge(double(A),sobel), Sobel 算子边缘检测的效果图。 。
1.4
在识别前,首先创建每个字母的图像模板,再将其与原图像比较,寻找目标,以确定在原图像中是否存在与该模板相同或相似的目标区域,,, 。, , imresize函数调整大小, 。
corr2(A,B), m×n 的图像A(x,y) 中寻找匹配的大小为 j×k 的子图 B(x,y),
其中 x=0,1,…,m-1,y=0,1,…,n-1, B 中像素的平均值,A 中与 B 当前所在位置相重合区域平均值。(x,y) 在-1 到 1之间取值, A 和 B 幅值中的区间变化相独立, 1或 -1 或者接近1 或 -1 则表示源图像中找到与模板完全匹配或者相似的子图。
1.5
在识别过程中,图像的分割、寻找连通区域、边缘检测、模扳匹配等处理需要依据字母图像的实际尺寸及字母个数而多次循环。 line()和 cut() 函数实现图像分割,read_letter() 函数实现模板匹配。
while 1,
[fl re]=line(re); %对图像行切割,f1是切割出来的块,reimg=~fl;
L=bwlabel(img); %对图中的8连通区域由上到下,由左到右编码 ,L
mx=max(max(L));
BW=edge(double(img),sobel);% 用自动选择阈值Sobel 算子进行边缘检测
[imx,imy]=size(BW);
for n=1:mx
[r,c] = find(L==n);% 把区域n的每个元素的行标给r,列标给c,r c 均为列矩阵
rc=[r c];
[sx sy]=size(rc); %sx 为区域n 中的像素个数
n1=zeros(imx,imy); % 建立与切割出来的图像等大的零矩阵
for i=1:sx
……
n1=~cut(n1); % 调用 cut 函数,将图像区域 n1 分割出来
img_r=imresize(n1,[42 24]);% 调整图像区域n1的大小
letter=read_letter(img_r); % 调用 read_letter 函数,进行模板匹配
…
文档评论(0)