Matlab渣土车车牌图像提取和分割技术研究(8)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

Matlab渣土车车牌图像提取和分割技术研究(8)


             end    
             PY2=MaxY;
             while ((B_y(PY2,1)>=10)&&(PY2<y))
                    PY2=PY2+1;
             end
             IY=I(PY1+1:PY2-1,:,:);

             %%%%%% X方向 %%%%%%%%%
             B_x=zeros(1,x);%进一步确定x方向的车牌区域
             for j=1:x
                 for i=PY1:PY2
                        if(myI(i,j,1)==1)
                            B_x(1,j)= B_x(1,j)+1;               
                        end  
                 end       
             end

             PX1=1;
             while ((B_x(1,PX1)<3)&&(PX1<x))
                   PX1=PX1+1;
             end    
             PX2=x;
             while ((B_x(1,PX2)<3)&&(PX2>PX1))
                    PX2=PX2-1;
             end
             PX1=PX1-1;%对车牌区域的校正
             PX2=PX2+1;
             dw=I(PY1-2:PY2-2,PX1:PX2,:);
             t=toc;
%显示行方向的切割结果
            figure(6),imshow(IY),title('行方向合理区域');   
%显示完美切割结果
            figure(7),imshow(dw),title('定位剪切后的彩色车牌图像') ;    
            imwrite(dw,'dw.jpg');     End
算法的主要步骤如下:程序读入这个二值图像之后,开始检测车牌区域。首先生成一个y行1列的全零矩阵,用来保存二值图像中白色像素点的个数。然后按行扫描二值图像,计算每个像素行白色像素点的个数,保存在数组中。然后在数组中取到白色像素点最多的值的Y轴的坐标。然后进行搜索,只要当前满足白色像素点个数大于一个设定的阈值就认为它还是处于车牌区域,然后此Y轴坐标自减一,继续判断。知道跳出这个循环,表明已经不满足条件,就默认已经跳出车牌区域,所以这时候Y坐标的值就是车牌区域的最上端的坐标。第一个参数就求出来了。同理可以求到车牌区域最下端的Y轴坐标,这样就可以先把车牌区域Y方向切割出来。然后再处理X轴方向的,算法是一样的,就不做解释。具体流程图如下(图3-8): (责任编辑:qin)