数字图像处理课程设计之二维码识别.doc

数字图像处理课程设计之二维码识别.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理课程设计之二维码识别 数字图像处理课程设计之二维码识别 PAGE 数字图像处理课程设计之二维码识别 河 南 农 业 大 学 《数字图像处理》 题 目: 二维码的识别 学 院: 专 业: 班 级: 学 号: 姓 名: 指导教师: 成 绩: 时 间: 年 月 日至 年 月 日 二维码的识别 一、目的与要求 本课题主要研究二维条码的识别程序及译码方法,使用C语言来开发二维码的识别程序。 查找并阅读相关资料,了解基本的内容,利用需求分析文档,对整个系统有个初步的架构。搜寻实验用的文件文档集和研究过程中用到的各种工具软件。根据已有的资料并借助面向对象的程序设计思想对系统各模块进行分析、建模、设计。使用C语言来开发二维码识别程序。 二、设计的内容 本文主要来完成二维码识别和译码程序,运用图像校正、二值化、边缘检测等各种图像处理方法实现条码的预处理,并进行二维码码的解码,结合图像处理技术,完成了基于图像处理的二维码快速识别的解码系统。 三、总体方案设计 本设计的主要任务是在研究二维条码的码制标准的基础上实现对二维码的告诉采集与识别,详细分析二维码的基本特点、符号结构;在条码图像识别方面,研究了对采集的条码图像进行预处理的方法,即:对图像进行整形。运用图像校正、二值化、去噪、边缘检测、Hough变换、图像旋转等多种图像处理方法实现条码图像的预处理、条码定位、条码分割和数据提取。对预处理后的条码图像进行译码。 四、各个功能模块的主要实现程序 (一) 二维码的识别流程 灰度化 灰度化 去噪 二值化 寻找探测图形 确定旋转角度 定位 旋转 获得数据 首先,对采集的彩色图像进行灰度化,以提高后继的运行速度。 其次,去除噪声。采用十字形中值滤波去除噪音对二码图像的干扰主要是盐粒噪声。 再次,利用灰度直方图工具,使用迭代法选取适当的阈值,对二维码进行二值化处理,使其变为白底黑色条码。 最后,确定二维码的位置探测图形,对条码进行定位,旋转至水平后,获得条码数据,以便下一步进行解码。 (二)图像的灰度化 灰度化的常用方法有两种: (i,j) = * R(i,j) + * G(i,j) + * B(i,j) (i,j) = [30 * R(i,j) + 59 * G(i,j) + 11 * B(i,j)]/100 本设计进行灰度化的实现函数如下: internal virtual void imageToGrayScale(int[][] image) { for (int y = 0; y image[0].Length; y++) { for (int x = 0; x ; x++) { int r = image[x][y] 16 0xFF; int g = image[x][y] 8 0xFF; int b = image[x][y] 0xFF; int m = (r * 30 + g * 59 + b * 11) / 100; image[x][y] = m; } } (三)图像的降噪处理 降噪的方法很多,选用的是中值滤波法,因为中值滤波是一种非线性平滑滤波器。中值滤波在降低噪声的同时,又可以保持图像的细节,使用中值滤波时能较好保护图像的边缘。 中值滤波的滤波窗口的形状和尺寸对滤波效果有一定的影响。常用的中值滤波窗口形状一般为正方形、十字形等。就一般经验而言,对于有缓慢变化的较长轮廓线物体的图像,适合使用正方形窗口;对于包含尖角物体的图像,适合使用十字形窗口。窗口大小一般小于图像中最小有效物尺寸为宜。 中值滤波的函数实现如下: internal virtual bool[][] applyMedianFilter(bool[][] image, int threshold) { bool[][] filteredMatrix = new bool[][]; for (int i = 0; i ; i++) { filteredMatrix[i] = new bool[image[0].Length]; } ength - 1; y++) { for (int x = 1;

文档评论(0)

135****2419 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档