从零开始的车牌识别课题设计(一)

第一章 本课题将用到的数字图像处理技术

车牌识别系统是计算机视频图像识别技术在车辆牌照识别中的一种应用,主要用到的技术是数字图像处理技术,数字图像处理是电子信息工程、通信工程等专业教学计划中的一门专业选修课,着重讲述图像处理的基本原理和算法设计。本篇将介绍车牌识别课题中将使用的数字图像处理方法及MATLAB实现。

为了减小图像处理的运算量,一般不直接对RGB 图像进行处理,而是将它转换成无彩色图像,二值图像和灰度图像都属于无彩色图像。

1.图像灰度化

灰度表示的图像中,每个像素有多个亮度等级。灰度化处理消除色调和饱和度信息,同时保留亮度。

将指定的真彩色图像 RGB 转换为灰度强度图像:

I = im2gray(RGB)

从零开始的车牌识别课题设计(一)

2.图像二值化

二值图像只有黑白两种等级亮度,二值化即把所有高于全局阈值的值替换为 1 并将所有其他值设置为 0。

从灰度图像 I 创建二值图像:

BW = imbinarize(I)

从零开始的车牌识别课题设计(一)

1.Radon 变换

Radon 变换计算图像矩阵在特定方向上的投影,若车牌图像倾斜,可对其进行不同角度的Radon 变换,其中投影积分最大的角度即是图像中最长直线的角度,这条直线往往就是目标车牌的长边之一。

MATLAB代码如下(示例) :

I=imread(pathfile);
theta = 0:180;
[R,~] = radon(I,theta);
%R 是矩阵,其中每列是基于 theta 中某一角度的 Radon 变换

2.边缘检测

边缘检测是图像目标识别、形状提取等图像分析系统中十分重要的基础,通过提取边缘可以将目标和背景分离开来。常用算子有Prewitt 算子、Sobel 算子和Roberts 算子。

使用sobel算子进行边缘检测:
BW = edge(I,method,threshold); %返回强度高于 threshold 的所有边缘。

MATLAB代码如下(示例) :

I=imread(pathfile);
I1=edge(I,'sobel',0.15,'both');%sobel算子,阈值为0.15
figure, imshow(I1);

运行结果:

从零开始的车牌识别课题设计(一)

1.均值滤波和中值滤波

均值滤波指把待滤波像素的邻域各像素的灰度平均值作为次像素的滤波后的灰度值,其算法简单,但需要以图像模糊的代价来减小噪声。

MATLAB代码如下(示例) :

A=imread(pathfile);
h = fspecial('average',hsize); %返回大小为 hsize 的平均值滤波器 h
B = imfilter(A,h); %使用多维滤波器 h 对多维数组 A 进行滤波,并在 B 中返回结果
figure, imshow(B);

中值滤波是指把以待滤波像某邻域窗口内像素的灰度值的中间值作为该像素的新灰度值,在一定条件下可以克服线性滤波方法(如邻域均值滤波)所带来的图像细节模糊,且在运算过程中不需要获取图像的统计特性。

对图像 I 执行二维中位数滤波:

B = medfilt2(A) % 默认每个输出像素包含输入图像中对应像素周围 3×3 邻域的中位数值
B = medfilt2(A,[m n]) %执行中位数滤波,其中每个输出像素包含输入图像中对应像素周围的 m×n 邻域中的中位数值。

2.腐蚀和膨胀

膨胀和腐蚀是数学形态学的基本操作。数学形态学的很多操作都是以膨胀和腐蚀为基础推导的。

膨胀:输出像素的值是所有输入像素值中的最大值。在二值图像中, 如果邻域中有一个像素的值为1,则输出像素的值为1。

使用结构元素 SE 膨胀灰度、二值或压缩二值图像 I:
J = imdilate(I,SE)

MATLAB代码如下(示例) :

se= strel('line',11,90); %创建一个平面线形结构元素
J = imdilate(I1,se);
subplot(121);imshow(I1);
subplot(122);imshow(J);

从零开始的车牌识别课题设计(一)
使用膨胀运算可以将像素加到对象的边缘,从而使断裂的图像桥接起来。

腐蚀:输出像素的值是所有输入像素值中的最小值。在二值图像中, 如果邻域中有一个像素的值为0,则输出像素的值为0。

MATLAB代码如下(示例) :

se=[1;1;1]; %创建一个平面线形结构元素
J1=imerode(I1,se);
subplot(121);imshow(I1);
subplot(122);imshow(J1);

从零开始的车牌识别课题设计(一)
腐蚀运算将腐蚀对象的像素减少,是一种消除边界点的过程,利用它可以消除图像中小且不感兴趣的元素。

3.开运算和闭运算

开运算可以断开粘连较少的元素和狭窄的间隙,消除小的干扰元素,一般使能够对象的轮廓变得光滑,可用于消除车牌中不感兴趣像素的干扰。

se=[1;1;1]; %创建线形结构元素
I2=imopen(J1,se); %对腐蚀后的图像开运算
subplot(121);imshow(J1);
subplot(122);imshow(I2);

运行结果:

从零开始的车牌识别课题设计(一)

闭运算同样使轮廓线更为光滑,不同的是它弥补轮廓线中的断裂,消除狭窄的间断和长细的鸿沟,填补小的孔洞,可用于扩大图像中有用信息

MATLAB代码如下(示例) :

se=strel('rectangle',[25,25]); %创建矩形结构元素
I2=imclose(J1,se); %填充腐蚀后的图像
subplot(121);imshow(J1);
subplot(122);imshow(I2);

从零开始的车牌识别课题设计(一)

以上就是今天要讲的内容,本文仅简单介绍了数字图像处理在本课题的基础应用及其MATLAB实现,接下来将介绍如何使用这些知识完成本课题的第一个模块。

Original: https://blog.csdn.net/u013157220/article/details/124318380
Author: 鼎实未成心尚苦
Title: 从零开始的车牌识别课题设计(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/641882/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球