基于MATLAB的图片中字符的提取源代码Word文件下载.docx

上传人:wj 文档编号:1463587 上传时间:2023-04-30 格式:DOCX 页数:5 大小:183.06KB
下载 相关 举报
基于MATLAB的图片中字符的提取源代码Word文件下载.docx_第1页
第1页 / 共5页
基于MATLAB的图片中字符的提取源代码Word文件下载.docx_第2页
第2页 / 共5页
基于MATLAB的图片中字符的提取源代码Word文件下载.docx_第3页
第3页 / 共5页
基于MATLAB的图片中字符的提取源代码Word文件下载.docx_第4页
第4页 / 共5页
基于MATLAB的图片中字符的提取源代码Word文件下载.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的图片中字符的提取源代码Word文件下载.docx

《基于MATLAB的图片中字符的提取源代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图片中字符的提取源代码Word文件下载.docx(5页珍藏版)》请在冰点文库上搜索。

基于MATLAB的图片中字符的提取源代码Word文件下载.docx

iflength(size(pic))==3%判断图片的维数,统一为灰度图片

pic=rgb2gray(pic);

pic=(pic<

127);

%转化为二值图片

pic=xylimit(pic);

%图片区域的第一次边界限定

%%%%%%%第一阶段%%%%%%

m=size(pic,1);

Ycount=zeros(1,m);

fori=1:

m

Ycount(i)=sum(pic(i,:

));

lenYcount=length(Ycount);

Yflag=zeros(1,lenYcount);

fork=1:

lenYcount-2

ifYcount(k)<

3&

&

Ycount(k+1)<

Ycount(k+2)<

3

Yflag(k)=1;

end

fork=lenYcount:

1+2

Ycount(k-1)<

Ycount(k-2)<

Yflag2=[0Yflag(1:

end-1)];

Yflag3=abs(Yflag-Yflag2);

%做差分运算

[~,row]=find(Yflag3==1);

%找突变位置

row=[1rowm];

%调整突变位置点

row1=zeros(1,length(row)/2);

%截取图像的起始位置向量

row2=row1;

%截取图像的终止位置向量

length(row)

ifmod(k,2)==1;

%奇数为起始

row1((k+1)/2)=row(k);

else%偶数为终止

row2(k/2)=row(k);

pic2=pic(row1

(1):

row2

(1),:

%截取第一列字符

alpha=1024/size(pic2,2);

%计算放缩比例

pic2=imresize(pic2,alpha);

%调整第一列字符图片大小,作为基准

fork=2:

length(row)/2

pictemp=imresize(pic(row1(k):

row2(k),:

),[size(pic2,1)size(pic2,2)]);

pic2=cat(2,pic2,pictemp);

%横向连接图像块

pic=xylimit(pic2);

%限定图像区域

%%%%%%%第二阶段%%%%%%

[~,n]=size(pic);

Xcount=zeros(1,n);

forj=1:

n

Xcount(j)=sum(pic(:

j));

lenXcount=length(Xcount);

Xflag=zeros(1,lenXcount);

lenXcount-2

ifXcount(k)<

Xcount(k+1)<

Xcount(k+2)<

Xflag(k)=1;

fork=lenXcount:

Xcount(k-1)<

Xcount(k-2)<

Xflag2=[0Xflag(1:

Xflag3=abs(Xflag-Xflag2);

[~,col]=find(Xflag3==1);

col=[1colsize(pic,2)];

coltemp=col(2:

end)-col(1:

end-1);

[~,ind]=find(coltemp<

3);

col(ind)=0;

col(ind+1)=0;

col=col(col>

0);

col1=zeros(1,length(col)/2);

col2=col1;

length(col)

ifmod(k,2)==1

col1((k+1)/2)=col(k);

else

col2(k/2)=col(k);

picnum2=length(col)/2;

piccell2=cell(1,picnum2);

picnum2

piccell2{k}=pic(:

col1(k):

col2(k));

piccell2{k}=xylimit(piccell2{k});

piccell2{k}=imresize(piccell2{k},[128128]);

%显示提取出的字符,每行最多输出8个字符

ifmod(picnum2,8)

rownum=ceil(picnum2/8)+1;

else

rownum=picnum2/8;

subplot(rownum,8,k);

imshow(piccell2{k});

%%函数xylimit如下:

functionnewpic=xylimit(pic)

%functionname:

XYLIMIT

%Inputpic:

binaryimage

%Outputnewpic:

%用途:

对二值图像边界进行限定,要求图像是黑底白图

%example:

%%pic=imread('

数字字符.jpg'

%%pic=rgb2gray(pic);

%%pic=(pic<

%%pic=xylimit(pic);

%%imshow(pic);

[m,n]=size(pic);

%%%%纵向扫描%%%

%获取每一行的像素点个数

Ybottom=m;

%底部定界

Yvalue=Ycount(Ybottom);

while(Yvalue<

3)

Ybottom=Ybottom-1;

Yvalue=Ycount(Ybottom);

Yceil=1;

%顶部定界

Yvalue=Ycount(Yceil);

Yceil=Yceil+1;

Yvalue=Ycount(Yceil);

%%%横向扫描%%%

%获取每一列的像素点个数

Xleft=1;

%左侧定界

Xvalue=Xcount(Xleft);

while(Xvalue<

2)

Xleft=Xleft+1;

Xvalue=Xcount(Xleft);

Xright=n;

%右侧定界

Xvalue=Xcount(Xright);

Xright=Xright-1;

Xvalue=Xcount(Xright);

%%%截取图片%%%

newpic=pic(Yceil:

Ybottom,Xleft:

Xright);

(输入的样品图片1)

(输出结果1)

(输入的样品图片2)

(输出结果2)

(输入的样品图片3)

(输出结果3)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2