资源描述:
《二维码的生成与实现(matlab).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计报告课题名称:二维码的生成与识别项目完成人(班级、学号、姓名):项目完成时间:2017/6/15一、引言1、编写目的本学期学习《数字图像处理》,包含很多知识点,像:图像编码与压缩、图像相关变换、图像增强技术、图像复原技术,这些知识点的应用在实际编程中都非常重要。纸上得来终觉浅,绝知此事要躬行。所以,这次课程设计的目的主要就是巩固所学的数字图像处理的相关知识。最终是我们通过该教学环节,把该课程以及相关知识融会贯通。2、背景由于受信息的容量限制,一维条码仅仅是对“物品”的标识,而不是对“物品”的描述
2、,故一维条码的使用不得不依赖数据库存在。在使用上受到了极大的限制,效率很低。二维码正是为了解决一维条码无法解决的问题而产生的。二维码具有高密度、高可靠性等特点,可以用来表示数据文件、图像等,实现信息获取、网站跳转、广告推送、手机电商、优惠促销、会员管理等功能,具有很强的研究意义。3、参考资料《数字图像处理》第三版胡学龙二、设计方案1、图像采集图像主要来自网上在线生成的二维码图像和该程序生成的二维码图像。1、算法分析预处理过程灰度化-----平滑处理------二值化1.灰度化:一般都是为了减小图像原始数
3、据量,便于后续处理时计算量更少,因为图像处理不一定需要对彩色图像的RGB三个分量都进行处理2.平滑处理:图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。图像平滑的方法包括:插值方法,线性平滑方法,卷积法等等。这样的处理方法根据图像噪声的不同进行平滑,比如椒盐噪声,就采用线性平滑方法!3.二值化:图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。二维码解码二维码解码
4、主要使用的是ZXing库,ZXing是个很经典的条码/二维码识别的开源类库2、代码实现打开图像functionpushbutton1_Callback(hObject,eventdata,handles)globalim;[filename,pathname]=uigetfile({'*.*';'*.bmp';'*.jpg';'*.tif';'*.jpg'},'选择图像');ifisequal(filename,0)
5、
6、isequal(pathname,0)errordlg('您还没有选取图片!!','
7、温馨提示');%如果没有输入,则创建错误对话框return;elsedisp(['Userselected',fullfile(pathname,filename)]);fprintf('fffffff%s',filename);im=imread(filename);%读取图像figureimshow(im);%在坐标axes1显示原图像title('原始图像');End灰度化处理functionpushbutton4_Callback(hObject,eventdata,handles)glob
8、alim;globalII;I=im;[w,h,l]=size(I);%图像大小II=[];fori=1:hforj=1:wII(j,i)=0.3*I(j,i,1)+0.59*I(j,i,2)+0.11*I(j,i,3);%灰度化处理公式endendfigure,imshow(II,[])%显示图像title('二维码灰度化处理');平滑处理functionpushbutton5_Callback(hObject,eventdata,handles)globalII;globalI3;III=uint8
9、(II);%图像转换0-255Ix=imnoise(III,'salt&pepper',0.02);%对灰度化图像人为加噪声I3=medfilt2(Ix,[3,3]);%平滑处理figureimshow(Ix)title('二维码加噪处理');figureimshow(I3)title('二维码平滑处理');二值化处理functionpushbutton6_Callback(hObject,eventdata,handles)globalI3;globalI_otsu;I_otsu=otsut(I3);
10、%二值化处理figureimshow(I_otsu,[])title('二维码二值化处理');旋转校正functionpushbutton7_Callback(hObject,eventdata,handles)globalim;%倾斜校正:二值化,取边缘,Hough变换得到角度,旋转I=im;bw=rgb2gray(I);%rgb转换为灰度图bw=im2bw(I,graythresh(bw));%二值化过程bw=double(bw);BW