news 2026/4/25 17:11:19

基于FPGA的车牌识别系统:包含常规图像处理算法与bit流烧录实验记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于FPGA的车牌识别系统:包含常规图像处理算法与bit流烧录实验记录

基于FPGA的车牌识别,其中包括常规FPGA图像处理算法: rgb转yuv, sobel边缘检测, 腐蚀膨胀, 特征值提取与卷积模板匹配。 有bit流可以直接烧录实验。 保证无错误,完好,2018.3vivado版本,正点达芬奇Pro100t,板卡也可以自己更改移植一下。 所以建的IP都有截图记录下来。

最近在折腾FPGA图像处理时整了个有意思的活——基于正点原子达芬奇Pro100t开发板的车牌识别系统。这玩意儿跑在2018.3版本的Vivado环境里,实测能用且效果不错,顺手把IP核创建过程都截了图存档。

先从摄像头采集说起,OV5640的RGB565输出需要转YUV。这里用Vivado的HLS做了个转换模块,核心算法其实就三行代码:

Y = (76 * R + 150 * G + 29 * B) >> 8; U = (-43 * R - 85 * G + 128 * B) >> 8 + 128; V = (128 * R - 107 * G - 21 * B) >> 8 + 128;

但硬件实现时得注意时序对齐,我专门用Shift Register搭了三级流水线。生成的IP核配置界面截图里能看到参数化的位宽设置,方便移植时调整。

边缘检测用了改进版Sobel算子,X/Y方向的卷积核分别配置成:

[-1 0 1 -2 0 2 -1 0 1] [-1 -2 -1 0 0 0 1 2 1]

实际在FPGA里实现时发现直接用DSP48做累加会溢出,后来改成符号位扩展+截断处理。Vivado生成的原理图里能看到3x3窗口生成模块连着两个卷积计算单元,这个结构后来复用到了模板匹配环节。

形态学处理阶段,腐蚀膨胀操作写了段参数化的Verilog代码:

always @(posedge clk) begin if(en) begin dilate_out <= (window[0][0] | window[0][1] | ... | window[2][2]); erode_out <= (window[0][0] & window[0][1] & ... & window[2][2]); end end

这里有个坑——结构元素大小别超过3x3,否则时序容易崩。实测车牌区域经过五次膨胀三次腐蚀后,连通域效果最佳。

基于FPGA的车牌识别,其中包括常规FPGA图像处理算法: rgb转yuv, sobel边缘检测, 腐蚀膨胀, 特征值提取与卷积模板匹配。 有bit流可以直接烧录实验。 保证无错误,完好,2018.3vivado版本,正点达芬奇Pro100t,板卡也可以自己更改移植一下。 所以建的IP都有截图记录下来。

特征值提取部分搞了个动态阈值算法,根据图像亮度分布自动调整二值化门限。具体是用Histogram统计模块找像素分布拐点,这部分代码里用到了双端口Block RAM做统计缓存:

always @(posedge clk) begin if(hist_we) begin hist_ram[bin_addr] <= hist_ram[bin_addr] + 1; end end

最后的模板匹配环节,预存了各省份简称的12x24点阵字模。卷积时采用汉明距离代替传统相关运算,这样在Xilinx FPGA上可以用LUT实现异或逻辑,实测速度比用DSP快三倍。

整个工程编译后资源占用情况:LUT用了37%,BRAM用了62%,时序收敛在480MHz。实际测试时从图像输入到车牌输出延迟8个时钟周期,挂上HDMI显示模块能看到实时处理效果。

移植到其他板卡主要注意两点:1. 修改时钟约束文件 2. 调整VDMA的帧存地址范围。源码包里的ip_repo文件夹已经包含所有自定义IP核,直接导入Vivado就能用。烧录bitstream后记得用ATK-DAP给DDR3初始化,不然图像缓存会挂掉。

效果展示视频里能看到,普通小车牌在阴天环境下识别率大约85%,夜间开补光灯能提到92%。核心代码和IP核截图都扔在Github上了,需要自取的朋友评论区留邮箱。下次打算试试用zynq的PS端跑神经网络做字符识别,应该能再提一波准确率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 17:11:13

沐界浏览器-轻量 · 多标签 · 为鸿蒙设备打造的网页浏览体验*

沐界浏览器 Mujie Browser 轻量 多标签 为鸿蒙设备打造的网页浏览体验 标签&#xff08;便于检索与分类&#xff09; HarmonyOS OpenHarmony ArkTS 鸿蒙 鸿蒙应用 HarmonyOS应用 ArkUI Stage模型 元服务生态 多设备 面向设备产品形态HarmonyOS 手机 / 平板 / 2i…

作者头像 李华
网站建设 2026/4/25 17:10:42

机器学习领域被低估的10本实战好书推荐

1. 为什么需要关注被低估的机器学习书籍&#xff1f;在机器学习领域&#xff0c;大多数学习者都会从《Pattern Recognition and Machine Learning》或《Deep Learning》这类经典教材入门。但从业五年后我发现&#xff0c;真正改变我技术认知的往往是那些鲜少出现在推荐榜单上的…

作者头像 李华
网站建设 2026/4/25 17:10:07

Flowable工作流中基于动态部门与角色组合的审批人精准指派方案

1. 动态审批人指派的核心挑战 在企业级工作流应用中&#xff0c;最常见的痛点莫过于如何实现动态精准指派。想象这样一个场景&#xff1a;财务部的张三提交差旅报销单时&#xff0c;系统需要自动找到财务部的部门经理李四作为审批人&#xff1b;而市场部的王五提交同样类型的申…

作者头像 李华
网站建设 2026/4/25 17:08:50

安卓应用安全下载终极方案:APKMirror客户端完全指南

安卓应用安全下载终极方案&#xff1a;APKMirror客户端完全指南 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 你是否曾经为了下载某个特定版本的安卓应用而苦恼&#xff1f;在互联网上寻找安全可靠的APK文件就像在雷区中行走&am…

作者头像 李华