彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。
%将彩色图像转换为黑白并显示
Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Sgray),title('原始黑白图像');
图2.2原始黑白图像
2.3对原始图像进行开操作得到图像背景图像: s=strel('disk',13);%strei函数
Bgray=imopen(Sgray,s);%打开sgray s图像
figure,imshow(Bgray);title('背景图像');%输出背景图像
图2.3背景图像
6
2.4灰度图像与背景图像作减法,对图像进行增强处理: Egray=imsubtract(Sgray,Bgray);%两幅图相减
figure,imshow(Egray);title('增强黑白图像');%输出黑白图像
图2.4黑白图像
2.5取得最佳阈值,将图像二值化:
二值图像是指整幅图像画面内仅黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。
fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22);
figure,imshow(bw2);title('图像二值化');%得到二值图像
7
图2.5二值图像
2.6边缘检测:
两个具有不同灰度值的相邻区域之间总存在边缘,边缘就是灰度值不连续的结果,是图像分割、纹理特征提取和形状特征提取等图像分析的基础。为了对有意义的边缘点进行分类,与这个点相联系的灰度级必须比在这一点的背景上变换更有效,我们通过门限方法来决定一个值是否有效。所以,如果一个点的二维一阶导数比指定的门限大,我们就定义图像中的次点是一个边缘点,一组这样的依据事先定好的连接准则相连的边缘点就定义为一条边缘。经过一阶的导数的边缘检测,所求的一阶导数高于某个阈值,则确定该点为边缘点,这样会导致检测的边缘点太多。可以通过求梯度局部最大值对应的点,并认定为边缘点,去除非局部最大值,可以检测出精确的边缘。一阶导数的局部最大值对应二阶导数的零交叉点,这样通过找图像强度的二阶导数的零交叉点就能找到精确边缘点。
grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘
8
图2.6像边缘提取
2.7对得到图像作开操作进行滤波:
数学形态非线性滤波,可以用于抑制噪声,进行特征提取、边缘检测、图像分割等图像处理问题。腐蚀是一种消除边界点的过程,结果是使目标缩小,孔洞增大,因而可有效的消除孤立噪声点;膨胀是将与目标物体接触的所有背景点合并到物体中的过程,结果是使目标增大,孔洞缩小,可填补目标物体中的空洞,形成连通域。先腐蚀后膨胀的过程称为开运算,它具有消除细小物体,并在纤细处分离物体和平滑较大物体边界的作用;先膨胀后腐蚀的过程称为闭运算,具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。对图像做了开运算和闭运算,闭运算可以使图像的轮廓线更为光滑,它通常用来消掉狭窄的间断和长细的鸿沟,消除小的孔洞,并弥补轮廓线中的断裂。 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像 bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算 figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像 bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算 figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像
9
图2.7.1闭运算的图像 图2.7.2开运算的图像
图2.7.3开运算的图像
2.8对二值图像进行区域提取,并计算区域特征参数。进行区域特征参数比较,提取车牌区域:
a.对图像每个区域进行标记,然后计算每个区域的图像特征参数:区域中心位置、最小包含矩形、面积。
[L,num] = bwlabel(bg2,8);%标注二进制图像中已连接的部分 Feastats = imfeature(L,'basic');%计算图像区域的特征尺寸 Area=[Feastats.Area];%区域面积
BoundingBox=[Feastats.BoundingBox];%[x y width height]车牌的框架大小 RGB = label2rgb(L, 'spring', 'k', 'shuffle'); %标志图像向RGB图像转换 figure,imshow(RGB);title('图像彩色标记');%输出框架的彩色图像
10