jinshi
2015-05-09, 14:55
我用的是MATLAB R2012b win7 64bit。我要识别的是一种象形文字,处理的思路是把图像灰度化、二值化处理之后,再找出图像的轮廓,最后用几条平均间距或者不平均间距的横线和竖线去切割图像,并记录和图像的交点数。已经编写到能够找出图像轮廓,求大神帮忙,如何处理切割图像和记录交点数。已编写的代码如下:
i=imread('3_10.png');
i1=rgb2gray(i);%i1灰度图像
i2=im2bw(i1);% i2是二值图像,不需要求阈值
[m,n]=size(i2); % 读取多少行多少列
% 矩阵取值
leftj=0; %寻找图像中的文字最左端
for j=1:n
for i=1:m
if(i2(i,j)==0)
leftj=j;
break;
end
end
if(leftj>0)
break;
end
end
rightj=0;%寻找图像中的文字最右端
for j=n:-1:1
for i=1:m
if(i2(i,j)==0)
rightj=j;
break;
end
end
if(rightj>0)
break;
end
end
upi=0;%寻找图像中的文字最上端
for i=1:m
for j=1:n
if(i2(i,j)==0)
upi=i;
break;
end
end
if(upi>0)
break;
end
end
downi=0;%寻找图像中的文字最下端
for i=m:-1:1
for j=1:n
if(i2(i,j)==0)
downi=i;
break;
end
end
if(downi>0)
break;
end
end
newi=i2(upi:downi,leftj:rightj)
i=imread('3_10.png');
i1=rgb2gray(i);%i1灰度图像
i2=im2bw(i1);% i2是二值图像,不需要求阈值
[m,n]=size(i2); % 读取多少行多少列
% 矩阵取值
leftj=0; %寻找图像中的文字最左端
for j=1:n
for i=1:m
if(i2(i,j)==0)
leftj=j;
break;
end
end
if(leftj>0)
break;
end
end
rightj=0;%寻找图像中的文字最右端
for j=n:-1:1
for i=1:m
if(i2(i,j)==0)
rightj=j;
break;
end
end
if(rightj>0)
break;
end
end
upi=0;%寻找图像中的文字最上端
for i=1:m
for j=1:n
if(i2(i,j)==0)
upi=i;
break;
end
end
if(upi>0)
break;
end
end
downi=0;%寻找图像中的文字最下端
for i=m:-1:1
for j=1:n
if(i2(i,j)==0)
downi=i;
break;
end
end
if(downi>0)
break;
end
end
newi=i2(upi:downi,leftj:rightj)