本工程对图片环境的要求比较高,不能有同色的杂色干扰(所以说是理想状态下的)
1.原始车牌数据色彩空间转换RGB2YCbCr
PS:这里解释下为啥用cbcr色彩空间,RGB三色是颜色的三个色域,而YCBCR色彩空间只是在CBCR上对颜色有影响,检测的是cbcr对红和蓝色的颜色的偏差,运算量少了一个通道,特别是在高像素的运算中这样的处理必然是对速度的提升有很大的帮助。
2.节选图片进行颜色阈值提取3.在MATLAB仿真,生成图片验证
4.找到合适的颜色阈值后,颜色在阈值范围内,数据为1,其他为0
(这里用二值图片进行显示)进行FPGA的算法实现
颜色阈值提取:
clearallcloseallclcimg=imread('chepai_test1.jpg'); ycbcr=rgb2ycbcr(img); y=ycbcr(:,:,1); cb=ycbcr(:,:,2); cr=ycbcr(:,:,3); min_cb=min(cb(:)); min_cr=min(cr(:)); max_cb=max(cb(:)); max_cr=max(cr(:)); disp(['min_cb=',num2str(min_cb)]); disp(['min_cr=',num2str(min_cr)]); disp(['max_cb=',num2str(max_cb)]); disp(['max_cr=',num2str(max_cr)]);
FPGA算法仿真:
clearallcloseallclcimg_rgb=imread('chepai.jpg'); img_ycbcr=rgb2ycbcr(img_rgb); [a,b,c]=size(img_rgb); y=img_ycbcr(:,:,1); cb=img_ycbcr(:,:,2); cr=img_ycbcr(:,:,3); img=imread('chepai_test1.jpg'); ycbcr=rgb2ycbcr(img); y1=ycbcr(:,:,1); cb1=ycbcr(:,:,2); cr1=ycbcr(:,:,3); min_cb=min(cb1(:)); min_cr=min(cr1(:)); max_cb=max(cb1(:)); max_cr=max(cr1(:)); fori=1:aforj=1:bif(cb(i,j)>min_cb&&cb(i,j)<max_cb&&cr(i,j)>min_cr&&cr(i,j)<max_cr) p(i,j) =1; elsep(i,j) =0; endendendfigure, subplot(221),imshow(img_rgb);title('img_ycbcr'); subplot(222),imshow(img_ycbcr);title('img_ycbcr'); subplot(223),imshow(p);title('find'); disp(['min_cb=',num2str(min_cb)]); disp(['min_cr=',num2str(min_cr)]); disp(['max_cb=',num2str(max_cb)]); disp(['max_cr=',num2str(max_cr)]); disp('=====finish=====');
FPGA算法实现:
/*min_cb=165min_cr=104max_cb=183max_cr=114*/moduleimg_car( inputclk, input [7 : 0] i_cb_8b, input [7 : 0] i_cr_8b, outputrego_bit_1b, inputi_h_sync, inputi_v_sync, inputi_data_en, outputrego_h_sync, outputrego_v_sync, outputrego_data_en ); parametermin_cb=165; parametermin_cr=104; parametermax_cb=183; parametermax_cr=114; regh_sync_delay; regv_sync_delay; regdata_en_delay; always@(posedgeclk)beginif(i_cb_8b<max_cb&&i_cb_8b>min_cb&&i_cr_8b<max_cr&&i_cr_8b>min_cr)begino_bit_1b<=1'b1;endelsebegino_bit_1b<=1'b0;endendalways@(posedgeclk)begino_h_sync<=i_h_sync; o_v_sync<=i_v_sync; o_data_en<=i_data_en; endendmodule
我这里用了modelsim搭建的图像仿真平台对图片进行数据输出,进行仿真测试(下板子的话,vivado速度太慢了。。。)、
这里用到的仿真平台后来争取老师的同意再给出来。
处理的图片效果,出现了一点椒盐噪声,可以后期用滤波处理,用算法把边沿处理下,做到车牌的定位识别。