机器视觉算法基础_第1页
机器视觉算法基础_第2页
机器视觉算法基础_第3页
机器视觉算法基础_第4页
机器视觉算法基础_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

联为 稻草人自动化有限公司 1 机机 器器 视视 觉觉 基于基于 visualvisual C C 的数字的数字图像处理图像处理 联为 稻草人自动化有限公司 2 摘要摘要 机器视觉就是用机器代替人眼来做测量和判断 它通过图像摄取装置将被 摄取目标转换成图像信号 传送给专用的图像处理系统 根据像素分布和亮度 颜色等信息 转变成数字化信号 图像系统对这些信号进行各种运算来抽取目 标的特征 进而根据判别的结果来获取信息 本文主要介绍的是数字图像处理 中的一些简单应用 通过对图像进行滤波 增强 灰度变换 提取特征等处理 来获取图像的信息 达到使图像更清晰或提取有用信息的目的 关键字关键字 机器视觉 灰度图处理 滤波 边缘提取 连通区域 联为 稻草人自动化有限公司 3 目录目录 摘要 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 联为 稻草人自动化有限公司 4 1 1 概述概述 本次设计是根据 机器视觉 课程的作业要求 使用工具 visual c 完成 一些简单数字图像处理 按照作业要求 本文介绍了以下五种处理的原理 实 现方法和实现结果 1 24 位彩色到灰度图的转换 2 直方图均衡化 3 均值滤波和中值滤波 4 拉普拉斯算子 5 灰度变换 然后 本文着重介绍了一种轮廓提取的方法 对焊缝缺陷的轮廓进行提取 分析了该方法的优缺点 存在的问题 拟解决方法 最后 根据课堂兴趣 分析了一种数连通区域的方法 对一幅含有米粒的 图进行了举例 2 2 技术路线技术路线 数字图像的处理方法很多 常用的有空域和频域的方法 以灰度图为例 空域的方法是直接对各个像素的或某个像素区域进行变换 即 f x y g x y 方法举例有均值滤波 中值滤波 微分运算 灰度变换等 频域的方法是通过 傅里叶变换得到图像的频谱特征 再根据频率特性设计滤波器 达到预期的目 的 本文中举例的几种方法都是在空域进行的 其界面设计如图 2 1 所示 其 中二值化处理 反相处理等是对单个像素点进行处理 均值滤波 轮廓提取是 对一块像素区域进行处理 联为 稻草人自动化有限公司 5 图图 2 1 图像处理界面图像处理界面 3 3 实现方法实现方法 3 13 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 中的数据进行计算 联为 稻草人自动化有限公司 6 这种实现方法的优点是不需要计算修改文件头 但是每次显示或者存盘都 要将 m pData2 中的数据复制到 m pData 中 比较麻烦 3 23 2 直方图均衡化直方图均衡化 将图像从彩色转换到灰度图后 可以对其进行各种转换 直方图均衡化是 把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的 均匀分布 这是对图像的非线性拉伸 重新分配图像像素值 使一定灰度范围 内的像素数量大致相同 适用于背景和前景都太亮或者太暗的图像 一幅灰度级为 0 L 1 范围的数字图像的直方图是离散函数 h rk nk rk是第 k 级灰度 nk是图像中灰度级为 rk 的像数个数 直方图均衡化的目的即通过点运算使得输入图像转化为在每一灰度级上都 有相同的像素点数的输出图像 即输出图像的直方图是平的 h rk wide height L wide height 为图像的宽和高 单位 像素 为达到以上目的 灰度级为 k 的像素应映射到的灰度级为 0 1 0 1 2 1 k j j n kLkL n s 其具体的实现步骤如下 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 均值滤波和中值滤波均值滤波和中值滤波 联为 稻草人自动化有限公司 7 由于在图像的形成 传输 和接收的过程中 不可避免的存在着外部干扰 和内部干扰 会存在着一定的噪声 因此需要进行平滑或滤波 改善图像质量 的方法很多 这里简要描述常用的均值滤波和中值滤波 均值滤波 即采用当前像素的邻域平均灰度值来代替原值 达到减弱噪声 的目的 特点是实现简单 有一定程度的滤波效果 但是是以图像模糊为代价 的 其实现步骤如下 1 取得原图像大下 新建数据区 2 循环取得各点像素值 根据设定的模板大小求取邻域内的像素平均值 放到新建的数据区 3 依次循环直至整幅图像处理完 4 将新建数据区的数据复制到原数据区 中值滤波是采用当前像素的邻域内灰度值居中的像素值来代替原值 是一 种统计滤波方式 因为一些干扰噪声往往具有较大或较小的灰度值 因此可以 被滤掉 对于椒盐噪声有较好效果 其实现方法如下 1 取得原图像大小 新建数据区 2 循环取得各点像素值 根据设定的模板大小求取邻域内的像素中间值 放到新建的数据区 3 依次循环直至整幅图像处理完 4 将新建数据区的数据复制到原数据区 3 43 4 灰度变换灰度变换 在得到原图像灰度图的基础上 可以对原图像进行一些基本变换 达到便 于分辨 滤除噪声 图像锐化等目的 例如 二值化处理可以缩减图像信息量 便于实时处理 反色变换可以突出一些很亮的细节 对数变换可以压缩图像亮 区的灰度值 拉伸暗区的灰度值 从而突出暗区的图像特征 幂次变换可以增 强图像对比度 这里简要举例如下 1 反转变换 反色变换实现比较简单 只需要依次读取个像素点的灰度值 令其等于 L 联为 稻草人自动化有限公司 8 1 r r 为原灰度值 即可 不需要另外开辟内存空间 2 幂次变换 幂次变换即依次求取各个像素点的幂次即可 根据需要乘以相应系数 达 到不同效果 即 scr 在做幂次变换的过程中 当取值较大时易产生数据溢出现象 经过将 s 调整为长整型解决这个问题 3 对数变换 对数变换即依次求取各个像素点的对数 也可乘以相应系数 达到不同效 果 即 log 1 scr 在以上处理中 可能会出现灰度值大于 L 1 或者小于 0 的情况 需要再进 行线性变换处理 或者直接将小于 0 的灰度值设为 0 将大于 L 1 的灰度值设 为 L 1 4 分段线性变换 对原图像不同的像素值进行不同程度的变量或变暗处理能达到增强对比度 或者突出某些细节的作用 分段线性变换即是通过设定不同区域的处理方法达 到不同处理效果的变换 其实现方法如下 4 1 设定分段线性变换的两个转折点 4 2 新建数据区 大下为 L 4 3 循环计算 0 L 1 各个像素值变换后的值 放到新建的数据区 4 4 依次循环每一个像素 取原图的像素值作为新建数据区的索引 取该 索引对应的新建数据区的像素值 4 5 依次处理直至整幅图像处理完毕 这种方法先一次计算完 0 L 1 的所有灰度值对应的像素值 对于较大的图 像可以节约计算量 联为 稻草人自动化有限公司 9 3 53 5 拉普拉斯算子拉普拉斯算子 在实际的图像处理过程中 往往需要突出图像中的细节或增强被模糊了的 图像细节 以便于识别或后续处理 其基本方法是进行微分运算 找到变化较 显著的点或线 即认为是边界 通常可以用一阶微分和二阶微分 一阶微分的 极值处是边界点 二阶微分的过零点为边界点 这里介绍一种基于二阶微分的 图像增强方法 拉普拉斯算子 拉普拉斯算子是 x 和 y 方向上的二阶微分相加 得到的 是各向同性滤波器 通过将该算子与原图像做卷积运算达到边缘提取 的效果 常用的算子有以下几种 程序实现方法如下 1 取得原图像大小 新建数据区 2 循环取得各点邻域像素值 根据设定的模板大小 这里是 3 3 依次做 卷积运算 放到新建的数据区 3 依次循环直至整幅图像处理完 4 将新建数据区的数据复制到原数据区 通过拉普拉斯算子可以提取轮廓 但是同时也放大了噪声信号 所以可以 先滤波 再提取轮廓 另外 拉普拉斯算子与原图卷积之后 还要做过零检测 才能得到单像素边缘 这里略掉此步 4 4 轮廓提取轮廓提取 在了解了图像的基本处理方法的基础上 下面具体分析焊缝缺陷的轮廓提 取 这里以一副 24 位位图 如图 4 1 所示 为例 联为 稻草人自动化有限公司 10 图图 4 1 焊缝缺陷焊缝缺陷 4 14 1 构造构造 CDibCDib 类类 在新建完一个单文档应用程序后 首先应构造一个图像处理的基类 用来 封装位图的基本操作 该类需完成文件的读写操作 位图信息获取 位图的显 示等内容 4 24 2 灰度转换灰度转换 在打开位图后 首先需要进行灰度转换 将 24 位位图转换为灰度图 便于 后续处理 如前所述 这里的灰度转换只修改了数据区 未改变文件的文件头 和位图信息头 处理后图像如图 4 2 所示 图图 4 2 灰度图灰度图 联为 稻草人自动化有限公司 11 4 34 3 一阶微分一阶微分 对灰度图进行一阶微分处理 得到大致的轮廓 处理后图像如图 4 3 所示 图图 4 3 一阶微分 一阶微分 prewitt 4 44 4 滤波滤波 对一阶微分后的图像进行滤波处理 保留裂纹的轮廓 衰减其余部分 在 这里进行了膨胀 腐蚀处理 处理后图像如图 4 4 所示 图图 4 4 一阶微分滤波后图像一阶微分滤波后图像 4 54 5 相加相加 将滤波后的图像与原灰度图相加 为了不至于显得太亮 对滤波后的图像 联为 稻草人自动化有限公司 12 进行了一次分段线性变换 将最大灰度值压缩到 100 处理后图像如图 4 5 所示 图图 4 5 相加相加 4 64 6 轮廓提取轮廓提取 最后对图像进行轮廓提取 这里使用了 Log 算法 不完全 和 canny 算法 比较结果显示 canny 算法 高低阈值分别取 0 913 和 0 3 效果更优 Canny 算 法的具体步骤包括以下几步 1 用高斯滤波器平滑图象 2 用一阶偏导的有限差分来计算梯度的幅值和方向 3 对梯度幅值进行非极大值抑制 4 用双阈值算法检测和连接边缘 Canny 算法的最后结果如图 4 6 所示 图图 4 6 轮廓图轮廓图 联为 稻草人自动化有限公司 13 4 74 7 检验检验 为了检验边缘提取的准确性 将轮廓图与原灰度图叠加 其效果如图 4 7 所示 此效果基本上满足要求 轮廓大致形态吻合 但是轮廓线与原图中轮廓有 一定误差 分析其原因 可能是轮廓提取的步骤中 先做一阶微分再与原图相 加不是很合理 对一阶微分图进行膨胀和腐蚀也有一定误差 最终导致轮廓膨 胀了 另外 轮廓尚未封闭 方法有待改进 图图 4 7 叠加图叠加图 因此 对于这幅图还做了如下两种轮廓提取方法 方法二如图 4 8 所示 处理步骤依次为 将原图灰度化 中值滤波 3 3 均值滤波 9 9 原灰度图减去滤波后的图 二值化 阈值 14 膨胀 腐蚀 canny 提取轮廓 与原灰度图相加 方法三如图 4 9 所示 处理步骤与方法二类似 只是去掉了膨胀和腐蚀 相比方法一 这两种方法的效果也是基本上满足要求 但是轮廓的封闭性 好一些 尤其是方法三 与原图的吻合性也相对较好 但是 这样处理的轮廓 边缘带有毛刺 尚不能完全消除 尚待解决 联为 稻草人自动化有限公司 14 图图 4 8 轮廓提取方法二轮廓提取方法二 图图 4 9 轮廓提取方法三轮廓提取方法三 联为 稻草人自动化有限公司 15 另外 与 MATLAB 提取的轮廓图做一对比 MATLAB 提取的轮廓图如图 4 10 所示 其步骤如图 4 11 所示 此轮廓图基本上完全封闭 相比以上三种方 法效果最好 图图 4 10 轮廓图 轮廓图 MATLAB 图图 4 11 MATLAB 提取轮廓步骤提取轮廓步骤 5 5 数米粒数目数米粒数目 在得到图像的轮廓的基础上 下面再具体分析一个数出米粒数目的例子 联为 稻草人自动化有限公司 16 其原图如图 5 1 所示 图图 5 1 原图原图 首先对原图用 canny 算法进行轮廓提取 高低阈值分别取 0 71 和 0 3 时效 果如图 5 2 所示 图图 5 2 轮廓图轮廓图 然后数出米粒数目 其实现方法如下 定义要检测的连通区域为 x 0 或 255 这里取 255 即白色 1 在已经得到轮廓图的前提下 进行二值化处理 2 逐行检测 当检测到像素值为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论