当前位置: 首页 > news >正文

闲庭信步使用图像验证平台加速FPGA的开发:第三十二课——车牌识别的FPGA实现(4)车牌字符的分割定位

 (本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)

上篇我们完成了车牌字符分割定位的预处理,本篇就完成车牌字符的分割。

车牌字符的上下边界比较容易定位,其实在30课的图像字符定位中基本完成了字符上下区域的定位,这儿进一步进行精细的定位。在车牌字符以外的区域,图像数据全是0,在有字符的区域,相邻图像数据开始有0和1的变化,我们假设一行图像数据中有threshold次相邻图像数据的变化,如果第一次达到这个要求,那这一行就是字符的上边界,如果最后一次达到这个要求,那这一行就是字符的下边界。

在\src\char_segmentation文件夹下新建char_horizontal_location.sv文件,完成字符上下边界的定位。boarder_flag信号用来判断上下边界,当boarder_flag==0且jump_cnt达到threshold,那这一行就是上边界,如果boarder_flag==1且jump_cnt达到threshold,那这一行就是下边界,当然下边界会一直更新,到最后一行我们把最后更新的那行当成下边界。

车牌的字符有7个加一个点,左右边界就是把这八个区域分割开。看图片,把八个字符分开还是挺容易的,字符直接都是空白的区域,我们可以将每列的数据相加求和,最后对相邻两列的数据进行比对和判断,如果上一列是0,这一列不是0,那这一列就是一个字符的左边界;如果上一列不是0,这一列是0,那这一列就是一个字符的右边界。同时要盘点一个字符左右边界的宽度,如果宽度太小也可以是误判,比如“川”“沪”“皖”等左右结构的字

在\src\char_segmentation文件夹下新建char_vertical_location.sv文件,如下用组合逻辑实时计算字符的宽度和左右边界。

如下完成一幅图像每列数据的求和,并在最后一行时候就求和的结果从数组中读出来。

如下实现了一个字符左右边界的判断和记录,需要注意的就是一些特殊的字符和第二字符点的判断。

新建一个char_sgm_out.sv,用来实现将每个字符的区域在图片上显示出来。

在\src\char_segmentation文件夹下新建char_segmentation.sv,例化车牌字符分割相关的模块。如下所示。

在top文件中例化plate_location模块和char_segmentation模块。

在tb_image_sim文件中,完成图片的绘制。

双击sim文件夹下的top_tb.bat文件,完成系统的自动化仿真。

最后打开img文件夹下的output文件夹,可以看到分割的图片。

并不是所有的图片的字符都能识别并正确的分割,如下的一幅图片,由于底部的信号没有完全消除,导致字符1左边多识别了一个字符,从而将第一个字符“京”挤出来存储的数组。

卷大多数图片还是能正确分割的,如下所示。

http://www.dtcms.com/a/293897.html

相关文章:

  • 基于Tornado的WebSocket实时聊天系统:从零到一构建与解析
  • 简单理解现代Web应用架构:从简单到企业级
  • 棱镜技术在光谱相机中应用
  • 【Unity实战100例】Unity资源下载系统开发流程详解(移动端、PC端 ,局域网控制台服务)
  • K8s:离线部署Kubernetes1.26.12及采用外部Harbor
  • DApp的未来发展趋势是什么?
  • solidity从入门到精通 第四章:智能合约的生命周期
  • 糖尿病数据分析:血压与年龄关系可视化
  • 二重循环之练习输入行数,打印等腰三角形
  • 同一个端口无法同时配置基于 server_name 的 HTTP(非加密)和 HTTPS(加密)
  • 【矩阵专题】Leetcode73.矩阵置零
  • 西门子 S7-1500分布式 I/O通信 :PROFINET IO 与 PROFIBUS DP详解(下)
  • 9、STM32的启动过程
  • Ubuntu系统下FFmpeg源码编译安装
  • 面试150 建立四叉树
  • 电脑32位系统能改64位系统吗
  • Linux下的lcd屏幕显示操作
  • 【前端】【Vue DevTools】Vue DevTools 进阶:用 Trae / Cursor 替换 VSCode 打开文件(跳转行列无误)
  • 直播一体机技术方案解析:基于RK3588S的硬件架构特性​
  • 7.23 减肥感悟
  • 为什么IMU是无人机稳定控制的的核心?
  • 深入解析Hive SQL转MapReduce的编译原理:从AST抽象语法树到Operator执行树
  • 无人机光伏巡检误检率↓78%!陌讯多模态融合算法实战解析
  • 【趣味解读】淘宝登录的前后端交互机制:Cookie-Session 如何保障你的账户安全?
  • 【网络编程】二、socket编程
  • 趣玩-Ollama-Llm-Chatrbot
  • 前端开发 React 状态优化
  • readelf -d a.out | vim - 和 readelf -d a.out | vim 有什么区别?
  • PyTorch武侠演义 第一卷:初入江湖 第5章:玉如意的秘密
  • gig-gitignore工具实战开发(一):项目愿景与蓝图规划