20中文字符识别(matlab程序)

1.简述

      随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕) 包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引和检索非常有帮助。图像文字提取又分为动态图像文字提取和静态图像文字提取两种,其中,静态图像文字提取是动态图像文字提取的基础,其应用范围更为广泛,对它的研究具有基础性,所以本文主要讨论静态图像的文字提取技术。静态图像中的文字可分成两大类: 一种是图像中场景本身包含的文字, 称为场景文字; 另一种是图像后期制作中加入的文字, 称为人工文字,如右图所示。场景文字由于其出现的位置、小、颜色和形态的随机性, 一般难于检测和提取;而人工文字则字体较规范、大小有一定的限度且易辨认,颜色为单色, 相对与前者更易被检测和提取,又因其对图像内容起到说明总结的作用,故适合用来做图像的索引和检索关键字。对图像中场景文字的研究难度大,目前这方面的研究成果与文献也不是很丰富,本文主要讨论图像中人工文字提取技术。

二.静态图像中文字的特点

 

静态图像中文字(本文特指人工文字,下同)具有以下主要特征:

(1)文字位于前端,且不会被遮挡;

(2)文字一般是单色的;

(3)文字大小在一幅图片中固定,并且宽度和高度大体相同,从满足人眼视觉感受的角度来说,图像中文字的尺寸既不会过大也不会过小;

(4)文字的分布比较集中;

(5)文字的排列一般为水平方向或垂直方向;

(6)多行文字之间,以及单行内各个字之间存在不同于文字区域的空隙。在静态图片文字的检测与提取过程中, 一般情况下都是依据上述特征进行处理的。

 

三.文字提取、识别的一般流程

 

静态图像文字提取一般分为以下步骤:文字区域检测与定位、文字分割与文字提取、文字后处理。其流程如图1所示。

 

 

16d1a8e7f1900e6aa0eb6a32ae574fd0.png

 

 

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.运行结果

1df5c5ecfcf94ec681e49bad3237b5f1.png

 2eba056222224d949d1650ff924a178f.png

 dab3369b759a4e318f343221d29754ec.png

 116e9dd8425c48afa62dce495d6d27f7.png

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio 4.0以上隐藏调用方法参数名提示

引入&#xff1a; android studio在编辑代码的时候&#xff0c;调用函数时会接口处会自动提示参数名&#xff0c;方便代码书写时对传参命名的规范性。 可以如果代码是魂效过的&#xff0c;那会适得其反&#xff0c;l,l1,l2,i,i1,i2这样的参数名提醒反而会混淆视听。 这时候可…

Vue项目在nginx部署启动

目录 1.打包 2.移动文件夹 3.修改配置文件 4.重启nginx即可通过指定端口访问。 1.打包 在package.json有一段代码是命令执行的&#xff0c;代码所示打包命令为build:prod,所以打包命令为npm install build:prod. "scripts": {"dev": "vue-cli-servi…

在SpringBoot中对RabbitMQ三种使用方式

基于API的方式 1.使用AmqpAdmin定制消息发送组件 Autowiredprivate AmqpAdmin amqpAdmin;Testpublic void amqpAdmin(){//1.定义fanout类型的交换器amqpAdmin.declareExchange(new FanoutExchange("fanout_exchange"));//2.定义两个默认持久化队列,分别处理email和sm…

TLS/SSL 协议

TLS/SSL 协议的工作原理 TLS/SSL 协议的工作原理 • 身份验证 • 保密性 • 完整 TLS/SSL 发展 TLS 协议 • Record 记录协议 • 对称加密 • Handshake 握手协议 • 验证通讯双方的身份 • 交换加解密的安全套件 • 协商加密参 TLS 安全密码套件解 对称加密的工作原理&am…

游戏反调试方案解析与frida/IDA框架分析

近来年&#xff0c;游戏黑灰产攻击趋势呈现出角度多样化的特点。据FairGuard游戏安全数据分析发现&#xff0c;游戏黑灰产攻击以工作室、定制注入挂、内存修改器、模拟点击、破解等形式为主。 游戏安全风险分布占比图 对于一款游戏而言&#xff0c;上述的风险中&#xff0c;被…

浅谈线段树

1.前言 Oi-Wiki上的线段树 同步于 c n b l o g s cnblogs cnblogs发布。 如有错误&#xff0c;欢迎各位 dalao 们指出。 注&#xff1a;本篇文章个人见解较多&#xff0c;如有不适&#xff0c;请谅解。 前置芝士 1.二叉树的顺序储存 2.线段树是什么&#xff1f; 线段树…

9.17UEC++代码段、编码和字符串

1. 编码定义&#xff1a; 自行转码&#xff1a; 字符串&#xff1a; FName&#xff1a;名称&#xff0c;访问快&#xff0c;用FName做键值。&#xff08;键值容器&#xff09;资产名称基本都是FName。 FText&#xff1a;一般是和UI有关&#xff0c;专门对接UI&#xff0c;也是…

JS Node 模块化解释:AMD、UMD、CommonJS、 ESM

一、前言 传统方式下&#xff0c;JS 若想引入其它 JS 文件时&#xff0c;通常使用 <script> 语法来完成&#xff0c;然而引入的 JS 往往易于造成命名污染&#xff0c;为了解决这问题&#xff0c;模块化 开发的概念逐渐浮现。 本文将以完整的 Demo 将各大模块模块的概念…

15年前的手机并没有jvm虚拟机,为何可以运行Java游戏

2000年代初期&#xff0c;随着移动通信技术的发展&#xff0c;手机逐渐普及。那个时代的手机功能相对比较单一&#xff0c;主要用于打电话和发送短信。但是&#xff0c;随着技术的进步&#xff0c;人们开始在手机上玩游戏&#xff0c;而其中最受欢迎的游戏就是Java游戏。在那个…

MoblieNetV1、V2、V3、ViT四种Moblie模型的分析对比

1、MoblieNetV1 2017年提出&#xff0c;论文地址为&#xff1a;https://arxiv.org/pdf/1704.04861.pdf 1.1 相关知识 提到了标准卷积、深度可分卷积、点卷积&#xff0c;并分析了不同卷积结构的计算量&#xff0c;&#xff08;假设 D k D_k Dk​为ksize&#xff0c;M为卷积的…

软考:中级软件设计师:存储管理,分区存储,页式存储,逻辑地址,物理地址

软考&#xff1a;中级软件设计师:存储管理&#xff0c;分区存储 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是…

Apollo、RocketMQ加载顺序问题

在SpringCloudAlibaba框架中&#xff0c;因Nacos配置中心管理权限过于简单&#xff0c;决定用Apollo代替Nacos配置中心&#xff0c;但在启动时&#xff0c;Nacos、Redis等配置读取正常&#xff0c;RocketMQ由于启动过早&#xff0c;无法从Apollo读取自己的服务地址配置。 报错…