首页 > 编程语言 >识别复杂的答题卡1(主要算法)

识别复杂的答题卡1(主要算法)

时间:2022-12-22 12:32:47浏览次数:55  
标签:结果 答题卡 算法 灰度 识别 模板 图片

一、问题提出



    由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片




识别复杂的答题卡1(主要算法)_灰度


下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率。


二、思路探索


    在从图片到数字的转变过程中,既是一个“量化”的过程,也是一个“降维”的过程,需要特定的角度非常重要。这就像很多人站在一起拍集体照,选择不同的角度能够得到这群人不同的像,高明的摄像师能够很快地找到角度,将所有的人都拍摄其中;我们图像处理程序也是同样的道理,有经验的工程师能够善于模式思考,快速找到解决方法的途径。


    对于我们这里的这张答题卡图片,和之前的较为简单的答题卡想比较,有很多不同,比较两者的二值图片,就可以发现:



识别复杂的答题卡1(主要算法)_图像处理_02

  V  S

识别复杂的答题卡1(主要算法)_图像处理_03


最大的不同在于没有可以供标定的 基础点。因此我们必须采用其它的方法来进行定位。


此外,答题区域为矩形密集分布,因此我想到的是直接“网格化”进行处理。


三、算法过程和主要代码


step1:灰度-二值-形态学



识别复杂的答题卡1(主要算法)_图像处理_04



识别复杂的答题卡1(主要算法)_灰度_05



识别复杂的答题卡1(主要算法)_灰度_06


step2:轮廓分析


对识别出来的二值图像通过轮廓进一步地进行处理,得到下图的 识别结果,就为下一步定量打下基础



识别复杂的答题卡1(主要算法)_图像处理_07



识别复杂的答题卡1(主要算法)_灰度_08


step3:模板匹配


想得到识别的结果,首先就是需要对现有的图片进行分割出来。 在没有定位点的前提下,如何准确切割?



识别复杂的答题卡1(主要算法)_图像处理_09


根据以前的经验,基本的思路是这样:


a、根据模板识别,准确的获得可定位地址(比如我选择使用“选择题答题卡”几个字作为模板,得到下图定位结果,注意图中白点);



识别复杂的答题卡1(主要算法)_图像处理_10


b、而后采用经典的“纵横”方法进行识别。(这里我对各个距离进行了测量和标注)


 



识别复杂的答题卡1(主要算法)_分块_11


细节:



识别复杂的答题卡1(主要算法)_灰度_12


编写以下代码:



识别复杂的答题卡1(主要算法)_图像处理_13


得到以下结果:



识别复杂的答题卡1(主要算法)_灰度_14


step4:分块面积识别


直接识别划分区域的面积,得到定量结果



识别复杂的答题卡1(主要算法)_灰度_15



识别复杂的答题卡1(主要算法)_图像处理_16

识别复杂的答题卡1(主要算法)_分块_17


全图:



识别复杂的答题卡1(主要算法)_灰度_18


细节:



识别复杂的答题卡1(主要算法)_灰度_19


step5:转化得到识别结果


编写相关识别的结果为:



识别复杂的答题卡1(主要算法)_分块_20



识别复杂的答题卡1(主要算法)_图像处理_21


 


四、需要注意的地方:


1、模板识别对于不同尺度采集的图片,是否具有通用性。故我需要在不同的图片、不同的采集模式下进行探索;


2、目前识别出来的结果缺乏对答题结果“重复”“遗漏”情况分析;


3、 我们看见的是彩色或者灰度图像,实际上,需要识别出来的是bin区域。在实验的过程中,我们会用到“ 彩色或者灰度”作为背景。


 


至此,复杂答题卡的算法部分基本完成。感谢阅读至此,希望有所帮助。


 


一、问题提出


    由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片



识别复杂的答题卡1(主要算法)_灰度


下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率。


二、思路探索


    在从图片到数字的转变过程中,既是一个“量化”的过程,也是一个“降维”的过程,需要特定的角度非常重要。这就像很多人站在一起拍集体照,选择不同的角度能够得到这群人不同的像,高明的摄像师能够很快地找到角度,将所有的人都拍摄其中;我们图像处理程序也是同样的道理,有经验的工程师能够善于模式思考,快速找到解决方法的途径。


    对于我们这里的这张答题卡图片,和之前的较为简单的答题卡想比较,有很多不同,比较两者的二值图片,就可以发现:



识别复杂的答题卡1(主要算法)_图像处理_02

  V  S

识别复杂的答题卡1(主要算法)_图像处理_03


最大的不同在于没有可以供标定的 基础点。因此我们必须采用其它的方法来进行定位。


此外,答题区域为矩形密集分布,因此我想到的是直接“网格化”进行处理。


三、算法过程和主要代码


step1:灰度-二值-形态学



识别复杂的答题卡1(主要算法)_图像处理_04



识别复杂的答题卡1(主要算法)_灰度_05



识别复杂的答题卡1(主要算法)_灰度_06


step2:轮廓分析


对识别出来的二值图像通过轮廓进一步地进行处理,得到下图的 识别结果,就为下一步定量打下基础



识别复杂的答题卡1(主要算法)_图像处理_07



识别复杂的答题卡1(主要算法)_灰度_08


step3:模板匹配


想得到识别的结果,首先就是需要对现有的图片进行分割出来。 在没有定位点的前提下,如何准确切割?



识别复杂的答题卡1(主要算法)_图像处理_09


根据以前的经验,基本的思路是这样:


a、根据模板识别,准确的获得可定位地址(比如我选择使用“选择题答题卡”几个字作为模板,得到下图定位结果,注意图中白点);



识别复杂的答题卡1(主要算法)_图像处理_10


b、而后采用经典的“纵横”方法进行识别。(这里我对各个距离进行了测量和标注)


 



识别复杂的答题卡1(主要算法)_分块_11


细节:



识别复杂的答题卡1(主要算法)_灰度_12


编写以下代码:



识别复杂的答题卡1(主要算法)_图像处理_13


得到以下结果:



识别复杂的答题卡1(主要算法)_灰度_14


step4:分块面积识别


直接识别划分区域的面积,得到定量结果



识别复杂的答题卡1(主要算法)_灰度_15



识别复杂的答题卡1(主要算法)_图像处理_16

识别复杂的答题卡1(主要算法)_分块_17


全图:



识别复杂的答题卡1(主要算法)_灰度_18


细节:



识别复杂的答题卡1(主要算法)_灰度_19


step5:转化得到识别结果


编写相关识别的结果为:



识别复杂的答题卡1(主要算法)_分块_20



识别复杂的答题卡1(主要算法)_图像处理_21


 


四、需要注意的地方:


1、模板识别对于不同尺度采集的图片,是否具有通用性。故我需要在不同的图片、不同的采集模式下进行探索;


2、目前识别出来的结果缺乏对答题结果“重复”“遗漏”情况分析;


3、 我们看见的是彩色或者灰度图像,实际上,需要识别出来的是bin区域。在实验的过程中,我们会用到“ 彩色或者灰度”作为背景。


 


至此,复杂答题卡的算法部分基本完成。感谢阅读至此,希望有所帮助。


 

标签:结果,答题卡,算法,灰度,识别,模板,图片
From: https://blog.51cto.com/jsxyhelu2017/5962549

相关文章