【答题卡识别】识别答题卡答案选项、与正确答案对照、判别并计算分数、将结果写入Excel文件、接近100%识别率(Matlab代码实现)

    💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

答题卡智能识别系统需求分析

功能需求

技术要求

过程演示

📚2 运行结果

🎉3 参考文献 

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

答题卡智能识别系统需求分析

在教育领域,随着考试规模的不断扩大,人工批改答题卡的工作量日益繁重且容易出错。为了提高批改效率和准确性,开发一款答题卡智能识别系统显得尤为重要。本系统旨在通过先进的图像处理技术,快速、准确地识别答题卡上的答案选项,并与标准答案进行比对,最终将结果高效地输出到Excel文件中,为教育工作者提供便捷、可靠的辅助工具。

功能需求

  1. 答案选项识别:系统能够精准识别答题卡上的答案选项,涵盖各种常见的填涂方式,无论是圆形、方形还是其他形状的选项框,都能准确捕捉填涂痕迹,确保识别过程不受选项形状和布局的限制。

  2. 答案对照与分数计算:识别出的答案选项将与预先设定的标准答案进行严格对照。系统会自动判别每个选项的正确与否,并根据设定的评分规则,快速计算出考生的总分以及各题的得分情况,为后续的成绩分析提供准确的数据支持。

  3. 结果输出与存储:识别和评分的结果将被清晰地写入Excel文件中。文件中不仅包含考生的姓名、考号等基本信息,还会详细列出每道题的答案、得分情况以及总分,方便教师进行成绩统计、分析和存档。同时,系统支持对多个考生的答题卡进行批量处理,自动生成统一格式的Excel表格,提高工作效率。

  4. 高识别率保障:系统致力于实现接近100%的识别率,通过优化图像处理算法和增强识别模型的训练,确保在各种复杂条件下(如答题卡的印刷质量差异、填涂深浅不一、扫描或拍照的清晰度不同等)都能准确识别答案选项,最大程度减少误判情况的发生。

技术要求

  1. 图像预处理:在识别答题卡之前,系统会对图像进行一系列预处理操作,包括灰度化、二值化等。灰度化能够将彩色图像转换为灰度图像,降低图像数据的复杂度,同时保留图像的基本结构信息;二值化则将灰度图像进一步简化为黑白两色图像,突出填涂痕迹与空白区域的对比,为后续的识别和分析提供更清晰的图像基础,有效提高识别的准确性和效率。

  2. 倾斜校正:由于答题卡在扫描或拍照过程中可能会出现倾斜的情况,影响识别的准确性。系统采用Hough变换技术进行倾斜校正,通过检测图像中的直线,计算出答题卡的倾斜角度,并将其调整至水平状态,确保后续的定位和识别操作能够在正确的图像坐标系下进行,避免因倾斜导致的误判和定位偏差。

  3. 畸变校正:除了倾斜问题,答题卡还可能因扫描设备的光学畸变或拍摄角度不正而产生畸变。系统通过角点检测和投影变换技术进行畸变校正。首先,利用角点检测算法精确定位答题卡的四个角点,即使在角点部分存在遮挡或模糊的情况下,也能通过优化算法准确找到关键点;然后,根据检测到的角点坐标,运用投影变换将畸变的答题卡图像映射到一个标准的矩形区域,恢复其原始的几何形状,为准确划分填涂区域和识别答案选项提供保障。

  4. 精准识别与定位:系统具备较低的误识别率,能够准确定位答题卡上的填涂痕迹。在识别过程中,结合多种图像特征和先进的识别算法,对填涂区域进行细致分析,区分出真正的填涂痕迹与可能存在的干扰因素(如污渍、折痕等),确保识别结果的准确性和可靠性。同时,通过优化算法和模型训练,不断提高识别速度,满足实际应用中对效率的要求。

  5. 答案比对与分析:识别出的答案选项将与标准答案进行逐一对比,系统不仅会给出每个选项的正确与否,还会对整体答题情况进行综合分析。例如,统计每道题的正确率、错误选项的分布情况等,为教师提供更全面、深入的教学反馈信息,帮助教师了解学生的学习情况,针对性地调整教学策略。

过程演示

以下是答题卡智能识别系统的关键处理过程演示图,展示了从图像采集到结果输出的完整流程:

  1. 灰度化:将彩色答题卡图像转换为灰度图像,为后续处理做准备。

  2. 预处理:对灰度图像进行二值化等操作,突出填涂痕迹,便于后续识别。

  3. 边缘检测:通过边缘检测算法,提取答题卡的轮廓信息,为定位和校正提供依据。

  4. 定位感兴趣区域轮廓:在边缘检测的基础上,进一步定位答题卡上包含答案选项的感兴趣区域轮廓,缩小识别范围,提高效率。

  5. 倾斜校正:运用Hough变换技术对倾斜的答题卡图像进行校正,使其恢复到水平状态,确保后续处理的准确性。

  6. 再次精确定位感兴趣区域:在倾斜校正后的图像中,进一步精确确定答题卡上答案选项区域的位置,为后续的识别和划分提供更准确的定位信息。

  7. 闭运算:通过闭运算操作,填补填涂痕迹中的小空隙,使填涂区域更加完整,提高识别的准确性。

  8. 角点检测:检测答题卡的四个角点,为畸变校正提供关键坐标信息。

  9. 精确定位4个角点:在角点检测的基础上,进一步精确确定答题卡的四个角点位置,其中左上角的两个角点只需定位一个即可满足校正需求,确保畸变校正的准确性。

  10. 畸变校正(投影变换):根据检测到的角点坐标,运用投影变换技术对畸变的答题卡图像进行校正,恢复其标准的矩形形状,为准确划分填涂区域和识别答案选项奠定基础。

  11. 划分填涂区域:在经过校正的答题卡图像中,按照预设的规则和布局,精准划分出每个答案选项的填涂区域,为后续的识别操作提供明确的范围。

  12. 识别结果输出到Excel文件:将识别出的答案选项、得分情况等结果清晰地写入Excel文件中,方便用户查看、统计和存档。

通过以上需求分析和技术实现,本答题卡智能识别系统将为教育工作者提供高效、准确的答题卡处理解决方案,助力教育信息化的发展。

📚2 运行结果

运行结果图比较多,就不一一展示。

部分代码:

%确定p_ul对应的是左上角哪一个角点
        %用两个点确定一条直线,一是ur(右上角点)和bl(左下角点)的中点,二是br(右下角点),如果ul在直线上方,就是‘L’类型,否之为'R'
        mid_ur_bl = zeros(1,2);
        mid_ur_bl(1,1)=round((p_ur(1,1)+p_bl(1,1))/2);
        mid_ur_bl(1,2)=round((p_ur(1,2)+p_bl(1,2))/2);
        x1=mid_ur_bl(1,1);
        y1=mid_ur_bl(1,2);
        x2=p_br(1,1);
        y2=p_br(1,2);
        Y=(y2-y1)*(p_ul(1,1)-x1)/(x2-x1)+y1;%(X-x1)(y2-y1)=(Y-y1)(x2-x1)-->Y=(y2-y1)(X-x1)/(x2-x1)+y1
        if Y>=0
            ul_type = 'L';
        else
            ul_type = 'R';
        end
        %返回 p_ul,p_ur,p_bl,p_br,ul_type
        
        %% 投影变换,解决透视变形问题
        SHOW = 1;
        %原来的点
        x = [p_ul(1) p_ur(1) p_br(1) p_bl(1)];
        y = [p_ul(2) p_ur(2) p_br(2) p_bl(2)];     
        %校正后的点
        [height,width] = size(rotated_ROIofBW); 
        if ul_type=='L'
            ul_x=1;ul_y=round(150.0/3530*height);
        else
            ul_x=(140.0/2472*width);ul_y=1;
        end
        X=[ ul_x width  width    1    ];
        Y=[ ul_y   1    height height ];
        tform = fitgeotrans([ x' y'],[ X' Y'],'Projective');
        outputView = imref2d([height,width]);

        corrected_im_gray = imwarp(rotated_ROI_ORI,tform, 'OutputView', outputView);%这个图只是为了展示用,实际识别没有用到
        corrected_img = ~imwarp(~rotated_ROIofBW,tform, 'OutputView', outputView);%这里的两次取反操作细节是反复实验的结果,
                                                                                   %仿射变换会使总体的灰度值降低,降低图像质量,
                                                                                   %先取反,再做仿射变换,再取反反而会增强原信号                                                                           %
        %显示
        if SHOW
            figure,subplot(121),imshow(rotated_ROIofBW,'InitialMagnification','fit');title('畸变校正(投影变换)前');
            subplot(122),imshow(corrected_img,'InitialMagnification','fit');title('畸变校正(投影变换)后');
        end
        
        %% 填涂区域划分
        SHOW =1;
        bw_im = ~corrected_img;
        [h,w]=size(bw_im);
        %寻找锚点/定位点
        x_start = w-int32(380/3774*w);
        anchor_region=bw_im(1:h,x_start:w-10);
        [rh,rw]=size(anchor_region);
        anchor_region = bwareaopen(anchor_region,floor(rh/200*rw/12));%去掉小的连通域
%         figure,imshow(anchor_region);
        STATS = regionprops(anchor_region,'basic');%basic:Area,Centroid,BoundingBox

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]杨青燕,彭延军.基于灰度图像的答题卡识别技术[J].山东科技大学学报:自然科学版, 2009, 28(3):4.

[2]周海涛,韩晓军.基于数字图像处理的答题卡识别方法研究[J].电脑知识与技术:学术版, 2008(10):3.

[3]郝平.图像处理耦合模板定位的答题卡识别研究与应用[J].计算技术与自动化, 2015, 34(4):5.

🌈Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值