复杂背景下二维条码图像的研究识别论文.doc_第1页
复杂背景下二维条码图像的研究识别论文.doc_第2页
复杂背景下二维条码图像的研究识别论文.doc_第3页
复杂背景下二维条码图像的研究识别论文.doc_第4页
复杂背景下二维条码图像的研究识别论文.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

复杂背景下二维条码图像的研究识别 复杂背景下二维条码图像的研究识别复杂背景下二维条码图像的研究识别 目录目录 摘要摘要 I ABSTRACT II 引言引言 1 1 绪论绪论 2 1 1 课题研究背景和意义 2 1 2 国内外研究现状 3 1 3 本课题研究内容 4 2 图像的预处理图像的预处理 6 2 1 图像灰度化 6 2 2 图像滤波 7 2 2 1 图像滤波技术 7 2 2 2 高斯滤波 7 2 2 2 中值滤波 8 2 3 二值化阈值选取 9 2 3 1 直方图的峰谷法 9 2 3 2 一维最大熵法 10 2 3 3 Otsu法 11 2 3 4 阈值算法的选取 13 2 4 数学形态学操作 13 2 4 1 腐蚀 13 2 4 2 膨胀 14 2 4 3 开操作 15 2 4 4 闭操作 15 2 5 最大连通分量提取 15 2 6 本章小结 16 3 DMDM 码定位码定位 16 3 1 边缘检测 17 3 1 1 Roberts算子 17 3 1 2 Sobel算子 17 3 1 3 log算子 18 3 1 4 边缘检测算子的选取 18 3 2 HOUGH变换线段检测 19 3 2 1 Hough变换检测直线原理 19 3 2 2 Matlab 中的Hough变换 20 3 3 图像校正 20 3 3 1 倾角计算 20 复杂背景下二维条码图像的研究识别 3 3 2 图像旋转 22 3 3 3 精确裁剪DM条码 22 3 4 本章小结 23 4 MATLAB 实验结果分析实验结果分析 24 4 1 DM 码识别 24 4 2 DM 码解码 31 4 3 实验结果分析 32 4 4 本章小结 33 5 结论与展望结论与展望 34 致致 谢谢 35 参考文献参考文献 36 复杂背景下二维条码图像的研究识别 I 摘要摘要 Data Matrix 二维条码 DM 码 的外观是一个由许多小方格所组成的正方形或 长方形符号 其资讯的储存是以浅色与深色方格的排列组合 以二位元码 Binary code 方式来编码 故电脑可直接读取其资料内容 而不需要如传统一维条码的符号 对映表 Character Look up Table 然而在实际的 DM 码采集工作中 因为各种因素的综合作用 采集到的图像质量 并不如预期 而且不光只包含有 DM 码图案 还会混入其他各种背景 所以 DM 码图 案所在图像有个比较复杂的背景 针对以上问题 本文讨论了复杂背景下二维条码的识别 根据 Data Matrix 二维 条码的特征 形成一个解决方案 使用图像滤波技术去除原图像噪声 Otsu 算法对 图像进行二值化 利用数学形态学对图像进行膨胀 腐蚀操作 然后确定最大连通 区域 把条码图案分割出来 其次根据 Hough 变换检测出图像中的两条最长线段 也就是 L 型特征图案 最后使用 L 型特征图案 计算出条码的倾斜角度 对 条码图像进行旋转 使其达到标准位置 通过对多个有复杂背景的 DM 码的实验 该方案能够从复杂背景中分割出 DM 条码区域 并且能够进行旋转校正 关键词 Data Matrix Otsu 算法 Hough 变换 图像旋转 复杂背景下二维条码图像的研究识别 II ABSTRACT The appearance of a two dimensional bar code is a square or rectangular symbol which made up of many small squares the information is stored in light and dark colored squares in some way the computer can read the data directly in the two dimensional code without the need for the corresponding table of unified dimensional bar code symbol However in the practice of DM code acquisition because of various factors the quality of image collected is not as good as expected it not only contains the DM code pattern but also sneaks into a various of backgrounds so the image of DM code pattern has a complicated background In view of the above problems this paper discusses the recognition of 2D barcode in complex background according to the characteristics of two dimensional bar code the solution is as follows firstly wipe off the original image noise using Gauss filtering algorithm binary images via Otsu algorithm expand and deprive the images using mathematical morphology erosion operation and then determine the maximum connected region segment barcode pattern secondly test the two longest lines of images based on the Hough transform that is the characteristics of L pattern finally calculate the tilt angle of bar code using L type pattern achieve the standard position via the rotation of bar code Through the experiment of many complex backgrounds of DM codes the scheme can be segmented the DM bar code regions from complex background and can achieve the standard position via rotation and correction Keywords Data Matrix Otsu algorithm Hough transform image rotation 复杂背景中二维条码图像的识别研究 1 引言引言 现如今二维条码技术已经得到了广泛的应用 二维条码中的 Data Matrix 二维条 码 简称 DM 码 更是如此 所以本文选取 DM 码作为研究对象 DM 码通常会被 印表机印在不同材质表面上 由于 DM 码只需要读取资料的 20 即可精确辨读 因 此很适合应用在条码容易受损的场所 例如印在暴露于高热 化学清洁剂 机械剥 蚀等特殊环境的零件上 所以识别研究复杂背景中二维条码图像的课题是非常有必 要的 本论文对复杂背景中二维条码的识别是在 matlab7 1 软件平台上完成的 matlab 软件的功能很强大 特别是在矩阵运算方面 并且 matlab 读取的图像信息也是保存 在矩阵之中 matlab 的图像处理工具箱对图像处理很有帮助 比如本文所用到的一 些方法 动态阈值查找的 otsu 算法 最大连通区域的确定以及用 Hough 变换查找最 长线段等等 大大的方便了处理的过程 针对复杂背景中 DM 码图像识别的过程 本文有一个完整而详细的论述 在图 像识别处理的每个环节都会分析可能会用到的方法 并且比较各个方法的优缺点 根据原图像特性找到最适方法 复杂背景中二维条码图像的识别研究 2 1 绪论绪论 1 1 课题研究背景和意义课题研究背景和意义 二维码技术是在一维码技术基础上发展起来的 其在我国的研究还处于起步阶 段 相比较一维码而言 在同样的面积上二维码可包含的信息量比一维码多几十倍 而且具有更可靠 抗损坏 破损 25 仍可识读 的特色 同时用条码标签打印机打在 纸上有 100 的对比度 识读效果非常好 甚至可达到一秒钟读取 50 个二维码的速 度 正是由于二维码所独具的以上优势 国内对二维条码这一新技术的需求与日俱 增 正如大家所知 目前国际上最常用的 DATAMATRIX 二维码由于用点阵的方法 组成数据 可在一个数据矩阵里包含 2300 个数据信息 所以十年前一经发表就引起 全球轰动 但是十年来它的应用和推广却进展缓慢 究其原因 正是因为 DATAMATRIX 二维码的应用需跨越二个技术障碍 首先 如何高效 准确的将其 打印出来 其次 如何高效 准确的识读它 为了解决这两个关键问题 作为一种智 能图像识别技术 机器视觉由此显示出其独一无二的重要性 尽管今天的二维码技 术已经有了许多根本性的突破 但在打刻和识读方面存在的技术局限性也正是二维 码技术发展的瓶颈之所在 金属有黑色金属及有色金属二种 有色金属又分黄色 白色 银灰色等 同时 金属的表面分为加工面及毛坯面 而加工面也分为多种加 工等级 在这种复杂的加工条件之下 对打刻就提出了非常个性化的要求 打刻机 不仅要求质量稳定 而且需要逐个调整打刻参数 根据美国条码管理委员会 AIM 及 美国汽车协会 AIAG 的规定 直接金属零部件打刻二维码后必须评定打刻的质量级 别 分别为 A B C D E F 或 1 2 3 4 5 6 只有 A B C 级的质量才 能流到下一步工序 正是上述看似严苛的要求才保证了加工工序的识读效率 因为 在加工过程中 工件表面会遇到机油 冷却水甚至划伤 部分磨损又会增加识读的 难度 目前 在白纸上用条码标签打印机打出 DATAMATRIX 二维码后再进行识读 已经不存在任何技术问题了 同时 在光洁的金属表面用激光或浮针也能获得优良 的品质 但是 遇到毛坯或深色金属时 用激光或浮针打出的 DATAMATRIX 二维 码是人眼极难识别的 此时就必须借助智能图像识别技术 也就是机器视觉技术 也正因此 国外几家著名的条码扫描器公司及光学识别设备公司都分别推出了自己 的机器视觉产品 例如 Motorola Symbol 公司 Microscan 公司 Cognex 公司以及 Datalogic 公司等 目前一些条码扫描设备都被外国的企业垄断着 而且价格昂贵 二维码的扫描 识别都是基于智能图像识别技术 而机器视觉技术目前正处于发展阶段 具有一定 的缺陷 况且如果采集到的二维码图像由于光照 距离 复杂背景等产生具有复杂 复杂背景中二维条码图像的识别研究 3 背景的二维条码图像 那么扫描设备可能就不会准确的识读出二维条码中的数据信 息 因此可以从用一个算法从复杂背景中把条码区域识别并分离出来 再送到计算 机中让软件进行识别 这样就可以很准确的读出其中的数据 并且如果将这种技术 做成产品也会成本很低 所以复杂背景中二维条码图像的识别研究是很有意义的 1 2 国内外研究现状国内外研究现状 复杂背景中的二维条码识别研究 其实最主要的就是目标的识别工作 目标识 别是机器视觉领域的核心问题之一 目前国内外使用的主要目标识别方法有 1 统计模式识别 统计模式识别方法就是把整个目标区域集合化 然后可以分 割成若干互不相交的子集合 子集合从分类的角度来看是有某方面的共性的 选定 一个基本的性质集合 从而可以用它来描述目标的一些基本特性 图 1 1 统计模式识别模型 同一子集合的各个模式存在一定的差异 有些是由于噪声和采集设备的性质造 成的 而有些却是模式本身性质而引起的随机变化 第一个因素就如写一个字时纸 张的选择 使用何种笔芯对字的影响 第二个因素表现为即使是自己写同一个字时 虽可能看起来极其相似 但也不可能是百分之百完全相同的 因此当用特征向量来 描述这些字在形状上的相似性时 这些特征向量所对应的特征空间中的点就不会相 同 而是聚集在特征空间的某个区域空间内 而此时此区域空间就能够用来表示该 随机向量实现出的集合 图 1 1 给出了统计模式识别的模型 2 神经元网络的识别方法 神经网络 Neural Networks 的基本思路是神经 元之间相互连接 一个神经元的输入同时也是其他神经元的输出 这就与大脑中的 神经元高度相似 而人体神经元的这些特性被认为是人类防止损伤或者具有记忆力 的来源 它反映出大脑的基本功能和特性 是一个高度复杂的非线性学习系统 神 经元网络具有大规模的并行 分布式存储和处理 自组织 自适应和自学的能力 因此特别适合处理那些可能需要同时考虑多种原因和条件的 不够十分精确或者比 较模糊的信息处理问题 神经元网络能够不断的学习 并且归纳以及判断目标特性 复杂背景中二维条码图像的识别研究 4 最后达到能够充分的逼近复杂目标特征的目的 图 1 2 给出了神经元网络的识别模 型 图 1 2 神经元网络的识别模型 由上面可以看到 前人已经对图像的识别做了很多的探索及其研究 但是每种 方法都有自己的适用范围 因此在复杂背景中识别出二维码图案 明确所处环境 找到具体的适用方法尤为重要 1 3 本课题研究内容本课题研究内容 本论文是研究识别复杂背景中的二维条码图案 对图像进行预处理 识出图像 特征 L 型 对识别出的图像进行校正 1 原始图像读入 将复杂背景中的 DM 码图像作为目标图像 2 图象预处理 对于 DM 码的图像特征 将图像转换为灰度图像 采用高斯滤 波 otsu 算法获得动态阈值对图像二值化 形态学操作 区域填充等方法 找出 DM 码区域并提取出 3 对提取出的 DM 码区域进行边缘检测 这里用的是 sobel 算子 因为经过它 处理后直线会比较细 有助于后边用 Hough 变换检测线段 4 用 Hough 变换可以检测图像中的所有线段 这里我们只需要检测出 DM 码区 域的两条最长线段 因为这两条线段就是条码的特征图像所在的线段 5 根据检测出来的两条线段确定 L 型区域 详细计算倾斜角度 对图像进行旋 转校正 使它到达标准位置 然而经过旋转后 会出现黑色区域 因此再对黑色区 域进行修正 使黑色区域变白 系统框图如图 1 3 所示 待识别样 本 识别结果 显示 输入数据 预处理 神经网络 识别 复杂背景中二维条码图像的识别研究 5 图 1 3 系统的整体框图 计 算 倾 斜 角 度 图像校正 输出结果 旋 转 图 像 精 确 裁 剪 条 码 直 线 检 测 确 定 L 型 边 缘 检 测 提取条码区域 DM 码定位 原始图像 图像预处理 图 像 灰 度 化 图 像 二 值 化 形 态 学 操 作 连 通 分 量 提 取 滤 波 去 噪 复杂背景中二维条码图像的识别研究 6 2 图像的预处理图像的预处理 2 1 图像灰度化图像灰度化 将彩色图转化成为灰度图的过程称为图像的灰度化处理 由采集设备采集到的 图像为真彩图 真彩图的一个像素点有 1600 多万的颜色变化范围 因此需要更大存 储空间存储 并且如果直接对真彩图处理时 处理过程中所花费的时间很长 而且 处理速度很慢 因此真彩图的灰度化处理 是预处理过程中必不可少的步骤 在真彩图中的每个像素点的颜色由 R G B 三个通道的值共同决定 灰度图像 是具有从黑到白从 0 到 255 级灰度色域等级的单色调图像 在灰度图中每个像素用 8 位数据表示 故而它的每个像素点的取值范围是黑白间的 256 种灰度中的一种 并且灰度图只有灰度等级 而没有颜色的变化 在真彩图中如果令 R G B 三个通 道分量的值相等 那么此时该真彩图就表示灰度图 常用的图像灰度化的方法有平均值法和加权平均法 平均值法 用真彩图的 R G B 三个分量值求平均数 见等式 2 1 2 1 3f i jR i jG i jB i j 加权平均法 根据人眼对三种原色的敏感度的不同 将三个分量以不同的权值 进行加权平均 此时得到的就是比较合理的灰度图了 见等式 2 2 2 2 0 30 0 59 0 11 f i jR i jG i jB i j 在 Matlab 的图像处理工具箱中 有 RGB 真彩图转换成灰度图的函数 rgb2gray 用此函数也是基于等式 2 2 的 图 2 1 给出了三种灰度化方法产生的灰度图像 a 原图 b 加权平均法 c rgb2gray 函数灰度化 d 平均值法 图 2 1 上述几种方法产生的灰度图像 复杂背景中二维条码图像的识别研究 7 很显然 用平均值法得到的灰度图 不能满足要求 而用加权平均法和 rgb2gray 函数得到的灰度图效果很好 且几乎没差别 2 2 图像滤波图像滤波 2 2 1 图像滤波技术图像滤波技术 因为在 DM 码的采集的过程之中 由于采集设备本身特性的限制 而产生的比 如高斯噪声 椒盐噪声 脉冲噪声等噪声 而这种噪声是可以通过图像的滤波技术 使其干扰降到最低 常用的图像滤波技术有空域滤波和频域滤波 空域滤波是借助模板对图像进行邻域操作 所谓的模板 也称之为样板或者窗 口 一般可以认为是一副 l l 这里的 l 通常为奇数 并且远小于图像的尺寸大小 的小图像 它各个位置上的取值定义为系数值 系数值的大小由具体的功能来决定 根据图像像素之间的联系从而可以划分成各式各样的模板操作 并来实现各式的功 能 模板运算的主要思想是把给某像素的值作为它本身的灰度值和其邻域像素灰度 值的函数 这个函数可以使线性的也可以是非线性的 而具体的运算可以使卷积操 作 也可以使排序操作等 利用像素本身以及相邻像素的灰度关系来进行的增强操 作 就称之为滤波 空域滤波按功能分可分为平滑滤波器和锐化滤波器 平滑滤波 器主要是模糊和去除噪声 常见的平滑滤波器有高斯低通滤波器和中值滤波器 而 锐化滤波器主要是增强被模糊的细节边缘 常见的有 Sobel 水平边缘增强滤波器 频域滤波和空域滤波一样 其基础都是卷积定理 频域滤波的基本步骤 计算 需要增强图像的傅里叶变换 乘以一个滤波传递函数 H u v 将得到的结果进行傅 里叶反变换 得到 g x y 针对 DM 码产生噪声的原因 因此本文所用的是空域滤波中的平滑滤波 使噪 声达到最小化 2 2 2 高斯滤波高斯滤波 高斯滤波器是基于邻域加权平均法的一种线性平滑滤波器 它是根据高斯分布 来确定各模板的系数 也是把接近各模板中心的系数取得比周边的模块的系数大 这就相当于给邻域做了加权平均 加权平均的一般计算式为式 2 3 2 3 例如一个 5 5 的高斯平均的模板如下 s tN x y s tN x y w s t f s t g x y w s t 复杂背景中二维条码图像的识别研究 8 14741 41626164 1 72641267 273 41626164 14741 在高斯滤波中 除了要对同一尺寸模板中的不同位置采用不同的系数之外 还可以选取不同尺寸的模板 最后对小尺寸的模板反复的使用 也可以得到大尺 寸模板的效果 如图 2 2 一个 3 3 模板可以转化为两个 1 1 模板的卷积 1211 111 2422121 1644 1211 图 2 2 3 3 模板转化为 1 1 模板 需要注意的是模板越大 平滑的效果越明显 也可能使图像目标区域的边界 变得模糊 因此模板大小的选择很重要 2 2 2 中值滤波中值滤波 中值滤波法是非线性平滑滤波器 它是通过模板的排序来实现的 设模板尺寸 为 N N 2r 1 其中 r 为模板的半径 则中值滤波的输出为 2 4 1 gmedian ffff jj rj rjj r 上式中 media 代表取它们的中值 也就是对模板覆盖的信号序列 按照取值的 大小进行排序 最后取排序后处于中间位置的值 而用于图像滤波的中值滤波输出可以表示为式 2 5 2 5 一般情况下 图像里尺寸小于模板一般的过于亮或者过于暗的区域都将会在滤 波后被消除掉 所以中值滤波的主要功能是让与周围点象素灰度值的差比较大的像 素改取与周围像素值比较接近点的值 这样对孤立的噪声像素的消除能力很强 因 为它不是简单的选取均值 因此产生的模糊也很少 也就是说中值滤波既可以消除 噪声 又可以保持图像的细节 它首先确定一个奇数像素窗口 W 窗口内各像素按 灰度值从小到大排序后 用中间位置灰度值代替原灰度值 Matlab 图像处理工具箱 的 medfilt2 来实现二维中值滤波 其中 m n 为模板大小 默认 3 B medfilt2 A m n 3 如果模板选择过大 那么图像的边缘会变得很模糊 如果选择过小又使得噪声 gf s t media 复杂背景中二维条码图像的识别研究 9 不能去除 综上 因为采集设备采集到的图像上的噪声主要以椒盐噪声和高斯噪声为主 并且一般采集到图像的尺寸选用 3X3 模板的高斯滤波和中值滤波的可以很好的消 除这种噪声 对 DM 码很适用 2 3 二值化阈值选取二值化阈值选取 图像二值化就是把讲图像上点的灰度值设为 0 黑 或 255 白 是整个图像 具有明显的黑白效果 以便于后期操作 而在图像二值化中阈值选取很重要 常用 的阈值法有灰度直方图的峰谷法 最小误差法 最大类间方差法 最大熵自动阈值 法等 2 3 1 直方图的峰谷法直方图的峰谷法 图像的灰度级范围为 0 1 M 1 设灰度级 i 的象素数为 则一幅图像的总象 i n 素 N 为 2 7 灰度级 i 出现的概率定义为 2 8 式 2 8 反映一幅图像上灰度分布的统计特征 是用像素的灰度作为分割方法的 基础 双峰之间的低谷所对应的灰度值作为阈值 如图 2 3 所示 图 2 3 但是该方法有一定的局限性 它不适合直方图中双峰的差别很大或者是双峰之 间的低谷比较宽广而平坦的图像 以及单峰直方图的情况 为了解决这个问题提出 1 0 M i i Nn ii PnN 复杂背景中二维条码图像的识别研究 10 一种改进方法 设一幅图像只由目标和背景组成 并且知道它的灰度值分布概率密度函数为 P1 Z 和 P2 Z 并且假设目标的像素占整个图像像素比值为 所以该图像总的灰 度值概率密度函数 P Z 可表示为 2 9 12 1 P ZP ZP Z 假设这里的阈值为 Z 并假设图像由亮背景和暗目标组成组成 即灰度值小于 Z 的取为目标物 大于 Z 的取为背景 如图 2 5 所示 图 2 5 如选定为最终确定的阈值 则将背景像素认错为目标像素的概率是 t Z 2 10 将目标像素认错为背景象素的概率为 2 11 所以总的错误率 E Z 为 2 12 最小阈值就是当 E Zt 取最小值时变量 Zt 的值 2 3 2 一维最大熵法一维最大熵法 图像的熵是一种基于图像特征的统计形式 它反映了图像中平均信息量的多少 而图像的一维熵表征了图像中灰度级分布的聚集特征中信息量的大小 在信息论里 熵的定义为 2 13 1 2 t ZT EZP Z dZ 2 1 T t Z EZPZ dZ 1 1 tTt E ZE ZEZ lg Hp xp x dx 复杂背景中二维条码图像的识别研究 11 因此灰度图的一元灰度熵也可以用上式表示 其中 P x 为图像中灰度值为 x 的 像素数占总像素数的比例 这里要一维熵最大 就是要确定一个阈值 用此阈值分 割的图像的两部分灰度统计的信息量达到最大 根据式 2 7 2 8 可以计算出图像像素的总数 以及像素级 i 出现的概率 图像灰度直方图如图 2 6 所示 图 2 6 图像灰度直方图 在目标区概率分布满足 其中 i 1 2 t t i o P P p 在背景区概率分布满足 其中 i t 1 t 2 L 而 Pt 为 因此目标和背景区的熵为 目标区 2 14 背景区 2 15 图像的总熵为 2 16 在式 2 16 中 使阈值 H t 取最大值的 t 就是所要求的阈值 2 3 3 Otsu 法法 Otsu 法基于最小二乘法的原理 也成为最大类间方差法 是将某一处的阈值分 割成两组 当被分割的两组间方差最大时 此时便求出了阈值 T 图像的灰度级范围为 0 1 M 1 设灰度级 i 的象素数为 根据式 2 7 2 8 i n 可以计算出图像像素的总数 以及像素级 i 出现的概率 t t t t ttBO P HH P H PPtHtHtH 1 1ln 1 t i b P P p t i it PP 1 t i o PPH 11lg t i B PPH 22lg 复杂背景中二维条码图像的识别研究 12 用灰度级阈值 t 将其分成两类和则 0 C 1 C 对于类有 0 C 概率 2 17 0 t i i w tp 均值 2 18 00 1 t i i u tipw t 对于类有 1 C 概率 2 19 1 1 t i it w tp 均值 2 20 11 1 m i i t u tipw t 由以上可以求出和类的方差 0 C 1 C 对于类 2 21 0 C 2 2 000 1 l i i tiu tpw t 对于类 2 22 1 C 2 2 111 1 m i i t tiu tpw t 因此图像灰度的均值为 2 23 0011 uw t u tw t u t 故而和的两类间方差为 0 C 1 C 2 24 22 0101 tw t w t u tu t 使式子 2 24 取最大值的 t 就是要求的阈值 如图 2 7 给出了和类的变化范围 0 C 1 C 复杂背景中二维条码图像的识别研究 13 图 2 7 和类的变化 0 C 1 C 2 3 4 阈值算法的选取阈值算法的选取 以上的算法都是求全局阈值 因为这里我们处理的图像 不考虑光学的不均匀 以及畸变等 所以使用全局阈值法能够很好的进行二值化 直方图双峰法 处理速度比较快 但是它对图像的特性要求较高 要求图像的 直方图有明显的双峰结构 而我们所使用的复杂背景的图像它的直方图特性是未知 的 所以直方图双峰法有很大的局限性 一维最大熵值法 对图像的直方图特性没有什么要求 可是在图像的二值化处 理中 它可能会丢掉目标图像的一些边界点信息 Otsu 法也称为最大类间方差法 是最经典的全局阈值自适应算法 而且该算法 的处理速度很快 能很好的满足要求 2 4 数学形态学操作数学形态学操作 数学形态学 Mathematical morphology 是以目标的空间形态为基础 对图像 分析的一种数学方法 它能使图像数据简化 使其的形状特性不发生变化 并消除 不相干的结构 基本运算膨胀 腐蚀 开操作 闭操作 2 4 1 腐蚀腐蚀 腐蚀是一种消除边界点 使边界向内部收缩的过程 可以用来消除小且无意义 的物体 B 对 A 进行腐蚀记作 定义为 B 对 A 腐蚀的过程如图 2 5 所示 BA ABxBA x 复杂背景中二维条码图像的识别研究 14 图 2 5 B 对 A 腐蚀 腐蚀运算可以简化物体的结构 那些只有一个像素宽的物体或物体的部分将被 去掉 这样就把比较复杂的图像 分解成了几个简单的部分 Matlab 中 IM2 imerode IM1 SE 是具体的二值图像或灰度图像的腐蚀运算 其 中 IM1 原始图像 SE 为同性结构结构元素 IM2 为腐蚀后图像 2 4 2 膨胀膨胀 膨胀是一种递增运算 将与物体接触的所有背景点合并到该物体中 使边界向 外部扩张的过程 可以用来填补物体中的空洞 用 B 对 A 进行膨胀写作 定义为 先对 B 做关于原点的反射 再将其平移 x 结果是平移后与 A 交集不为空的 x 集合 用 B 来膨胀 A 得到的集合是 的位移与 A 至少有一个非零元素即有相交时 B 的原点位置的集合 B 对 A 的膨胀过程如图 2 7 所示 图 2 7 B 对 A 的膨胀 Matlab 中 IM2 imdilate IM1 SE 是具体的二值图像或灰度图像的膨胀运算 其中 IM1 原始图像 SE 为结构元素 IM2 为膨胀后图像 通过数学形态学的腐蚀以及膨胀操作 就可以大致确定条码的位置范围 其中 面积最大的区域就是条码的区域 下面根据面积最大的区域来提取最大连通分量 BA ABxBA x B 复杂背景中二维条码图像的识别研究 15 2 4 3 开操作开操作 开操作能够滤除比结构元素小的突出物 断开狭小的连接起到分离的作用 B 对 A 进行的开操作就是先用 B 对 A 腐蚀 然后用 B 对结果进行膨胀 B 对 A 开操作可以表示为 B 对 A 进行开操作的含义是 的边界通过 B 在 A 的边界内转动时 B 中 的点所能达到的 A 的边界的最远点 图 2 9 表示了 B 对 A 进行开操作的过程 图 2 9 2 4 4 闭操作闭操作 闭操作能够把比结构元素小的缺口和孔洞填上 使较短的间断连接 它的主要 作用是连通 B 对 A 进行的闭操作就是先用 B 对 A 膨胀 然后用 B 对结果进行腐 蚀 B 对 A 闭操作可以表示为 B 对 A 进行开操作的含义是 的边界通过 B 在 A 的边界外转动时 B 中 的点所能达到的 A 的边界的最远点 图 2 10 表示了 B 对 A 进行开操作的过程 图 2 10 2 5 最大连通分量提取最大连通分量提取 连通分量指的就是二值图像中某点及其邻域像素值为 1 白点 的区域 而最 大连通分量指的就是所有连通分量之中面积最大的区域 确定了最大连通区域 也 就初步确定了 DM 条码所处的区域 从而将该区域分割出来 BBABA BA BBABA BA 复杂背景中二维条码图像的识别研究 16 在经过形态学腐蚀以及膨胀操作后的二值图像中 扫描所有像素点 找到所有 的连通分量 我们这里要求连通分量是 8 连通 然后比较各连通分量的像素的数目 从而找出最大连通分量 确定了该区域后 比较该区域内所有像素点的横纵坐标 找出最大以及最小的 x y 从而可以从原二值图像中提取出条码区域 因为寻找连通 分量的二值图是经过膨胀操作的 所以实际从原二值图像中提取的区域要比实际的 条码区域大 这样也防止条码信息的丢失 在 matlab 图像处理工具箱中提供了 L num bwlabel Ibw conn 这个函数 为我 们寻找连通分量剩了不少步骤 其中 Ibw 为输入二值图像 conn 为可选参数 指明 提取连通分量是 4 连通还是 8 连通 默认为 8 L 为连通分量标注图像 与 Ibw 大 小相同 num 是二值图像中连通分量个数 图 2 9 为根据最大连通分量在原二值图中找出并分割出的条码区域 图 2 9 分割出的条码区域 从图上很明显可以看出实际提取出的区域要比条码区域大 这样就防止了一些 必要信息的丢失 2 6 本章小结本章小结 本章主要是对图像的预处理 可以对复杂背景下的条码图像有个比较好的处理 效果 使用 3X3 模板高斯二维滤波器 以及 3X3 模板的中值滤波器 很好的消除了 噪声干扰 在全局阈值选取上 对几种常用的阈值算法进行了比较 发现采用 otsu 算法计算分割阈值进行二值化时 能很好的满足复杂背景图像的处理 同时又不会 使目标图像的信息丢失 在形态学操作方面 介绍了膨胀 腐蚀 开操作以及闭操 作运算 而对于本课题只需要对二值化后的图像进行腐蚀和膨胀操作 就可以确定 出最大连通分量 及时的分割出条码区域 完成条码的初定位 为后期的条码定位 打下基础 3 DMDM 码定位码定位 在本章节中将详细论述 DM 码精确定位的方法 对前面章节已经分割出的 DM 条码图像进行边缘检测 获得比较好的边缘以助于直线检测 并且将详细说明 复杂背景中二维条码图像的识别研究 17 Hough 变换的算法思路 如何确定最长的两条线段 找出 DM 条码的特征图案 L 型 完成条码的定位 并且对定位后的图像进行旋转校正 以及对旋转后的图 像进行修正 最后精确的提取 DM 条码区域 3 1 边缘检测边缘检测 图像的边缘点是指图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点 即灰度值导数较大或极大的地方 边缘检测可以大幅度的减少数据量 并且剔除不 相关信息 保留图像重要的结构属性 边缘检测基本步骤 平滑滤波 锐化滤波 边缘判定 边缘连接 边缘检测算子是一组用于在亮度函数中定位变化的非常重要的据图图像预处理 的方法 边缘检测方法常用的方法 基于一阶导数 Roberts 算子 Sobel 算子 Prewitt 算子 基于二阶导数 高斯 拉普拉斯边缘检测算子 Canny 边缘检测算法 3 1 1 Roberts 算子算子 Roberts 算子是最老的算子之一 它是使用局部差分算子寻找边缘的 因此有时 候也称之为梯度交叉算子 由于它使用当前像素的 2 2 邻域 计算很简单 它的模 板为图 3 1 所示 图 3 1 Roberts 算子 采用 Robert 算子的效果图如图 3 2 图 3 2 Roberts 算子检测出的边缘 3 1 2 Sobel 算子算子 Sobel 算子是通常用于水平和垂直边缘的一个简单的检测算子 不仅能够检测 复杂背景中二维条码图像的识别研究 18 边缘点 而且可以抑制噪声 Sobel 边缘检测算子的 3 3 模板为 图 3 2 Sobel 算子 3X3 模板 使用 Sobel 算子的实际效果如图 3 4 图 3 4 sobel 算子检测出的边缘 3 1 3 log 算子算子 Log 算子是一种二阶导数算子 由于二阶导数过零点 其一可能对图像形状做 过分的平滑 会明显的丢失掉角点 其二它会产生环形边缘的倾向 在很多的应用 中它会是个明显的缺陷 Log 算子常用的模板如图 3 5 所示 图 3 5 log 算子的模板 使用 log 算子的实际效果如图 3 6 图 3 6 log 算子检测出的边缘 3 1 4 边缘检测算子的选取边缘检测算子的选取 Robert 算子几乎不能抑制噪声 而且掩膜过于简单 Sobel 算子有较好的处理 结果 有一定的抑噪能力 并且是以 prewitt 算子为的基础 Canny 算子处理效果较 好 而且抑制噪声功能较强 但处理时间过长 log 算子会对图像形状做过分的平滑 会明显的丢失掉角点 而我们要检测出 L 型角点很重要 因此本文选用 sobel 算 复杂背景中二维条码图像的识别研究 19 子作为边缘检测的算子 3 2 Hough 变换线段检测变换线段检测 Hough 是用来检测直线和曲线的 然而最初的方法需要知道图像边界线的解析 式 但却不需要有关区域的先验知识 而改进的 Hough 变换是对图像全局进行分割 的边缘点的连接技术 Hough 变换具有抗干扰能力 任何形状的曲线都可以检测出 来 即使曲线上有断裂 并且不受图像旋转的影响 因此在图像预处理中应用很广 泛 下面只介绍检测直线的方法 3 2 1 Hough 变换检测直线原理变换检测直线原理 设图像中的通过某点的直线方程为 3 1 式 3 1 中 b 为该直线在 y 轴上的截距 k 为斜率 b k 可以取任意值 这就表明 同一方程可以理解为在参数空间的方程 所以通过该点的方程亦可以表示成 3 2 同样通过另一点的直线在参数空间可以表示为 3 3 那么在参数空间里的两条直线的唯一公共点就是原图像里连接两点的唯一的直 线 如图 3 7 所示 yy kx b bb kx2 y2 B x2 y2 A x1 y1 b kx1 y1 x k 图 3 7 图像空间与参数空间的直线 这也就是说明 图像空间里的每一条直线 在参数空间 k b 里都有唯一确定的 点与之对应 直线的任意一部分都变换为同一个点 直线检测的基本思想就是确定 图像中所有直线的像素 将通过这么多像素的全部直线 变换到参数空间所对应的 点 在原图像中的所以可能被检测到的直线 都可以通过边缘检测得到 而边缘赋 值超过阈值的像素都可以认为是可能的直线像素 直线的方向上定义参数 k 的离散化 同样参数 q 也是离散的有限的 所以参数 空间也变为了离散的 用矩形的单元表示 我们称这个矩阵为累加矩阵 记为 A 元素记为 A k b 而对于边缘信息 确定参数 k 和 b 这些参数就表示了通过该坐 11 ykxb 22 ykxb 11 ykxb 复杂背景中二维条码图像的识别研究 20 标所表示的像素的直线 参数 k 和 b 用来增加累加单元的值 显而易见 若直线 y kx b 这条直线在原图像之中 那么累加器就会被累加 累加的次数就是直线 y kx b 在图像的某个边缘被检测到像素的个数 而对于任意的点 通过它的直线是 任意的 也就是 k 的取值为任意的 那么 b 就会受到图像像素那点坐标的以及斜率 k 的限制 因此直线会使累加器的值变大 而对于边缘上的 它们在图像上找不到 直线 所以对于边缘直线 累加器很少被累加 也就是说 原图像中的直线作为累 加矩阵中的极值被检测出来 而检测到的直线 就对应于参数空间的累加矩阵的坐 标值确定 3 2 2 Matlab 中的中的 Hough 变换变换 根据 hough 变换检测直线的原理 Matlab 图像处理工具箱提供了 hough 变换函 数 H THETA RHO hough BW PARAM1 VAL1 PARAM2 VAL2 为了能够准 确检测出图像中的直线 这里 BW 是经过边缘检测后的二值图像 PARAM1 为 ThetaResolution PARAM2 为 RhoResolution VAL1 和 VAL2 的取值为 0 5 然后使用 peaks houghpeaks H numpeaks 函数提取参数平面上的峰值点 这里在参 数 numpeaks 选择上我们要尽量不能太小 因为经过边缘检测后 DM 条码里的线段 还是比较多的 接着使用 lines houghlines BW THETA RHO PEAKS 函数提取所 有检测到的线段 最后比较所有检测到的线段的长度 选出最长的两条 并且记录 这两条线段端点的坐标 使用 hough 变换 检测到原 DM 条码中的最长两条最长线段也就是 L 型如 图 3 8 所示 图 3 8 两条最长线段检测 3 3 图像校正图像校正 本节主要讨论 DM 码的校正 首先根据前面确定出的 L 型 计算出条码的 倾斜角度 然后对 DM 码进行旋转 因为旋转之后会出现黑色的背景区域 因此将 黑色的背景区域变白 并且对经过旋转校正后的 DM 条码进一步的精确裁剪 3 3 1 倾角计算倾角计算 实际采集到的条码图案都会有一定的倾斜角度 而使用一般的旋转公式 只能 保证 DM 码保持水平 却不能保证其处于标准位置 也就是 L 型位于水平的左 复杂背景中二维条码图像的识别研究 21 下角 因此在这一节将根据前面得到的两条最长线段的端点 来确定旋转角度 具体的角度计算如下 第一步 在得到的两条线段上 记录四个端点的坐标 并且计算出两条线段所在 直线的斜率 第二步 根据公式 4 1 计算比较不在同一条线段上的两点的距离 确定 L 型的 两个端点 也就是 DM 码的一条对角线 并记录两端点坐标 3 4 22 1010 dxxyy 第三步 比较两个端点 x 坐标的大小 较小的 x 所在的线段我们以其为基准进 行计算 设它所在直线与 X 轴夹角为 ang 并且近似认为另一个端点为两线段的交 点 具体的旋转过程的如图 3 9 所示 a b c d 图 3 9 DM 码旋转过程 复杂背景中二维条码图像的识别研究 22 以 DM 条码逆时针旋转为参考 设旋转角度为 则有以下几种情况 第一种情况 如图 3 9 a 所示 x y1 此时的旋转角度为 3 5 第二种情况 如图 3 9 b 所示 x x1 yx1 y y1 此时的旋转角度为 3 7 3 2ang 第四种情况 如图 3 9 d 所示 x x1 yrimax rimax ritemp result level end end result BW im2bw a 1 result 255 显示二值化以后的图像 figure imshow BW IM 形态学操作 bw 1 BW SE1 ones 8 8 IM1 imerode bw SE1 figure imshow IM1 SE2 ones 30 30 IM2 imdilate IM1 SE2 figure imshow IM2 确定最大连通区域 L num bwlabel IM2 8 标注连通分量 max 0 当前最大连通分量的大小 indMax 0 当前最大连通分量的索引 num for k 1 num y x find L k 找出编号为k的连通区的行索引集合y和列索引集合x nSize length y 计算该连通区中的像素数目 if nSize max max nSize indMax k end end 提取二维 条码区域 r1 c1 find L indMax rmax min 1 r1 cmax min 1 c1 rmin min r1 cmin min c1 A imcrop BW cmin rmin cmax cmin rmax rmin 使用imcrop 函数 figure imshow A bw 1 A bw1 edge bw sobel 复杂背景中二维条码图像的识别研究 28 figure imshow bw1 H T R hough bw1 ThetaResolution 0 5 RhoResolution 0 5 哈弗变换 P houghpeaks H 40 提取Hough变换后参数平面上的峰值点 lines houghlines bw1 T R P 提取线段 num length lines max len1 0 for k 1 length lines len norm lines k point1 lines k point2 if len max len1 max len1 len xy long1 lines k point1 lines k point2 k1 k end end max len2 0 for k 1 length lines len norm lines k point1 lines k point2 if len max len2 xy long2 lines k point1 lines k point2 k2 k end end figure imshow A line xy long1 1 1 xy long1 2 1 xy long1 1 2 xy long1 2 2 LineWidth 3 color b 标出L型区域 line xy long2 1 1 xy long2 2 1 xy long2 1 2 xy long2 2 2 LineWidth 3 color r 以两直线的交点的为坐标原点 并确定位于两条线段端点x坐标较大的一个 x1 y1 另一个为 x2 y2 交点为 x y 0 0 x1 xy long1 1 1 y1 xy long1 1 2 x2 xy lo

温馨提示

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

评论

0/150

提交评论