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

news2024/9/24 17:09:15

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.coloradmin.cn/o/731968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zero-Shot Node Classification

零样本节点分类(Zero-shot node classification) 谱图卷积 图卷积网络 GCN的分解

pandas中比较两个对象相等性 .eq()函数

在使用pandas做数据分析时&#xff0c;往往我们会有这样的数据需求&#xff1a;为某有某一属性的客户打标签。此刻&#xff0c;.eq()函数&#xff0c;就可以实现它自身的价值。 Lets go&#xff0c;一起去探索它的神秘力量吧&#xff01; 先讲讲它的用途&#xff1a;可以用于…

银河麒麟高级服务器系统部署-尚文网络xUP楠哥

进Q群11372462领取专属报名福利! # 什么是银河麒麟 银河麒麟高级服务器操作系统是针对企业级关键业务&#xff0c;适应虚拟化、云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和实时性等需求&#xff0c;依据CMMI5级标准研制的提供内生本质安全、云原…

Pandas理论与实战(一)

目录 一、Series对象 1.1 认识Series对象 1.2 Series对象的索引 1.3 获取Series的索引和值 二、DataFrame对象 2.1 认识DataFrame对象 2.2 DataFrame重要属性和函数 ​三、导入外部数据 3.1 导入.xls或.xlsx文件 3.2 导入csv文件 3.3 导入.txt文本文件 3.4 导入HTML网页…

Sentinel组件限流降级

官网: home | Sentinel 文档不是很全, 关于nacos的配置中心的使用完全没有 常见的限流算法 静态窗口限流: 即规定1秒内只能固定处理多少请求动态窗口限流: 同样是规定1秒内处理多少请求, 但是统计方式与第一个不同, 比如2.5秒则是统计1.5秒到现在的请求数漏桶限流: 进来可以…

【全栈第三课】通过ChatGPT快速入门NodeJS

前言 往期全栈课程&#xff1a; Vue从入门到精通 微信小程序从入门到精通 Node.js基础 简介 Node.js是什么&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O的模型&#xff0c;使其轻量又高效。Node.js …

迎接高考的倒计时网页(❤️好看好用❤️)HTML+CSS+JS

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

并发编程_jmm部分

1. JMM 理解 前提&#xff1a;并发编程有3大问题&#xff0c;可见性、有序性、原子性。 导致可见性的原因是缓存&#xff0c;有序性的原因是 编译器优化。解决方法就是直接禁用缓存和编译器优化&#xff0c;导致程序性能堪忧。 因此合理的方案就是按需禁用缓存和编译器优化。 …

MySQL数据库——单表查询练习

一、练习素材 创建表 CREATE TABLE emp (empno int(4) NOT NULL,ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,mgr int(4) NULL DEFAULT NULL,hireda…

遗传算法核心理解,python代码

遗传算法的核心&#xff0c;就在于&#xff0c;把待求的变量转化成二进制串&#xff0c;二进制串就像dna&#xff0c;可以对它的其中某几位进行交换&#xff0c;变异等操作&#xff0c;然后再转换回十进制&#xff0c;带入目标函数&#xff0c;计算适应度&#xff0c;保留适应度…

【lambda函数】lambda()函数

lambda&#xff08;&#xff09; lambda&#xff08;&#xff09;语法捕捉列表mutable lambda 底层原理函数对象与lambda表达式 lambda&#xff08;&#xff09;语法 lambda表达式书写格式&#xff1a; [capture-list] (parameters) mutable -> return-type{ statement }咱…

【数据结构】排序:插入排序与希尔排序详解

本章开始就要分享一些常用的排序方法&#xff0c;我们的日常生活中很多地方都要使用排序&#xff0c;比如电商平台可以按照你的需求进行排序&#xff0c;或者是你想了解大学的综合排名时 我们之前也学到过一些简单的排序比如冒泡排序&#xff0c;虽然他在时间复杂度上可以说是依…

归并排序(思路+代码)

变量&#xff1a; left、right、privot、temp[]、leftIndex、k 思路&#xff1a; 代码&#xff1a; import java.util.Arrays;public class Queue8 {public static void main(String[] args) {int[] arr {8, 9, 1, 7, 2, 3, 5, 4, 6, 0};sort(arr,0,arr.length-1);System.ou…

AST-抽象语法树

js加密解混淆首先想到的是AST语法树&#xff0c;那么什么是AST呢&#xff0c;学习AST过程的一些笔记 1.AST是JS执行的第一步是读取 js 文件中的字符流&#xff0c;然后通过词法分析生成令牌流Tokens&#xff0c;之后再通过语法分析生成 AST&#xff08;Abstract Syntax Tree&a…

3D 旋转木马

在工作中我们常用到3D装换和3D位移 主要知识点 3D位移&#xff1a;transale3d(x,y,z)3D旋转&#xff1a;rotate3d(x,y,z)透视&#xff1a;perspective3D呈现 transfrom-style 1、 transale3d translform: translform:translateX(100px):仅仅是在x轴上移动translform:transl…

[NOI2014] 随机数生成器(模拟+贪心)

题面 [NOI2014] 随机数生成器 - 洛谷 题解 缝合题 第一部分&#xff0c;直接模拟题目操作生成二维数组即可&#xff0c;复杂度O(n*mQ) 第二部分&#xff0c;是一个比较经典的字典序贪心 首先肯定需要将最小的数放到路径上&#xff0c;这样可选的剩下的数就被限制在了最小数…

Redis 管道

问题由来&#xff1a;如何优化频繁命令往返造成的性能瓶颈&#xff1f; Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。 一个请求会遵循以下步骤&#xff1a; 1、客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听S…

Codeforces Round 883 (Div. 3) A~G

比赛链接&#xff1a;Dashboard - Codeforces Round 883 (Div. 3) - Codeforces 目录 A. Rudolph and Cut the Rope B. Rudolph and Tic-Tac-Toe C. Rudolf and the Another Competition D. Rudolph and Christmas Tree E. Rudolf and Snowflakes F. Rudolph and Mimic…

JavaWeb项目(包含SSM项目)部署到Linux云服务器

目录 一、云服务器环境部署 1、安装JDK 查看JDK的命令为&#xff1a; 安装JDK命令&#xff1a; 2、安装Tomcat 2.1 安装步骤 2.2 验证Tomcat是否启动成功 3、安装MySQL 二、部署 Web 项目到 Linux 2.1 在云服务器中数据库建库建表 2.2 修改部署项目连接数据库密码 …

Qt(Day2)

实现登录框中&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;并跳转到其他界面&#xff1a;