1 简介
目前,考试阅卷使用光标阅读机进行阅卷.而教师个人及普通学校则难以承担光标阅读机高昂的购买与维护费用.如何保证计算机视觉相关技术在教育教学领域被充分应用,使教师个人,普通学校以及偏远山区的学校也能享受到教育信息化发展的红利,是急需解决的问题.答题卡识别作为计算机视觉研究的内容之一,是图像处理和人工智能领域研究的一个重要方向.将其运用到教育教学领域,则能有效解决这一问题,将老师从繁复的阅卷劳动中解放出来,推动教育教学质量上台阶.本文对目前的答题卡识别技术进行了研究,分析了其现实需求,在此基础上,设计实现了基于计算机视觉的答题卡识别系统.本文通过普通USB摄像头实现答题卡图像采集,采用计算机视觉技术进行图像预处理和答卷识别.为此,设计制作了答题卡模板,搭建了答题卡图像采集的环境;采用图像灰度化,图像二值化等方法实现对答题卡图像的预处理;采用仿射变换,模板匹配,投影法,差分遍历向量法等方法实现对答题卡信息的识别.
2 部分代码
clc;clear;close;
A=imread('datika.jpg');%读取图像
imshow(A),title('原图');
gray=rgb2gray(A);
bw=edge(gray,'canny');%canny算子边缘检测得到二值边缘图像
[h,t,r]=hough(bw,'RhoResolution',0.5,'ThetaResolution',0.5); %Hough变换
figure,imshow(imadjust(mat2gray(h)),'XData',t,'YData',r,'InitialMagnification','fit'),title('Hough变换矩阵');%显示Hough变换矩阵
xlabel('\theta'),ylabel('\rho');
axis on, axis normal,hold on;
P=houghpeaks(h,2);
x=t(P(:,2));y=r(P(:,1));
plot(x,y,'s','color','r'),title('');%获取并标出参数平面的峰值点
lines=houghlines(bw,t,r,P,'FillGap',5,'Minlength',7);%检测图像中的直线段
figure,imshow(gray);
hold on;
max_len=0;
end
end
a3(a3<210)=1;
a3(a3>=210)=0;%对灰度值统计矩阵里的数值进行处理,大于某一阀值的值赋1,其余的赋0。
%在此程序中,涂黑则相应数值为1。
result1_xh=a3;%存储1-5题的结果
answer1=[result1_xh];%将所检测的7个区域的结果汇总,result31_35
dlmwrite('Result.txt',answer1);%以txt文本的形式输出结果矩阵
disp(answer1);%在command窗口实时显示结果
% fprintf('选择题得分为%d',score);%在command窗口输出成绩
%附加一个统计错误的并显示分数的部分,假定正确答案是35个C
T=zeros(4,30);%初始化矩阵
T(4,:)=1;%设定正确答案的参数
mark1=answer-T;
wrongx=sum(mark1~=0);%当结果选错时,每一列将分别多一个1与-1。选择正确时,此列都是0。
A=sum(sum(wrongx));%统计非零的结果。
wrong=A/2;%由于-1与1是成对出现的,所以需要将上一步所得结果除以2.
score=30-wrong;%算出结果
fprintf('选择题得分为%d',score);%在command窗口输出成绩
%
% JQ=imcrop(result,[40,530,800,800]);
% figure,
% imshow(JQ);
3 仿真结果
4 参考文献
[1]张菲菲. 基于计算机视觉的答题卡识别系统的设计与实现[D]. 西北大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。