FPGA实现数字识别

FPGA实现数字识别文章目录一、数字识别方法二、画线取交点特征的方法三、总体测试框图提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、数字识别方法二、画线取交点特征的方法三、总体测试框图提示:以下是本篇文章正文内容,下面案例可供参考一、数字识别方法目前数字识别的方法有:模板匹配、画线取交点特征、cnn等,都是对数字的相关特征进行提取比较。本文介绍其中的画线取交点特征的方法,这种方法实现简单,适合刚开始学习的小白。二、画线取交点特征的方法此方法引用自:https://www.cnb.


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


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

一、数字识别方法

目前数字识别的方法有:模板匹配、画线取交点特征、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实现数字识别分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27223.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注