闲庭信步使用图像验证平台加速FPGA的开发:第三十一课——车牌识别的FPGA实现(3)车牌字符分割预处理
(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)
上篇我们完成了车牌边界的定位和车牌字符区域的定位,然后我们就要开始对车牌上的每个字符进行定位。按照如下图片的讲解,字符区域的定位也需要预处理,首先取图片的R通道,然后进行二值化,再进行腐蚀和膨胀,预处理完毕的图片就可以进行每个字符上下左右边界的定位了。
上篇我们已经完成了车牌整个字符区域的定位,那我们只对该区域的图片进行处理即可,外围的图片忽略即可。所以在\src\char_segmentation文件夹上新建limit_char_area.sv文件,更加上篇实现的车牌字符区域的信息,只选择车牌字符区域内的图片,外围的图片直接给零值即可,如下65-72行的模块实现了该功能。
然后对车牌字符区域的图像进行预处理即可,主要完成R通道的二值化,腐蚀和膨胀。如下例化了plate_location,limit_char_area,binary,erosion,dilation等模块。这个可以通过控制img_sel参数选择不同模块图像的输出,由于一帧图像只能选择一个参数值,所以如果要保存五幅图像,就要处理五帧图像。
在tb_image_sim文件中,初始化了关联数组car和style。
在下一个initial块中,分别将预处理的五帧图片进行保存。这儿有一点需要注意,216行是对队列进行清空的操作,否则图片数据会继续往后存储,那保存的五幅图片都是R通道的图片。
双击sim文件夹下的top_tb.bat文件,完成系统的自动化仿真。
因为要处理五幅图像,处理时间较长,modelsim的Transcript有如下的打印信息。
最后我们打开img/output文件夹,就可以看到预处理每一步的处理结果。
当然大家也可以修改car_index选择不同的值重新进行仿真,比如car_index=17重新进行仿真,img/output文件夹下的图片如下。这幅图片处理的就不太干净,还有一下多余的信息,有可能会影响后续的处理结果。