matlab实现车牌识别(一)——每一步分析过程都包含

上一次数学建模大赛,我们小组利用matlab实现了对一般(清晰度有所保证)车牌进行识别,当时在做的时候确实遇到了很多问题(主要是网上的程序都是对于特定的图片才能识别,而且很多博主为了实现效果,悄悄的更改了模板库里的数据,是真的烦!)

为了方便大家对matlab图像识别有基本的了解,我利用暑假期间对参加数学建模三天所学的基本matlab图像处理方法给大家分享。

里面肯定还是有一些小问题的,望大家谅解~

第一步、实现车牌样本的读取

%先将车牌文件放置在E盘下,并且命名为’车牌样例‘
addpath E:\%将图片添加到搜索路径
MyYuanLaiPic = imread('E:\车牌样例.jpg');%读取jpg格式的图像 
%这里根据你图片的格式进行相应替换

 

第二步:进行灰度转化 

MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换

rgb2gray()函数是系统提供灰度转换函数

效果如下所示:

matlab实现车牌识别(一)——每一步分析过程都包含_第1张图片

ps:很多时候这种系统处理函数rgb2gray()的效果 是不竟如人意的,所以我们大部分时候都需要自己去设置函数对图像进行处理

这里就需要我们对RGB图像有一定的了解,我这里呢,就结合数组内容和matlab简单为大家介绍一下RGB图像。

所谓的RGB图像就是一个包含二维位置坐标信息和该坐标一维数组信息的三维数组(可能说的有点绕),我在下面画个图就好:

matlab实现车牌识别(一)——每一步分析过程都包含_第2张图片鉴于时间问题,我就用一个2*2*3的数组来表示。其实对ps有所了解的同学都知道R、G、B的取值都是介于0~255之间的,取值的多少关系到这个像素点的颜色呈现情况——不懂可以参考画图软件里的调色盘。

而灰度图像仅仅只是一个二维数组,每一个位置的值也是从0~255,也就是说从黑到白的一个渐变,每个像素点的值反映的是渐变程度(也就是灰度)

有不懂的,可以私下问我!

进行灰度转化就是一个三维数组向二维数组的转化,我这里就直接采用加权平均算法进行灰度处理:

 

 

 

[rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数    
MidGrayPic = zeros(rows , cols);%用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像    
MidGrayPic = uint8(MidGrayPic);%将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的     
for i = 1:rows    
    for j = 1:cols    
        sum = 0;    
        for k = 1:colors    
            sum = sum + MyYuanLaiPic(i , j , k) / 3;%进行转化的关键公式,sum每次都因为后面的数字而不能超过255    
        end    
        MidGrayPic(i , j) = sum;    
    end    
end    
%imwrite(MidGrayPic , 'E:\车牌样例(1).png' , 'png');   %写入到一个新的文件当中 
%figure(2)
%subplot(311),imshow(MyYuanLaiPic);
%subplot(312),imshow(MyFirstGrayPic);
%subplot(313),imshow(MidGrayPic);

其实进行处理之后的图片与利用系统函数处理的图片差别不大,为了使之后的步骤简化,我们直接调用matlab自带的imadjust函数,进行快速调灰度。参数自调!

ad=imadjust( MidGrayPic,[0;0.6],[0;1]);%进行灰度的调整
%figure(3)
%subplot(311),imshow(MyYuanLaiPic);
%subplot(312),imshow(MyFirstGrayPic);
%subplot(313),imshow(ad);

matlab实现车牌识别(一)——每一步分析过程都包含_第3张图片matlab实现车牌识别(一)——每一步分析过程都包含_第4张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上面两个图就是对比图,在第二张图上还是可以看到效果明显的。

最近时间比较紧,还在参加电子设计大赛(那个狗屁stm32f429芯片的编程已经让我懵逼了!)暂时先写这么多,以后在写点!

 

你可能感兴趣的:(s,x,j)