闲庭信步使用图像验证平台加速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.pswp.cn/bicheng/90295.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90295.shtml

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

相关文章

03_java_运行机制

1. java执行流程2. 什么是编译3. 什么是运行

鸿蒙卡片开发保姆级教程

卡片 1. 卡片概念 什么是卡片?卡片用来显示或者提示一些基本信息或者进行一些基本操作。注意不能做重逻辑,所有重要逻辑全部交给应用如果是元服务如何唤醒?因为元服务不提供桌面应用图标,我们可以通过用户手动的方式在桌面上添加一…

反向传播及优化器

反向传播(Backpropagation)反向传播是计算梯度的算法,核心作用是高效求解 “损失函数对模型所有参数的偏导数”(即梯度)。没有反向传播,深度学习的大规模训练几乎不可能实现。 整个过程像 “从终点回溯到起…

【机器学习深度学习】生成式模型的评估与验证

目录 前言 1. 主观评估:以人为本的质量判断 1.1 什么是主观评估? 1.2 主观评估的核心流程 1.3 主观评估的优缺点 2. 客观评估:量化的性能衡量 2.1 什么是客观评估? 2.2 常见的客观评估指标 文本生成 图像生成 多模态生…

Linux文件——Ext2文件系统(3)_软硬链接

文章目录文件的软硬链接软链接硬链接软硬链接对比软硬链接应用软硬链接注意事项总结文件的软硬链接 本篇文章将重点讲解文件系统中的一个重要的知识点: 即文件的软硬链接。 软链接 对于软链接的讲解,我们先来使用一个指令看看效果:ln -s 被…

Java SE:类与对象的认识

Java中的类与对象:构建程序世界的基石 在Java编程的世界里,类与对象是面向对象编程(OOP)的核心概念,它们就像构建大厦的砖瓦,支撑起整个程序的结构。理解类与对象,是掌握Java编程的关键一步。 类…

Hexo - 免费搭建个人博客03 - 将个人博客托管到github,个人博客公开给大家访问

导言我的博客:https://q164129345.github.io/ 既然要将个人博客托管到github,首先我们肯定要有一个github账户。另外也需要在电脑上安装另外一个著名的代码管理工具git。 一、创建github仓库二、在Hexo设置部署的内容# Deployment## Docs: https://hexo.…

一次Oracle集群脑裂问题分析处理

问题描述 填写问题的基础信息。 系统名称 数据库集群 IP地址 xxxxxx 操作系统 Linux 数据库 Oracle 11.2.0.4 症状表现 问题的症状表现如下 4月26号晚22点02分左右,HIS集群发生脑裂,十几分钟后(22.18)一节点集群率先获…

0基础法考随手笔记 02(刑诉法专题04 辩护与代理)

0基础法考随手笔记 02(刑诉法专题04 辩护与代理) 1.值班律师相关权力义务2. 3. 4.什么是强制医疗 注意:为强制医疗指派的律师,是诉讼代理人,不是辩护人,因为此人不会被追究刑事责任。 “强制医疗” 是刑事诉…

HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析

引言随着音频技术的不断发展,多通道音频处理和多接口兼容性成为现代音频设备的重要需求。本文将介绍一款基于XMOS XU316技术的多通道USB HiFi音频解码器固件——HF86611_VC1/HF86611Q_VC1,这是一款专为多接口HiFi音频应用设计的软件解决方案。产品概述HF…

python---列表(List)

文章目录创建列表基本操作访问元素(索引)切片操作修改列表常用方法列表推导式多维列表列表是 Python 中最基本、最常用的数据结构之一,它是一个有序的可变集合,可以包含不同类型的元素。创建列表 # 空列表 empty_list [] empty_…

ESP32-S3学习笔记<3>:UART的应用

ESP32-S3学习笔记<3>:UART的应用1. 头文件包含2. UART的配置2.1 uart_num的选择2.2 uart_config的设定2.2.1 baud_rate/波特率设置2.2.2 data_bits/数据位数设置2.2.3 parity/奇偶校验位设置2.2.4 stop_bits/停止位设置2.2.5 flow_ctrl/流控位…

【Vue3】加载高德地图案例

官方API:展示地图-入门教程-地图 JS API 2.0 | 高德地图API 1、获取高德Key 参考:准备-地图 JS API 2.0 | 高德地图API 2、创建工程 npm create vitelatest 3、下载依赖集运行项目 npm install npm i amap/amap-jsapi-loader --save npm run dev 4、编写核心…

【工具】Pycharm隐藏侧边灯泡提示

问题描述 在Pycharm中,每行前面很容易出现一个小灯泡,有时候很影响操作,需要将其取消掉设置方法打开设置 按 CtrlAltS 打开设置对话框或者通过菜单 File → Settings(在 macOS 上是 PyCharm → Preferences)导航到外观…

XSS相关理解

由于本人对一小部分dom型xss、原型链污染和存储型xss理解不够透彻,因此在本篇文章中原型链污染和存储型xss偏重进行概念理解或简单的代码理解,随后会慢慢补充 文章目录1 XSS概述1.1 什么是XSS?1.2 XSS主要分三种类型2 XSS基础2.1 XSS基础练习…

Odoo:免费开源的金属制品行业ERP管理软件

引言开源智造Odoo数字化解决方案专家团队意识到,在当今全球市场中,将盈利能力和竞争力最大化的机会促使许多金属制品制造商投资于推进业务发展的新技术。金属制品会计软件是企业用来处理他们业务和增加利润的解决方案。某金属制品加工工艺流程图&#xf…

Ubuntu22.04配置GTest测试框架

前言 鸿蒙系统的代码仓库使用GTest作为单元测试的工具。特性开发时,需要写demo以验证开发思路。因此有必要搭建GTest开发环境配合鸿蒙特性开发做开发demo。 我测试环境是wsl2 Ubuntu22.04 LTS。 搭建过程 安装必备C组件 sudo apt install -y unzip g gcc cmake …

学习日志15 python

1 filter() 函数filter(function, iterable)filter函数是python中的高阶函数, 第一个参数是一个筛选函数, 第二个参数是一个可迭代对象, 返回的是一个生成器类型, 可以通过next获取值。filter() 函数是 Python 内置的高阶函数,其主要功能是对可迭代对象中的每个元素…

Linux 环境下安装 MySQL 8.0.34 二进制 详细教程 附docker+k8s启动

文章目录Linux 环境下安装 MySQL 8.0(二进制)详细教程准备工作安装依赖包下载并解压 MySQL下载 MySQL 二进制包解压 MySQL移动目录并创建 MySQL 用户配置 MySQL配置数据目录与日志目录编辑配置文件 /etc/my.cnf初始化 MySQL 数据库配置启动脚本与环境变量…

HTML ISO-8859-1: 完全解析

HTML ISO-8859-1: 完全解析 引言 ISO-8859-1,又称为 Latin-1,是一种广泛使用的字符编码标准,特别是在HTML文档中。本文将详细介绍ISO-8859-1编码的特点、应用场景以及如何在使用HTML时正确地使用ISO-8859-1编码。 ISO-8859-1编码概述 定义 ISO-8859-1编码是一种单字节编…