【图像分割】基于计算机视觉实现文字识别matlab代码

234 阅读1分钟

1 简介

图片中文字的检测和识别是图片检索和标注的关键技术,该技术主要由3个部分组成:文字区域检测,图片文字分割和OCR识别。本文研究了其中的图片文字分割技术,提出了一种解决该问题的方法:首先对图片进行预处理,用非线性对比度拉伸的方法提高图片中文字与背景的对比度;然后进行二值化处理,通过分析连通分量的几何特征以去除噪声。试验结果表明本文的方法能够取得比较好的图片文字分割效果。

2 完整代码

I=imread('brand02.jpg');

HS_I=double(I);

tic

G=gradient(HS_I);  % 计算梯度值

[y,x]=size(I);

T=60;

%%%%%%% 商标文字分割 %%%%%%%%%%

n=30;

GY=zeros(y,1);                 

for j=1:y   

    for i=1:x-n

         Max=max(G(j,i:i+n));

         Min=min(G(j,i:i+n));

         MGD(j,i)=Max-Min;       % 计算最大梯度差

         if (MGD(j,i)>T)         

             GY(j,1)=GY(j,1)+1;  % MGD大于阈值的次数统计

         end    

    end

end    

[temp MaxY]=max(GY);

PY1=MaxY;

while ((GY(PY1,1)>=n)&&(PY1>1))  % 次数阈值检测

       PY1=PY1-1;

end    

PY2=MaxY;

while ((GY(PY2,1)>=n)&&(PY2<y))

       PY2=PY2+1;

end

%%%%%%%%%% X 方向的分割 %%%%%%%%%%%

n=15;

GX=zeros(1,x);

for i=1:x

    for j=1:y-n

         Max=max(G(j:j+n,i));

         Min=min(G(j:j+n,i));

         MGD(j,i)=Max-Min;

         if (MGD(j,i)>T)

             GX(1,i)=GX(1,i)+1;

         end

     end

 end

 PX1=1;

while (((GX(1,PX1)<=n)||(GX(1,PX1+1)<=n))&&(PX1<x)) % 列方向保证同时相邻的两列满足次数要求

       PX1=PX1+1;

end    

PX2=x;

while (((GX(1,PX2)<=n)||(GX(1,PX2-1)<=n))&&(PX2>PX1))

       PX2=PX2-1;

end    

HS_I=uint8(HS_I);

IY=HS_I(PY1:PY2,PX1:PX2);

t=toc

%%%%%%%%%%%%%%%%%%%%%%%%%%

figure,imshow(HS_I);

figure,plot(MGD(40,:));grid

figure,plot(MGD(140,:));grid

figure,imshow(IY);

3 仿真结果

4 参考文献

[1]易剑, 彭宇新, and 肖建国. "一种图片文字分割的方法." 2007年全国网络与信息安全技术研讨会 2007.

部分理论引用网络文献,若有侵权联系博主删除。