机器视觉基本算法介绍和应用


摘要—我们生活在五彩斑斓的世界中,每一个动人的瞬间,都可以描绘为一副图像。人类和大多数动物都可以很轻松的使用眼睛看到如此美丽的世界,想让冷冰冰的机器看到图形,人类发明了摄像机,为了让机器看懂图像,许多科学家已经奋斗了好几十年。本文将介绍基础的图像处理算法,包括图像的灰度化,二值化以及基于范数[1]的模板匹配识别算法,并将介绍的方法用于简易车牌识别系统。

I. 引言

机器人诞生到现在,经历了多次版本迭代仍存在一系列问题。机器视觉发展缓慢是妨碍机器人发展的重要障碍之一。为了更为快速的壮大机器人视觉研究团队,本文介绍了图像的构成,图像处理基本算法,识别基本算法,让读者更快速了解机器视觉的原理,最后在简易车牌识别系统中应用示例。

II.图像处理原理

本章主要介绍计算机存储图像的方式和图像处理的基本算法。

    A.图像的构成

       1)早期的黑白图像:

Figure 1. 灰度图像的存储

自然界中的颜色变化的连续的但是计算机由于存储空间和运算能力的限制,无法描述无穷种颜色,因此只能舍弃一部分内容将连续的颜色空间离散化。最简单的图像就是二值图,用一个二进制位即可描述。现在,计算机的飞速发展,存储图像的二进制位已经由一位扩展到八位(一个字节)。因此,图像的一个像素的值域为[0,255],图像的起始坐标为左上角。如图1所示。

       2)彩色图像的构成:

Figure 2. 彩色图像的存储

人类看到的图像的颜色不仅仅局限于灰色的夜晚,也能看见七色彩虹。通过科学家的努力,得出以下结论:自然界的可见光都可以由色光三原色:红、绿、蓝(RGB)混合而成。因此图像上的一个像素即可用一个3维向量表示,每一维的值域和灰度图一样,都是[0,255]。如图2为部分图像的表示。

    B.图像处理基本算法

       1)彩色图像的灰度化和二值化:

彩色图像的每个像素都是3维的向量,包含大量信息,很多时候,这些信息对于特定的任务都是没有意义的。为了降低运算量,通常会压缩通道数和压缩每个通道的值域。

Figure 3. 三种图像对比

在图3中,人类的视觉可以很容易的分辨出彩色车牌里的符号、灰度车牌的符号和二值图的车牌符号。因此,对于字符识别这个任务而言,二值图像的车牌的信息就已足够。

彩色图像转化为灰度图像通常采用公式(1)计算

其中Gray表示灰度,R为彩色图像的红色通道,G为彩色图像的绿色通道,B为彩色图像的蓝色通道,i,j分别表示图像的横坐标和纵坐标。

根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按公式(2)对RGB三分量进行加权平均能得到加权灰度图像。

其中λ为阈值,需要人为给定。

2) 二值图像腐蚀膨胀

腐蚀可以定义为如下运算:

其中A为原图,A^'为结果图,B为算子。

腐蚀算法:使用一个n×n结构算子去扫描图像中的每一个像素。用算子元素与其覆盖的二值图像做“与”操作,如果都为1,这图像的该像素为1,否则为0。

运算的伪代码如下:

Figure 4. 二值图的腐蚀过程

如图4所示开始运算时,A中蓝色区域与B算子执行与运算。最终结果为A^'。二值图的腐蚀操作可以缩小亮区。如图5所示。

Figure 5. 二值图的腐蚀

膨胀可以定义为如下运算:

其中A为原图,A^'为结果图,B为算子。

膨胀算法: 使用一个n×n结构算子去扫描图像中的每一个像素。用算子元素与其覆盖的二值图像做“与”操作,如果都为0,这图像的该像素为0,否则为1。

运算的伪代码如下:

Figure 6. 二值图的膨胀过程

如图6所示开始运算时,A中蓝色区域与B算子执行与运算。最终结果为A^'。二值图的膨胀操作可以扩大亮区。如图7所示。

Figure 7. 二值图的膨胀

有了以上操作,就能进行简单的图像去噪处理了,由于噪点一般比较小,于是先对图像进行腐蚀操作,去除细小的点,再对图像进行膨胀操作即可较好的恢复原图。如图8所示:

Figure 8. 二值图的去噪

通过腐蚀进行边缘检测,该边缘称为内边缘,计算方法如公式(6)所示:

其中,A为原图,A^'为腐蚀后的图像,A^''为结果。

Figure 9. 腐蚀进行边缘检测

如图9所示使用原始图像与腐蚀后的图像相减即可得到该图像的内边缘。如图10为真实图的边缘检测结果。

Figure 10. 腐蚀进行检测内边缘示例

同理,膨胀也可以进行边缘检测,该边缘称为外边缘,计算方法如公式(7)所示:

其中,A为原图,A^'为膨胀后的图像,A^''为结果。检测结果如图11。

Figure 11. 膨胀进行检测外边缘示例



<< 返回目录