基于Android平台的QR二维码扫描软件设计与实现
基于Android平台的QR二维码扫描软件设计与实现
二维码的广泛使用,使得二维码解码器的开发显得尤为重要。本文主要论述的是基于Android平台的二维码解码器的设计和实现。Android是一个开源的系统,它底层是基于Linux的操作系统。二维码解码软件是java语言和Eclipse编程工具,在Android开发环境下,进行二维码解码器的编程实现。
本文的二维码解码器主要实现了对QR二维码的扫描、解码,并且根据二维码所隐藏的内容的不同提供不同的功能:调用浏览器访问二维码隐藏的网址,调用系统拨号功能对二维码隐藏的号码进行拨号。 201908062008959
关键字: Android;Eclipse;QR二维码;解码器
2.2.1Android软件包开发包下载
(1) JDK1.7 请到网址 http://www.oracle.com/technetwork/java/index.html 下载。
(2)集成开发环境下载:http://developer.android.com 。
2.2.2其他注意事项
Android的Eclipse插件安装需注意,Eclipse可以对应的网站下载安装,如果通过网络远程安装不成功,可以下载到本地安装。
2.2.3环境安装与搭建
1、集成开发环境
从http://developer.android.com 上去下载最新的集成开发环境,最新针对 Windows 的集成开发环境 Google 已经把 ADT 和 Eclipse 集成到一块儿了,下载的时候作系统的 CPU 架构选择合适的下载。
我 用 的 操 作 系 统 Windows 7 , CPU 是 X86 架 构 , 下 载 下 来 的 文 件 名 是adt-bundle-windows-x86.zip。从名字可以看出,ADT 已经集成到 Eclipse 里了。
把刚下载的文件复制到 D 盘根目录下直接解压(或许自己指定的其它文件夹),得到一个名为 adt-bundle-windows-x86 的文件夹,把该文件夹命名为 android。
3.1二维码图像预处理
3.1.1彩色图像灰度化
实际情况下,通常直接采集到的是彩色图像,而二维码是由黑白二色模块所构成的,而颜色却不包含任何信息,所以要先对采集而来的二维码进行灰度化处理。
彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。
第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
3.1.2 二位图像平滑化
图像平滑是对图像作低通滤波用来消除图像中可能存在的噪声,可在空间域或频率域实现。空间域图像平滑方法主要用低通卷积滤波、均值滤波、中值滤波等;频率域图像平滑常用的低通滤波器有低通梯形滤波器、低通高斯滤波器、低通指数滤波器、巴特沃思低通滤波器等。
由于二维码的边缘信息对于二维码识度来说非常重要,所以会对二维码的边缘信息造成明显影响的平滑方法对于处理二维码来说都是不可取的。
其中均值滤波会使得二维码的边缘模糊,从而会对二维码的识度造成一定的影响,所以不适合用于二维码图像的平滑处理。中值滤波对于二维码中的边缘信号的影响较小,所以可以选作二维码的滤波方法。
3.1.3二维码图像分割
由于二维码本身就是有黑色和白色模块组合而成的具有非常明显的分割特征。因此对于二维码图像的分割常常采用二值化方法进行分割,使用二值化方法进行分割具有速度快、容易实现等特点。二值化分割法通常的做法是:首相选取一个阈值,然后通过使用该值对二维码图像中的每一个像素点进行比较并判断,如果二维码的灰度值大于该值,则使用灰度值中最大的值来替换这个像素的值。反之亦然,如果二维码的灰度值小于该值,则使用灰度值中最小的值来替换该像素的值。二位话算法其实就是求解阈值的算法,根据选取阈值的范围的不同,二值化算法又可以分为全局阈值算法和局部局部阈值算法:
全局阈值算法:全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
局部阈值算法:在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。这时可以根据图像的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图像分割。这时的阈值为自适应阈值。
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1研究背景 1
1.2课题意义 3
1.3毕业设计任务与要求 4
1.4论文结构安排与说明 4
第2章 Android的构架概述及开发环境搭建 6
2.1Android的构架描述 6
2.2Android开发环境搭建 9
2.2.1Android软件包开发包下载 9
2.2.2其他注意事项 9
2.2.3环境安装与搭建 9
2.3二维码介绍 14
第3章 二维码解码技术 16
3.1二维码图像预处理 16
3.1.1彩色图像灰度化 16
3.1.2 二位图像平滑化 16
3.1.3二维码图像分割 17
3.2 二维码的定位与校正 17
3.2.1二维码定位 17
3.2.2二维码校正 18
第4章 系统设计与调试 19
4.1系统总体设计 19
4.1.1系统总体设计目标 19
4.1.2 系统概要设计 19
4.2 系统功能模块设计 20
4.2.1系统总体功能模块 20
4.2.2系统流程图 20
4.2.3 图片处理过程 21
4.2.4界面设计 24
4.3 调试 26
4.3.1软件安装测试 26
4.3.2手机上的测试 29
4.3.3调试结果 29
第5章 结束语 31
5.1 论文总结 31
5.2 前景展望 31
参考文献 33
致谢 34
附录 35
二维码的广泛使用,使得二维码解码器的开发显得尤为重要。本文主要论述的是基于Android平台的二维码解码器的设计和实现。Android是一个开源的系统,它底层是基于Linux的操作系统。二维码解码软件是java语言和Eclipse编程工具,在Android开发环境下,进行二维码解码器的编程实现。
本文的二维码解码器主要实现了对QR二维码的扫描、解码,并且根据二维码所隐藏的内容的不同提供不同的功能:调用浏览器访问二维码隐藏的网址,调用系统拨号功能对二维码隐藏的号码进行拨号。 201908062008959
关键字: Android;Eclipse;QR二维码;解码器
2.2.1Android软件包开发包下载
(1) JDK1.7 请到网址 http://www.oracle.com/technetwork/java/index.html 下载。
(2)集成开发环境下载:http://developer.android.com 。
2.2.2其他注意事项
Android的Eclipse插件安装需注意,Eclipse可以对应的网站下载安装,如果通过网络远程安装不成功,可以下载到本地安装。
2.2.3环境安装与搭建
1、集成开发环境
从http://developer.android.com 上去下载最新的集成开发环境,最新针对 Windows 的集成开发环境 Google 已经把 ADT 和 Eclipse 集成到一块儿了,下载的时候作系统的 CPU 架构选择合适的下载。
我 用 的 操 作 系 统 Windows 7 , CPU 是 X86 架 构 , 下 载 下 来 的 文 件 名 是adt-bundle-windows-x86.zip。从名字可以看出,ADT 已经集成到 Eclipse 里了。
把刚下载的文件复制到 D 盘根目录下直接解压(或许自己指定的其它文件夹),得到一个名为 adt-bundle-windows-x86 的文件夹,把该文件夹命名为 android。
3.1二维码图像预处理
3.1.1彩色图像灰度化
实际情况下,通常直接采集到的是彩色图像,而二维码是由黑白二色模块所构成的,而颜色却不包含任何信息,所以要先对采集而来的二维码进行灰度化处理。
彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。
第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
3.1.2 二位图像平滑化
图像平滑是对图像作低通滤波用来消除图像中可能存在的噪声,可在空间域或频率域实现。空间域图像平滑方法主要用低通卷积滤波、均值滤波、中值滤波等;频率域图像平滑常用的低通滤波器有低通梯形滤波器、低通高斯滤波器、低通指数滤波器、巴特沃思低通滤波器等。
由于二维码的边缘信息对于二维码识度来说非常重要,所以会对二维码的边缘信息造成明显影响的平滑方法对于处理二维码来说都是不可取的。
其中均值滤波会使得二维码的边缘模糊,从而会对二维码的识度造成一定的影响,所以不适合用于二维码图像的平滑处理。中值滤波对于二维码中的边缘信号的影响较小,所以可以选作二维码的滤波方法。
3.1.3二维码图像分割
由于二维码本身就是有黑色和白色模块组合而成的具有非常明显的分割特征。因此对于二维码图像的分割常常采用二值化方法进行分割,使用二值化方法进行分割具有速度快、容易实现等特点。二值化分割法通常的做法是:首相选取一个阈值,然后通过使用该值对二维码图像中的每一个像素点进行比较并判断,如果二维码的灰度值大于该值,则使用灰度值中最大的值来替换这个像素的值。反之亦然,如果二维码的灰度值小于该值,则使用灰度值中最小的值来替换该像素的值。二位话算法其实就是求解阈值的算法,根据选取阈值的范围的不同,二值化算法又可以分为全局阈值算法和局部局部阈值算法:
全局阈值算法:全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
局部阈值算法:在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。这时可以根据图像的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图像分割。这时的阈值为自适应阈值。
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1研究背景 1
1.2课题意义 3
1.3毕业设计任务与要求 4
1.4论文结构安排与说明 4
第2章 Android的构架概述及开发环境搭建 6
2.1Android的构架描述 6
2.2Android开发环境搭建 9
2.2.1Android软件包开发包下载 9
2.2.2其他注意事项 9
2.2.3环境安装与搭建 9
2.3二维码介绍 14
第3章 二维码解码技术 16
3.1二维码图像预处理 16
3.1.1彩色图像灰度化 16
3.1.2 二位图像平滑化 16
3.1.3二维码图像分割 17
3.2 二维码的定位与校正 17
3.2.1二维码定位 17
3.2.2二维码校正 18
第4章 系统设计与调试 19
4.1系统总体设计 19
4.1.1系统总体设计目标 19
4.1.2 系统概要设计 19
4.2 系统功能模块设计 20
4.2.1系统总体功能模块 20
4.2.2系统流程图 20
4.2.3 图片处理过程 21
4.2.4界面设计 24
4.3 调试 26
4.3.1软件安装测试 26
4.3.2手机上的测试 29
4.3.3调试结果 29
第5章 结束语 31
5.1 论文总结 31
5.2 前景展望 31
参考文献 33
致谢 34
附录 35
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/2255.html