机器视觉算法基础 1 / 1 机 器 视 觉 基于visual C++ 的数字图像处理 机器视觉算法基础
1 / 1 摘要 机器视觉就是用机器代替人眼来做测量和判断。它通过图像摄取装置将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来获取信息。本文主要介绍的是数字图像处理中的一些简单应用,通过对图像进行滤波、增强、灰度变换、提取特征等处理来获取图像的信息,达到使图像更清晰或提取有用信息的目的。
关键字:机器视觉、灰度图处理、滤波、边缘提取、连通区域 机器视觉算法基础
1 / 1 目录 摘要 .................................................................................................................................................. 2 目录 .................................................................................................................................................. 3 1 概述 .............................................................................................................................................. 4 2技术路线 ....................................................................................................................................... 4 3实现方法 ....................................................................................................................................... 5 3.1 灰度图转换........................................................................................ 5 3.2 直方图均衡化........................................................................................ 6 3.3均值滤波和中值滤波.............................................................................. 6 3.4灰度变换................................................................................................. 7 3.5拉普拉斯算子......................................................................................... 8 4 轮廓提取 ...................................................................................................................................... 9 5 数米粒数目 ................................................................................................................................ 15 6 存在的问题 ................................................................................................................................ 17 7 总结 ............................................................................................................................................ 17 8 致谢 ............................................................................................................................................ 18 参考文献 ........................................................................................................................................ 19 机器视觉算法基础
1 / 1 1 概述 本次设计是根据“机器视觉”课程的作业要求,使用工具visual c++ 完成一些简单数字图像处理。按照作业要求,本文介绍了以下五种处理的原理、实现方法和实现结果:
1、24位彩色到灰度图的转换 2、直方图均衡化 3、均值滤波和中值滤波 4、拉普拉斯算子 5、灰度变换 然后,本文着重介绍了一种轮廓提取的方法,对焊缝缺陷的轮廓进行提取,分析了该方法的优缺点、存在的问题、拟解决方法。
最后,根据课堂兴趣,分析了一种数连通区域的方法,对一幅含有米粒的图进行了举例。
2技术路线
数字图像的处理方法很多,常用的有空域和频域的方法。以灰度图为例,空域的方法是直接对各个像素的或某个像素区域进行变换,即f(x,y) —> g(x,y),方法举例有均值滤波、中值滤波、微分运算、灰度变换等;频域的方法是通过傅里叶变换得到图像的频谱特征,再根据频率特性设计滤波器,达到预期的目的。
本文中举例的几种方法都是在空域进行的。其界面设计如图2.1所示。其中二值化处理、反相处理等是对单个像素点进行处理,均值滤波、轮廓提取是对一块像素区域进行处理。 机器视觉算法基础
1 / 1 图2.1 图像处理界面 3实现方法
3.1 灰度图转换 日常生活中获取的很多图像都是彩色图像,为方便处理,首先应该进行灰度图转换。对于一幅位图,其结构由文件头、位图信息头、颜色信息和图像数据四部分组成。从一幅24位真彩色图到灰度图的转换过程中,需要改变除需要修改文件的数据区以外,文件头、文件信息头的部分信息也要做相应计算修改。本文采取了一种简单的方法,在不修改文件头、文件信息头的条件下,完成灰度图的 转换,具体实现如下:
1、已知原图像数据存储区为m_pData,新建一片存储区m_pData2; 2、通过公式0.3*r+0.59*g+0.11*b得到各像素的灰度信息,存储在m_pData2中;
3、将m_pData中各像素的r、g、b值设定为相应的灰度值; 4、用m_pData中的数据进行显示和保存,用m_pData2中的数据进行计算。 机器视觉算法基础 1 / 1 这种实现方法的优点是不需要计算修改文件头,但是每次显示或者存盘都要将m_pData2中的数据复制到m_pData中,比较麻烦。
3.2 直方图均衡化 将图像从彩色转换到灰度图后,可以对其进行各种转换。直方图均衡化是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。这是对图像的非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同,适用于背景和前景都太亮或者太暗的图像。
一幅灰度级为[0,L-1]范围的数字图像的直方图是离散函数: h(rk) = nk (rk是第k级灰度,nk是图像中灰度级为rk 的像数个数) 直方图均衡化的目的即通过点运算使得输入图像转化为在每一灰度级上都有相同的像素点数的输出图像,即输出图像的直方图是平的。
h(rk) = wide*height/L (wide、height为图像的宽和高,单位:像素) 为达到以上目的,灰度级为k的像素应映射到的灰度级为:
0(1),0,1,2,...,1kjjnkLkLns
其具体的实现步骤如下: 1、统计直方图数组,用一个数组p记录p[i],即直方图分布; 2、i从1开始,令s[i] = s[i-1] + p[i],即得到累积分布; 3、一个数组L记录新的s的索引值:令L[i] = s[i] * (256-1),这里默认L=256; 4、依次循环每一个像素,取原图的像素值作为数组L的下标值,取该下标对应的L数组值为均衡化后的像素值。
3.3均值滤波和中值滤波
由于在图像的形成、传输、和接收的过程中,不可避免的存在着外部干扰和内部干扰,会存在着一定的噪声,因此需要进行平滑或滤波。改善图像质量的方