ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:128.18KB ,
资源ID:16256445      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16256445.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于数字图像处理技术的答题卡识别方法图像处理课程练习文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于数字图像处理技术的答题卡识别方法图像处理课程练习文档格式.docx

1、注意到答题卡在采集图像的过程中由于各种原因可能会产生图 像倾斜、水平或垂直错位,要进行正确识别首先必须对其进行校正, 再依据像素检索技术进行识别。二、总体方案设计说明系统运行环境,编程软件平台,编码算法原理,算法流程图设计本系统运行在当今主流的 Windows7系统,使用较新的MATLAB2012b进行设计。 在进行旋转校正时,先使用 Hough变换检测出答题卡边缘直线,调用lines函数 的参数得到倾斜角度并进行旋转变换从而消除答题卡倾斜状态。 将扫描部分分为7个扫描区域,分别使用像素检索技术,对各个检索区域内的灰度值进行累加, 并对累加和进行阈值判定,从而得出检索区域颜色,完成判定。最后再

2、与标准答 案进行比对,得出成绩。流程图:分别依次统计各大扫 描区域内各个检测区 域的灰度值阈值判定,得出所检 测区域颜色并赋值1与标准答案比成绩匕对算出结束三、程序设计clc;clear;close;A=imread(原图.jpg);%读取图像imshow(A),title(原图gray=rgb2gray(A);bw=edge(gray,ca nn y%ca nny算子边缘检测得到二值边缘图像 h,t,r=hough(bw,RhoResolutio n,0.5,ThetaResolutio n,0.5); %Hough变换figure,imshow(imadjust(mat2gray(h),X

3、Data,t,YData,r,l ni tialMag ni ficatio n,fit),titl e(Hough变换矩阵%显示Hough变换矩阵xlabel(theta),ylabel(rhoaxis on, axis no rmal,hold on;P=houghpeaks(h,2);x=t(P(:,2);y=r(P(:,1);plot(x,y,scolorr),title(%获取并标出参数平面的峰值点lin es=houghli nes(bw,t,r,P,FillGap,5,Mi nlen gth,7);%检测图像中的直线段 figure,imshow(gray);hold on;ma

4、x_le n=0;for i=1:le ngth(li nes)xy=li nes(i).po in t1;li nes(i).po in t2;plot(xy(:,1),xy(:,2),LineWidth,2,Colorg% 用绿色线段标注直线段 plot(xy(:,1),xy(1,2),xL in eWidthy,1),xy(2,2),% 标注直线段端点endx=li nes.theta;%由与图像边缘平行的直线段的斜率得到整个图像旋转的角度B=imrotate(gray,x);% 图像修正 figure,imshow(B),title(旋转后图像T=graythresh(B);%使用OT

5、SU方法获得阀值T result=im2bw(B,T);% 二值化图像 figure,imshow(result),title(二值化后结果%扫描区域:在本程序中,有7个扫描区域,分别对应题号为1-5,6-10,11-15,16-20,21-25,26-30,31-35这几个区域n=52;m=244;%首先测得答题区域第一题A选项左上角的坐标(52,244) s=60;t=90;%s为上下两个扫描区域的距离,t为左右两个扫描区域的距离。 P=4;Q=5;%P为字母项的个数(这里有 ABCD共有4项),Q为每个小区域选项 数。in terval_le ngth=14;%左右相邻两题填涂区域左边线

6、的距离in terval_width=9;%上下相邻两题填涂区域上边线的距离len gth=11;%填涂区域的长度width=6;%填涂区域的宽度a2=zeros(4,5);%初始化灰度值统计矩阵%第1-5题区域的检测for P=1:4for Q=1:5%m=244;%第1-5题区域的检测的起始坐标(即第一题 A选项左 上角的坐标)a仁result(m+(P-1)*(interval_width+1) :m+(P-1)*(interval_width+1)+width,n+(Q-1)* (in terval_le ngth+1): n+(Q-1)*(i nterval_le ngth+1)+l

7、e ngth);-%得到矩形区域内各像素的灰度值sum仁sum(sum(a1);%计算统计的矩形区域内像素灰度值之和 a2(P,Q)=sum1;%多次循环后得到20个统计区域的灰度值,并依次放在 a2矩阵中a2(a2=81)=0;%对灰度值统计矩阵里的数值进行处理,大于某一阀值的值赋 1,其余的赋0。%在此程序中,涂黑则相应数值为1。result1_5=a2;%存储1-5题的结果%第6-10题区域的检测a仁 result(m+s*1+(P-1)*(i nterval_width+1) :m+s*1+(P-1)*(i nterval_width+1)+width, n+(Q-1)*(i nter

8、vale ngth+1): n+(Q-1)*(i ntervale ngth+1)+le ngth); a2(P,Q)=sum1; result6_10=a2; %存储 6-10 题的结果%第11-15题区域的检测a仁result(m+(P-1)*(interval_width+1):m+(P-1)*(interval_width+1)+width,n+t*1+(Q -1)*(i nterval_le ngth+1): n+t*1+(Q-1)*(i nterval_le ngth+1)+le ngth);sum1=sum(sum(a1); result11_15=a2; %存储 11-15 题

9、的结果%第16-20题区域的检测a仁result(m+s*1+(P-1)*(interval_width+1) :m+s*1+(P-1)*(interval_width+1)+width, n+t*1+(Q-1)*(i nterval_le ngth+1):a2(P,Q)=sum1;end endresult16_20=a2; %存储 16-20 题的结果%第21-25题区域的检测a仁result(m+s*2+(P-1)*(i nterval_width+1) :m+s*2+(P-1)*(i nterval_width+1)+width, n+t*1+(Q-1)*(i nterval_le n

10、gth+1):result21_25=a2; %存储 21-25 题的结果%第26-30题区域的检测a1=result(m+s*3+(P-1)*(i nterval_width+1) :m+s*3+(P-1)*(i nterval_width+1)+width, n+t*1+(Q-1)*(i nterval_le ngth+1):result26_30=a2; %存储 26-30 题的结果%第31-35题区域的检测a仁result(m+s*4+(P-1)*(i nterval_width+1) :m+s*4+(P-1)*(i nterval_width+1)+width, n+t*1+(Q-1

11、)*(i nterval_le ngth+1):result31_35=a2; %存储 31-35 题的结果an swer=result1_5,result6_10,result11_15,result16_20,result21_25,result26_30,result31_35;%将所检测的7个区域的结果汇总dlmwrite(Result.txt,answer);%以txt文本的形式输出结果矩阵disp(a nswer);%在 comma nd窗口实时显示结果%附加一个统计错误的并显示分数的部分,假定正确答案是 35个CT=zeros(4,35);%初始化矩阵T(1,:)=1;%设定正确

12、答案的参数mark仁a nswer-T;wrongx=sum(mark1=0);%当结果选错时,每一列将分别多一个1与-1。选择正确 时,此列都是0。A=sum(sum(wro ngx);%统计非零的结果。wrong=A/2;%由于-1与1是成对出现的,所以需要将上一步所得结果除以 2.score=35-wr on g;%算 出结果fprintf(选择题得分为d,score);%在comma nd窗口输出成绩四、模块测试与分析1、首先进行Hough变换,得到Hough变换矩阵如下所述(见图1)-600-400-200200400600图1可以观察到2个峰值。2、使用Houghlines函数检测

13、直线,得到如下结果(见图 2)图2并使用lines.theta语句得到直线角度,即为图像倾斜角度。x=lin es.theta x =43、修正图像(如图3所示)旋转后图像图3这时观察到倾斜的图像已经得到改正。4、在二值化后使用像素检索技术对灰度值进行统计。分为 7个扫描区域,如图4中7个方框所示。五、测试与调试过程这次实验遇到的第一个问题是如何由 Hough变换得到直线角度。这个是教材上没有的。网上提示说是调用lines函数,但没有说怎么调用。后来才从一篇Hough 变换的文章中知道是lines.theta,类似于C#的调用方法。还有就是在本次设计中 我第一次是将旋转部分和灰度值统计部分分开

14、写成 2个m文件的,然后再直接合并,结果发现有误。经过检查后发现 matlab在读取图片时会在原图片外加一圈白色“幕布”,导致原图片的长与宽发生变化,使原图片中的坐标也发生变化。因此最后还得重新修改相关参数。六、结果与心得体会扫描矩阵为,注意观察其中1出现的位置,和答题卡中填涂区域完全一致, 所以可知此方法成功的进行地对答题卡进行J识别。Columns 1 through 9Colum ns 10 through 18Colum ns 19 through 27Columns 28 through 35输出结果为得分为4分,与预期值也相符(假定正确答案是 35个A)本论文使用图像处理技术以MATLAB为工具成功实现了对答题卡填涂区域的识 别,具有一定的实用价值。图像处理课程是一门实践性很强的课程, 通过这次课程设计我对图像处理的基本思路有了基本的认识。 在这次设计中,我的最大收获是做任何东西都必须苦心钻研,积极查找资料。欢迎下载

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1