【MATLAB图像处理实用案例详解(2)】—— 基于Hough变换的答题卡识别

本文主要是介绍【MATLAB图像处理实用案例详解(2)】—— 基于Hough变换的答题卡识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 一、背景意义
    • 二、理论基础
      • 2.1 图像二值化
      • 2.2 倾斜校正
      • 2.3 图像分割
        • 2.3.1 基于区域的分割方法
        • 2.3.2 基于边界的分割方法
    • 三、算法流程
      • 3.1 图像灰度化
      • 3.2 灰度图像二值化
      • 3.3 图像平滑滤波
      • 3.4 图像校正
      • 3.5 分割定位
      • 3.6 填写检查
    • 四、效果演示
    • 五、完整代码

一、背景意义

研究答题卡识别软件的设计与开发,集成了图像分割模式识别等领域的功能模块,涉及计算机图像处理的一系列知识。通过图像处理技术,系统能够识别答题卡图像的答案选项,再通过输入正确答案的答题卡并与之对照,进而对学生答题卡进行判别并计算出分数。本案例侧重于图像识别方面的实现,应用了图像校正模式识别等方面的算法。

二、理论基础

答题卡自动阅卷系统通过获取答题卡图像作为系统输入,并通过计算机处理、自动识别填涂标记,存入数据库完成阅卷。在图像数字化的过程中,受设备、环境等因素的影响,答题卡图像的质量在一定程度上下降,影响自动阅卷的准确率,甚至导致无法正常阅卷。因此,要对所获取的图像进行一系列的预处理滤去干扰、噪声,做几何校正、彩色校正等操作,并进行二值化处理,以确保后续步骤能顺利进行。

2.1 图像二值化

彩色图像经过灰度化处理后得到灰度图,每个像素都仅有一个灰度值,该灰度值的大小决定了像素的亮暗程度。对灰度图像进行二值化处理,也就是说各像素的灰度值只有0 和1两个取值,用来表示黑白两种颜色,这样可以大大减少计算的数据量。
进行二值化的过程中,阈值的选取是关键,阈值选取方法可以分为全局局部两种,不同考生填涂答题卡的深浅度往往不同。如果采用由用户指定阈值的方法,则可能会产生对每张答题卡都需要进行阈值调整的要求,而且在光照不均匀等因素的影响下往往会出现目标区域二值化异常的现象。采用局部平均阈值法自动确定阈值当像素点的灰度值小于阈值时,则将该点的数值置为0, 否则将数值置为1

2.2 倾斜校正

答题卡图像的倾斜校正一般分为两步:第一步,查找倾斜角度;第二步,进行坐标变换,得到校正后的图像。其中,常用的倾斜角度查找方法有两种: 一种是利用Hough 变换来找出倾斜角度另一种是利用角点检测来找出倾斜角度

Hough 变换作为一种参数空间变换算法,直线和其他参数化形状检测的重要工具。Hough 变换具有较强的稳定性和鲁棒性,可以在一定程度上避免噪声的影响,后续研究将极坐标引入Hough 变换,使这种方法可以更加有效地用于直线检测和其他任意几何形状的检测。Ballard 提出了非解析任意形状的R表法,将Hough 变换推广到对任意方向和范围的非解析任意形状的识别,这种方法被称为广义Hough 变换,论文链接:“Generalizing the Hough transform to detect arbitrary shapes”。
在这里插入图片描述

直线 y = m x + b y=mx+b y=mx+b可用极坐标表示为: r = x c o s ( θ ) + y s i n ( θ ) r=xcos (θ) + ysin (θ) r=xcos(θ)+ysin(θ)
在这里插入图片描述
( r , θ ) (r, θ) (r,θ) 定义了一个从原点到该直线最近点的向量。 x 、y 平面上的任意一条直线的Hough 变换就是寻找r 、 θ 平面上的一个对应点的过程。

多级Hough 变换首先用较大的θs和θr以求出倾斜角度的大致范围,然后用较小的θs和θr对倾斜角度进行细化处理。

计算答题卡图像的倾斜角度时,为了消除涂抹区域部均匀的影响,对已获取的满足上述特征的极大值对应的倾斜角度,可采用算术平均的方式进行优化处理。假设每行答题区对应的倾斜角度为θi, (i=1,2,…, N, N 通常为答题区的总行数),则图像的倾斜角度θ:
在这里插入图片描述
获取答题卡图像的倾斜角度后,可以对图像进行旋转处理。假设点(x0 , y0)绕点(a , b) 旋转θ 度后坐标为(x1,y1) ,旋转后中心坐标为(c,d) ,则:
( x 1 y 1 1 ) = ( 1 0 c 0 − 1 d 0 0 1 ) ( c o s ( θ ) s i n ( θ ) 0 − s i n ( θ ) c o s ( θ ) 0 0 0 1 ) ( 1 0 − a 0 − 1 b 0 0 1 ) ( x 0 y 0 1 ) \left( \begin{array}{lcr} x_1 \\ y_1 \\ 1 \end{array} \right)=\left(\begin{array}{lcr} 1 & 0 &c \\ 0 & -1&d \\ 0 & 0&1 \end{array} \right) \left( \begin{array}{lcr} cos(θ) & sin(θ) & 0 \\ -sin(θ) & cos(θ) & 0 \\ 0 & 0 & 1 \end{array} \right) \left( \begin{array}{lcr} 1 & 0 & -a \\ 0 & -1 & b \\ 0 & 0 & 1 \end{array} \right)\left( \begin{array}{lcr} x_0 \\ y_0 \\ 1 \end{array} \right) x1y11 = 100010cd1 cos(θ)sin(θ)0sin(θ)cos(θ)0001 100010ab1 x0y01

2.3 图像分割

对灰度图像的分割通常可基于像素灰度值的两个性质: 不连续性相似性。图像固定区域内部的像素一般都具有灰度相似性,而在不同区域之间的边界上一般具有灰度不连续性,也就是区域边缘属性

因此,灰度图像分割方法一般可以分为基于区域的方法和基于边界的方法。前者利用区域内的灰度相似性进行分割,后者利用区域间的灰度不连续性进行分割。

根据分割过程中选择的运算策略不同,分割算法又可分为并行算法和串行算法。在并行法过程中,所有检测和分割都可独立和同时地进行,利于提高运算效率 。在串行算法过程中,后续的处理流程要用到之前的步骤得到的结果,要求程序运行具有连续性。

2.3.1 基于区域的分割方法

基于区域的分割方法以区域内像素的相似性特征为依据,将图像划分成一系列有意义的独立区域,实现分割的目标。常用的有灰度阈值法和区域增长法。

2.3.2 基于边界的分割方法

基于边界的分割方法也称为基于梯度的图像分割方法,其关键步骤是进行边缘检测。首先检测图像中的边缘点,然后按照一定的策略连接成轮廓线得到边界,最后根据边界得到分割区域。其中,进行边缘检测的常用方法有图像微分(差分)梯度和拉普拉斯变换等。
仅进行边缘检测不等于图像分割的完成,则还需要继续将边缘点按某种策略连接成边缘线,形成直线、曲线、轮廓线等, 直到能表示图像区域的边界。边缘点连接成线包括两个过程: 检测可能的边缘点; 将得到的边缘点通过连接或拟合等方式获取连续的线。该方法涉及边缘检测,需要综合考虑图像抗噪性和检测精度的矛盾:若提高抗噪性,则往往会产生边缘丢失或位置偏差;若提高检测精度,则往往会产生噪声伪边缘或错误的轮廓。

三、算法流程

一种能够有效识别答题卡的方法:
利用基于Hough变换的直线检测技术检测图像的倾斜度→对存在倾斜的图像进行旋转校正→实现答题卡答案的定位和检测→使用像素灰度积分统计的方法进行识别

3.1 图像灰度化

采用加权平均值法对原始RGB图像进行灰度化处理,该方法的主要思想是从原图像中取R、G、B 各层像素值并经过加权求和得到灰度图的亮度值。
灰度化后结果如下:
在这里插入图片描述

3.2 灰度图像二值化

图像二值化是图像处理的基本技术之一,而阈值的选取则是图像二值化的关键步骤。根据考生填涂答题卡的答案目标区域特点,可选择适当的阈值T 进行二值化。当像素点的灰度值小于T 时,则将该点的颜色值置为“ 0", 否则将其颜色值置为“1”。
二值化后结果如下:
在这里插入图片描述

3.3 图像平滑滤波

为了减少图像的噪声,常用的有中值滤波、均值滤波等方法。中值滤波指将像素邻域的灰度值进行排序后取中位数值。图像在采集过程中经常会遇到随机噪声的干扰,该噪声—般是邻域中亮度值发生随机突变的像素,经中值滤波后图像的随机噪声能得到有效消除。

3.4 图像校正

进行图像旋转操作便于后续的检测和识别。思路为:将需调整的答题卡图像读取到内存中,计算图像的倾斜角度,依据所得的倾斜角度旋转图像,得到校正图像。在进行区域定位时选择Hough 变换来进行直线检测,进而获取定位信息计算倾斜角度。
校正后结果如下:
在这里插入图片描述

3.5 分割定位

经过图像预处理及校正过程后, 得到待检测识别图像, 需要进行区域的分割定位、答题涂抹位置的检测,以及答案目标的识别分析。
图像摆正后,结合答题卡图片本身的特性,名字准考证区域与答题区域中间有条直线分答题区域与答题卡尾部有条直线分割这样识别出直线后,根据直线长度排序,取最长的两条直线,就可以得到区域分割位置。
分割定位后结果如下:
上区域:
在这里插入图片描述

下区域:
在这里插入图片描述

3.6 填写检查

一种情况是如果考生的基本信息如专业、科目、班级、学号、试卷类型等客观信息出现重选、涌选错误,则在系统识别后会立即给出错误提示,要求确认修改图像或重新采集图像;另一种情况是如果考生填涂答案时出现重选、漏选错误, 则可按答案选择错误对待。

四、效果演示

GUI原始界面:
在这里插入图片描述
载入图像后的GUI界面:

在这里插入图片描述

五、完整代码

如果需要源代码,可以参考资源:
基于Hough变化的答题卡识别(不带GUI界面):https://download.csdn.net/download/didi_ya/87373545
基于Hough变化的答题卡识别(带准考证号+GUI界面):https://download.csdn.net/download/didi_ya/87373549
,如果遇到任何运行问题,请私信博主,看到后会免费答疑解惑,当然也可跟你你的需求修改GUI界面。

这篇关于【MATLAB图像处理实用案例详解(2)】—— 基于Hough变换的答题卡识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319407

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。