矩阵论研究生课程研究报告
- 格式:docx
- 大小:761.16 KB
- 文档页数:9
“矩阵论”课程研究报告 科 目: 矩阵论 教 师: 姓 名: 学 号: 专 业: 类 别: 上课时间: 考 生 成 绩:
阅卷评语:
阅卷教师 (签名) 2 / 9
矩阵分析在问卷扫描识别中的应用 摘要: 图像处理主要研究图像变换、图像增强、图像缩放以及图像的分割分解等内容。通过像素矩阵把图像处理归结到了矩阵分析的方法中来,通过分析矩阵的方式来对图像进行相应的处理,实现了图像处理与矩阵分析的融合,为各种图像处理提供了一种良好的数学实现途径。图像像素矩阵的产生,为图像处理提供了一种新的途径,许多对图像的处理,都可以转化为对矩阵的分析。因此,在问卷扫描识别中图像像素的矩阵分析起到了至关重要的作用。
正文 一、问题描述 目前,考试客观题部分的评阅长期以来一直采用基于光学标记识别技术(OMR)的选项图像信息识别系统,而现实生活中利用标准的答题卡对问卷数据进行采集存在工作量大、误差大等问题。因此,如何将大量普通调查问卷的信息进行电子化处理成为关键。本文通过将普通调查问卷进行图像扫描,通过位图图像实现对像素矩阵的提取,以此对图像的分析都可以转化为对矩阵的分析,完成了由二维图像数字矩阵的变换,从而使问题变得准确、简便、易行。 二、实验基本原理 1、图像边缘检测 图像理解是图像处理的一个重要分支,研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。图像边缘检测必须满足两个条件:一、能有效地抑制噪声;二、必须尽量精确确定边缘的位置。 3 / 9
由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。边缘检测的方法大多数是基于方向导数掩模求卷积的方法。 导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向α上的灰度变化率可以用相应公式进行计算;对于数字图像,应该采用差分运算代替求导。 一幅数字图像的一阶导数是基于各种二维梯度的近似值。图像f(x,y)在位置(x,y)的梯度定义为下列向量:
yfxf
yxfG)],([ (1)
在边缘检测中,一般用这个向量的大小,用f表示 2/122][GyGxf
(2)
函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。为了运算简便,实际中采用梯度模的近似形式。
||||fGxGy 或者 max(||,||)fGxGy (3) 传统的边缘检测算法通过梯度算子来实现的,在求边缘的梯度时,需要对每
个象素位置计算。模板是N*N的权值方阵,经典的梯度算子模板有:Sobel模板、Prewitt模板、Roberts模板、Laplacian模板等[1]。 2、图像分割 图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。如不同目标物体所占的图像区域、前景所占的图像区域等。连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。判断轮廓面积进行图像分割,设目标在最简单图像f(i , j) 中所占的面积S0与图像面积S之比为P = S0/ S,则背景所占面积比为1-P = (S - S0) / S。一般来说,低灰度值为背景,高灰度值为目标。如果统计图像f(i , j)灰度值不大于某一 4 / 9
灰度t的像元数和图像总像元数之比为1-p时,则以t为阈值[2]。 三、实验内容 本文通过类似word的编辑软件设计符合实际情况的调查问卷,并打印在A4上,填写完调查卡后用扫描仪将问卷图像录入电脑。基于扫描后的图像文件,利用OPENCV图像处理工具对图像进行像素矩阵抽取并分析,完成普通调查问卷信息的电子化录入。 三、实验步骤和数据 1、设计便于识别的调查问卷,见下左图,并填写基本信息; 2、对填写的调查问卷图像扫描,见下右图:
3、利用Opencv工具对图像进行矩阵化处理,具体步骤如下: (1)根据梯度二值化形态学平滑去噪,基本代码如下: //平滑去噪 scharr梯度二值化形态学 Mat process(Mat &input) { resize(input,input,Size(800,1200),0,0,2); //尺寸调整 GaussianBlur(input,input,Size(3,3),1); //高斯平滑去噪 Mat grad_x,grad_y; Scharr(input,grad_x,CV_32F,1,0); Scharr(input,grad_y,CV_32F,0,1); pow(grad_x,2,grad_x); pow(grad_y,2,grad_y); Mat grad=grad_x+grad_y; sqrt(grad,grad); //转换为8U 5 / 9
Mat edges,dst; grad.convertTo(edges,CV_8U); // threshold(edges,dst,120,255,CV_THRESH_BINARY|CV_THRESH_OTSU); imwrite("threshold.jpg",dst); Mat str=getStructuringElement(MORPH_RECT,Size(2,2)); morphologyEx(dst,dst,MORPH_OPEN,str); //膨胀 Mat str2=getStructuringElement(MORPH_CROSS,Size(2,2)); morphologyEx(dst,dst,MORPH_ERODE,str2); return dst; }
(2)寻找轮廓边距 Mat findROI(Mat &dst,vector &approx) // { Mat result; dst.copyTo(result); vector> contours; findContours(dst,contours,CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); //寻找轮廓 RNG rng(12345); Mat drawing = Mat::zeros( Size(800,1200), CV_8UC3 ); bool flag=false; for( int i = 0; i< contours.size(); i++ ) { approxPolyDP(Mat(contours[i]), approx, 50, true); //多边形拟合 if(approx.size()==4&&contourArea(contours[i])>(Size(800,1200).width*Size(800,1200).height*0.1)) { Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, i, color, 2, 8 ); oFile } (3)寻找答案区域的答案情况,基本代码如下: //寻找答案区域的基本情况 Mat drawing4=Mat ::zeros(resultUltimate.size(),CV_8UC3); for(int i=0;i{ outFile imshow("drawUltimate",drawing3); imshow("judge",drawing4); waitKey(); 4、根据上述基本代码,利用Opencv工具进行编译处理,图像处理后的核心区 域表现为: 对比度是纹理变化的度量,反映了邻近像素的反差。对比度值越大,表示纹理基元对比越强烈、纹理效果越不明显;对比度值较小,表示纹理效果越明显;当对比度值为0,表明图像完全均一、无纹理。 5、最后,根据像素矩阵化的模块进行分析,将每一个标有答案的区域记录为“1”,没有答案的区域表示为“0”,对这份调查问卷的答案区域矩阵化处理,并根据此矩阵对各个问卷问题的表述进行对应,建立外部链接完成普通调查问卷信息数据的录入。