精华内容
下载资源
问答
  • 基于FPGA数字识别的实现
    千次阅读
    2018-04-24 13:35:17

     

    基于FPGA的数字识别的实现

    1 背景知识

    1.1基于FPGA的数字识别的方法

    通常,针对印刷体数字识别使用的算法有:基于模版匹配的识别方法、基于BP 神经网络的识别方法、基于数字特征的识别方法等。下文将对这几种算法进行讨论以及比较。
       1>模版匹配法
        模版匹配法是一种被较早应用的数字识别算法,该算法的关键是对所要识别
    的所有数字进行模版构建,之后将图像中的数字与所有的数字模版一一进行比较,
    计算出图像中数字与每个模版的相似度,根据所计算出的相似度结果进行识别。
    其中相似度最高的模版即为我们所要识别的结果。模版匹配法的对数字的大小、
    结构形状的规范化程度要求很高,数字的规范化程度对识别的准确率有着直接的
    影响。该算法原理较为简单,但计算复杂度过大,

    更多相关内容
  • FPGA数字识别,使用正点原子开发板进行开发,准确率非常高。
  • FPGA数字识别.rar

    2021-03-30 12:29:28
    基于FPGA数字识别,包括水平垂直投影,单数字识别和多数字识别,verilog实现。
  • 47_digital_recognition_FPGA数字识别_FPGA数字识别_数字识别fpga_数字识别.zip
  • 47_digital_recognition_FPGA数字识别_FPGA数字识别_数字识别fpga_数字识别_源码.zip
  • FPGA数字识别,使用正点原子开发板进行开发,准确率非常高。
  • 基于FPGA数字识别

    2018-04-27 16:20:07
    基于FPGA数字识别,实现了FPGA的实时数字准确的识别。
  • 基于FPGA数字识别实现

    千次阅读 多人点赞 2019-07-21 17:30:34
    本篇博客就将介绍数字识别的方法,由于只是研究数字识别的方法,我们就不用硬件平台,而是用Modelsim和Matlab来仿真验证。 具体方法如下: 我们用画图软件将带有数字的图片截取为640x480像素,为了和我们将来要使用...

    前言

    数字识别在我们生活中很常见,比如车牌识别。本篇博客就将介绍数字识别的方法,由于只是研究数字识别的方法,我们就不用硬件平台,而是用Modelsim和Matlab来仿真验证。
    具体方法如下:

    1. 我们用画图软件将带有数字的图片截取为640x480像素,为了和我们将来要使用的摄像头的分辨率一样。
    2. 利用Matlab将图片读取出来,生成一个txt文档
    3. 用Modelsim读取第二步生成的txt文档,做为数据源。然后做二值化,二值化后的数据只有8‘hff和8’h00两种,8’hff是背景色,8’h00是数字的数据。具体识别过程后面代码具体分析。

    准备工作

    1. 带数字的图片(640x480)
    2. Matlab软件
    3. Modelism软件

    数字识别原理介绍

    代码为本博客作者原创,识别原理借鉴lee神博客。为了对原创作者的付出表示感谢,特分享数字识别原文链接:
    https://www.cnblogs.com/leegod/p/8929678.html
    1.1基于FPGA的数字识别的方法

    通常,针对印刷体数字识别使用的算法有:基于模版匹配的识别方法、基于BP 神经网络的识别方法、基于数字特征的识别方法等。下文将对这几种算法进行讨论以及比较。
    1>模版匹配法
    模版匹配法是一种被较早应用的数字识别算法,该算法的关键是对所要识别
    的所有数字进行模版构建,之后将图像中的数字与所有的数字模版一一进行比较,
    计算出图像中数字与每个模版的相似度,根据所计算出的相似度结果进行识别。
    其中相似度最高的模版即为我们所要识别的结果。模版匹配法的对数字的大小、
    结构形状的规范化程度要求很高,数字的规范化程度对识别的准确率有着直接的
    影响。该算法原理较为简单,但计算复杂度过大,同时不利于 FPGA 的实现。
    2>神经网络识别算法
    神经网络识别的方法是模仿动物神经网络的特征,对信息进行分布式并行处
    理的一种算法。神经网络识别算法具有一定的抗干扰能力,但为了保证识别的准
    确率,该算法需要负责并且大量的计算,来对神经网络进行训练,而过于复杂的
    计算不利于 FPGA 对该算法的实现。
    3>数字特征识别算法
    基于数字特征的识别算法其核心是通过对数字的形状以及结构等几何特征
    进行分析与统计,通过对数字特征的识别从而达到对图像中数字的识别。

    1.2 基于数字特征算法实现数字识别

    我们采用基于数字特征的算法进行数字的识别,通过图像采集模块采集到图像,进行灰度化,二值化,然后进行数字特征的提取和统计来完成对数字的识别,最终显示到数码管上,完成图像信息到数字信息的转化。
    在这里插入图片描述
    图1 0-6 数字特征标线
    在这里插入图片描述
    图2 7-9 数字特征标线
    在这里插入图片描述
    图3 5数字特征

    数字特征信息的提取基于打印体,如上图1,图2,图3所示,以图3数字5举例,红框是数字5的水平和竖直的上下左右边界。X1在竖直方向的2/5处的水平线,x2在竖直方向的2/3处的水平线,y在水平方的1/2处的水直线。我们以此特征来统计x1,x2,y与数字5的交叉点。

    以交叉统计法来区分0-9数字的特征如下表1:
    表1 0-9数字特征统计表
    在这里插入图片描述
    在这里插入图片描述
    由于2,3,5的数字特征统计表一样,无法区分所以我们继续增加数字特征以区分2,3,5。如表2:
    表2 2,3,5 数字特征统计
    在这里插入图片描述
    这样通过数字统计完全区分开数字0-9。然后利用FPGA系统搭建实时数字识别系统。

    Matlab主要程序分析

    本项目,我们以识别数字2为例,原始图片如下:
    在这里插入图片描述
    im1=imread('D:\work\XYUE\zhuanti\IMAGE_PROCESS\Number_shi\Matlab\2.png'); %读取图片
    x=rgb2gray(im1);%将原图转为灰度图
    imshow(im1);%显示原图
    imshow(x);%显示灰度图

    fid=fopen('Num_dec.txt','wt');%需要生成10进制的数据文件,Matalb才能正确识别
    fid_hex=fopen('Num_hex.txt','wt');%需要生成16进制的数据文件,Modelsim才能正确识别
    [row,col]=size(x);
    for i=1:1:row
    	for j=1:1:col
    		if(j==col)
    			if(x(i,j)>100)%判断阈值,将灰度图进行二值化
    				fprintf(fid,'%02d\n',255);
    			else
    				fprintf(fid,'%02d\n',0);
    			end
    		else
    			if(x(i,j)>100)%判断阈值,将灰度图进行二值?
    				fprintf(fid,'%02d\t',255);
    			else 
    				fprintf(fid,'%02d\t',0);
    			end
    		end
    	end
    end
    
    aa=textread('Num_dec.txt');
    imshow(aa);%显示二值化后的图片
    
    %%%将modelsim仿真生成的带边界的数据文件转换成640x480矩阵,并将其显示出来
    aa=textread('D:\work\XYUE\zhuanti\IMAGE_PROCESS\Number_shi\FPGA\Sim\do\FPGA_MID_307200.txt');
    fid1=fopen('Num_hex_bianjie.txt','wt');
    fid1_dec=fopen('Num_dec_bianjie.txt','wt');
    row=480;
    col=640;
    for i=1:1:row
    	for j=1:1:col
    		if(j==col)
    			fprintf(fid1,'%02x\n',aa((i-1)*col+j));
    		else
    			fprintf(fid1,'%02x\t',aa((i-1)*col+j));
    		end
    	end
    end
    for i=1:1:row
    	for j=1:1:col
    		if(j==col)
    			fprintf(fid1_dec,'%d\n',aa((i-1)*col+j));
    		else
    			fprintf(fid1_dec,'%d\t',aa((i-1)*col+j));
    		end
    	end
    end
    aa=textread('Num_dec_bianjie.txt');
    imshow(aa,[]);%注意要加[],否则matlab没办法按数据等级来显示颜色,造成的结果是看不到边框
    

    Matlab效果图片显示

    在这里插入图片描述

    FPGA主要模块思路分析

    FPGA部份主要分为以下几个主要模块:

    模块一

    在这里插入图片描述
    该模块主要读取matlab生成的图片数据,接口定义见图上说明

    模块二

    在这里插入图片描述
    边界检测原理分析:背景数据为8’hff,数字数据为8’h00,所以如果检测到数据由8’hff变为00,那说明检测到了左边界,由于数字中间有镂空,所以我们会检测到很多左边界,这时就要做一个大小比较,当得到的所有左边界中最小的那个数,便是我们数字的左边界坐标,其余坐标检测与之类似。具体代码如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    模块三

    在这里插入图片描述
    边界显示的原理分析:边界检测模块检测出了上下左右的坐标,当行数计数到上边界时,同时列计数在左右边界之间时,将该行的图像数据替换为边界数据(8’h55)。其实边界与上边界处理方法类似。具体代码如下:
    在这里插入图片描述

    模块四

    在这里插入图片描述
    在这里插入图片描述
    识别原理简单图示:
    在这里插入图片描述

    模块五

    在这里插入图片描述

    FPGA仿真波形分析

    在这里插入图片描述
    从上面的仿真图中,我们最后识别出了图片中的数字,num=2。

    结语

    该项目,我们通过Matlab结合FPGA仿真,实现了静态数字的识别,最终仿真验证成功。并且摆脱了硬件的限制,在无硬件的条件下,我们仍然可以进行图像处理相关的学习。如果读者想要在硬件上验证,只需要对程序做稍微简单的修改即可,识别原理是一样的。花了一个下午写这一篇长博客,希望能起到抛砖引玉的作用,若有错误的地方,烦请指出,一起学习,一起进步!

    展开全文
  • 基于FPGA数字识别

    千次阅读 2018-07-31 09:46:52
    在《基于FPGA数字识别一》我们在三种数字识别方法中选择了数字特征识别算法,完成了屏幕固定位置的数字识别。例如图1所示,数字只有在标线的固定位置才能被识别,移出标线就不能被识别。 图1 基于固定标线的数字...

    基于FPGA的数字识别三

    作者:OpenS_Lee

    1 背景知识

    在《基于FPGA数字识别一》我们在三种数字识别方法中选择了数字特征识别算法,完成了屏幕固定位置的数字识别。例如图1所示,数字只有在标线的固定位置才能被识别,移出标线就不能被识别。

    图1 基于固定标线的数字识别

      在《基于FPGA的数字识别二》中我们在数字识别的前端增加了移动目标的追踪模块,从而完成了屏幕范围内0-9的任意位置的识别。例如图2,首先定位出数字在屏幕的上下左右边界,最后以此边界为依据识别数字。从而改变的数字不能移动的问题。但是每次只能识别一个数字。

    展开全文
  • 基于FPGA数字识别的实现 1基于数字特征算法实现数字识别 我们采用基于数字特征的算法进行数字的识别,通过图像采集模块采集到图像,进行灰度化,二值化,然后进行数字特征的提取和统计来完成对数字的识别,最终...
  • FPGA实现数字识别

    2021-07-16 14:20:14
    文章目录一、数字识别方法二、画线取交点特征的方法三、总体测试框图 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、数字识别方法二、画线取交点特征的方法三、总体测试框图 ...


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、数字识别方法

    目前数字识别的方法有:模板匹配、画线取交点特征、cnn等,都是对数字的相关特征进行提取比较。本文介绍其中的画线取交点特征的方法,这种方法实现简单,适合刚开始学习的小白。

    二、画线取交点特征的方法

    此方法引用自:https://www.cnblogs.com/leegod/p/8929678.html
    在这里插入图片描述
    在这里插入图片描述
    横向画两条线,纵向画一条线,提取交点特征,列表如下:
    在这里插入图片描述
    这里看到此方法中三个特征不足以区分10个数字,其中2、3、5交点数一样,所以交点位置也作为一个特征来区分这三个数字。区分后列表如下:
    在这里插入图片描述

    在FPGA实现时,需要先进行每个数字的边界定位,然后再对每个数字进行识别。
    在这里插入图片描述

    边界检测的状态机部分的代码:

     state machine
    always@(*)
    begin
        case(cur_state)
    		 IDLE:
    		 begin
    			  if(lcd_de)
    					next_state <= U_DETECT;
    			  else
    					next_state <= IDLE;
    		 end
    		 U_DETECT:
    		 begin
    			  if(u_done)
    					next_state <= L_DETECT;
    			  else
    					next_state <= U_DETECT;
    		 end
    		 L_DETECT:
    		 begin
    			  if(l_done)
    					next_state <= R_DETECT;
    			  else if((pixel_xpos == row - 1) && (pixel_ypos == col - 5))
    					next_state <= DETECT_DONE;	
    			  else
    					next_state <= L_DETECT;
    		 end
    		 R_DETECT:
    		 begin
    			  if(pixel_xpos < row - 1)
    					if(r_done || (pixel_ypos == col - 1))
    						 next_state <= L_DETECT;
    					else
    						 next_state <= R_DETECT;
    			  else
    					next_state <= DETECT_DONE;
    		 end
    		 DETECT_DONE:
    		 begin
    			  next_state <= WAIT;
    		 end
    		 WAIT:
    		 begin
    			  if(frame_done == 1'b1)
    					next_state <= IDLE;
    			  else
    			      next_state <= WAIT;
    		 end
    		 default:
    		 begin
    			  next_state <= IDLE;
    		 end
        endcase
    end 
    

    数字识别部分代码:

    								    //y      x1_l     x1_r     x2_l     x2_r
    localparam num_0 = 6'b10_1_1_1_1;   //2      1        1        1        1    
    localparam num_1 = 6'b01_1_0_1_0;   //1      1        0        1        0
    localparam num_2 = 6'b11_0_1_1_0;   //3      0        1        1        0
    localparam num_3 = 6'b11_0_1_0_1;   //3      0        1        0        1
    localparam num_4 = 6'b10_1_1_1_0;   //2      1        1        1        0
    localparam num_5 = 6'b11_1_0_0_1;   //3      1        0        0        1
    localparam num_6 = 6'b11_1_0_1_1;   //3      1        0        1        1
    localparam num_7 = 6'b10_0_1_1_0;   //2      0        1        0        1
    localparam num_8 = 6'b11_1_1_1_1;   //3      1        1        1        1
    localparam num_9 = 6'b11_1_1_0_1;   //3      1        1        0        1
    

    三、总体测试框图

    这里展示用于软件仿真测试的结构框图:
    在这里插入图片描述这里的部分输出仅仅为了方便观察仿真结果。
    全部verilog代码下载链接:https://download.csdn.net/download/qq_45906781/20326235

    展开全文
  • 基于FPGA的印刷体数字识别系统设计
  • 基于FPGA数字识别方案

    千次阅读 2020-05-02 21:51:57
    基于FPGA数字识别的实现 原理介绍 数字特征信息的提取基于打印体,如上图1,以图1数字5举例,红框是数字5的水平和竖直的上下左右边界。X1在竖直方向的2/5处的水平线,x2在竖直方向的2/3处的水平线,y在水平方的1/2...
  • 设计了以FPGA为主芯片对目标物体进行识别与跟踪的系统。采用MT9M011数字图像摄像头采集初始图像;利用基于模型匹配的Sobel边缘检测算法实现对目标物体的识别;运用基于边缘特征检测和基于区域特征检测相结合的跟踪算法...
  • FPGA模式识别数字检测

    千次阅读 2014-06-07 09:48:45
    这里简单的描述了,数字检测出来的方法。FPGA车牌识别的一部分。
  • 数字是人们日常生活中进行信息交流时不可缺少的信息载体,面对大量的数字如何让机器识别处理,包括身份证号识别、车牌号识别等就成为了一个研究点,同时,数字识别必然涉及到图像处理,本章我们通过数字特征识别入手...
  • 本颜色识别系统主要实现对几种典型颜色的自动识别。本设计基于SOPC技术,使用NiosII软核处理器实现,包括模拟和数字两个主要部分。
  • 对图像作边缘识别
  • 数字识别verilog代码,可以实现标准字体的数字识别
  • 文章目录一、环境准备二、训练神经网络三、编译神经网络的OpenCL程序四、FPGA进行神经网络加速实现手写数字识别 使用工具说明: Linux的虚拟机或者服务器 Quartus Standard 18.1 Intel SoC FPGA Embedded ...
  • 数字识别rtl.zip

    2021-04-12 13:00:38
    数字识别rtl.zip
  • 手写数字识别

    2018-12-14 09:14:25
    这是一款自动识别手写数字的系统,能自动识别数字,编译通过
  • 基于FPGA的手写数字BP神经网络研究与设计
  • 基于FPGA数字喷码识别产品取样系统研究.pdf
  • 基于FPGA平台,实现视频图像中的数字识别
  • FPGA 图像处理 verilog 基于FPGA数字图像处理原理及应用程序源代码
  • 数字信道化接收机具备大的瞬时带宽、较高的灵 敏度、大的动态范围,能够检测和处理同时到达的信号、准确的参数测量能力和一定的信号识别能力。直接信道化接收 机的运算量大且输出速率与采样速率相同,实现困难,后续...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,598
精华内容 2,239
关键字:

fpga数字识别

友情链接: 外部调用法.zip