车牌字符提取
本次主要是对车牌进行提取,将车牌中的数字提取出来,相对较为简单的图像处理,通过简单的腐蚀膨胀即可
原图如下:
处理如下:
第一次整体分割:
第二次整体处理如下:
最后效果如下:
其代码如下:
i=imread('KPT.jpg'); i=rgb2gray(i); %i=imadjust(i,[0.3 0.6], [0.1 1], 5); i=im2bw(i,0.7); [m,n]=size(i); %四周置黑 %i=medfilt2(i, [7 7]); i(1:50,1:n)=0; i(m-49:m,1:n)=0; i(1:m,1:50)=0; i(1:m,n-49:n)=0; figure(1),subplot(2,2,1),imshow(i),title('after pre-process') %关键函数:imerode();imreconstruct();imsubtract(); %腐蚀 se=ones(1,71); marker=imerode(i,se); figure(1),subplot(2,2,2),imshow(marker),title('第一次腐蚀') %重构 f_obj=imreconstruct(marker,i); figure(1),subplot(2,2,3),imshow(f_obj),title('第一次重构') %相减 f_thr=imsubtract(i,f_obj); figure(1),subplot(2,2,4),imshow(f_thr),title('第一次相减') %去除噪声点 %首先先去除大的噪声点,通过先提取出大的噪声点再进行相减 %提取大的噪声点 f1=f_thr; f1=ordfilt2(f1,1,ones(6,6));% 最小值滤波 se=ones(1,1); f1=imerode(f1,se); SE=strel('disk',2); f2=imerode(f1,SE); figure(2),subplot(2,2,1),imshow(f1),title('第二次腐蚀') f3=imreconstruct(f2,f_thr); figure(2),subplot(2,2,2),imshow(f3),title('第二次重构') %通过相减得出小噪声点加上车牌号 f4=imsubtract(f_thr,f3); figure(2),subplot(2,2,3),imshow(f4),title('第二次相减') %得出最后车牌号图像 f5=bwareaopen(f4,50); figure(2),subplot(2,2,4),imshow(f5),title('车牌号') figure(3),subplot(1,1,1),imshow(f5),title('最终得出图像')
效果如下所示