收藏和点赞,您的关注是我创作的动力
文章目录
- 概要
- 一、实验内容及结果
- 3.1 对比实验
- 3.1.1 实验条件
- 3.1.2 实验内容
- 二、分析
- 四、总结
- 五、目 录
随着科技的进步,各种拍照设备及软件的功能渐趋于完备。受拍摄角度等环境影响,照片内容角度与实物的实际角度有所偏差,增加了图像识别难度甚至造成无法识别图像的现象。透视校正是将二维图像通过一个变换矩阵M映射至三维坐标系,再由三维降维至二维,矫正图像内容角度的过程。按照数字图像处理的基本原理,结合Python语言及OpenCV环境,可对图像进行透视校正从而进一步识别内容。透视校正可应用于车牌识别、拍照扫描等各个方面,为人们的工作及日常生活提供了便利。
本文先对仿射变换和透视校正做了对比,从概念原理描述到实验结果分析都对两种算法做了区分,通过对比加深了对透视变换概念及原理的理解;在进行仿射变换与透视变换的对比实验时,由于使用方法还有改进的地方,得出的结果并不理想,在此基础上,对原有方法进行了完善,得到了更准确的实验结果。
本次实验不仅对比出了透视校正与仿射变换的区别,而且在已有的透视校正方法上做了改进,虽然结果仍有需要修改之处,但相较于原始实验结果也有了进步。
关键词:透视校正;图像处理;python;OpenCV
此次实验是在仿射变换与两种不同透视校正实现方法,三者之间进行的对比实验,通过实验,可以找到仿射变换与透视校正两种图像算法的区别,同时可对比出不同方法对透视校正的结果影响。
本次实验使用python语言实现。Python语言相较于其它语法简洁明了,结构清晰,可读性高,且python标准库和第三方库众多,功能强大。
此次实验环境采用PyCharm Community Edition 2020.2.1版本进行代码编写,使用OpenCV作为函数库。PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库[1],由英特尔开发现。
由于仿射变换与透视变换之间存在一些相同点,所以常会让人混淆两者的概念。因此,本次实验首先对仿射变换与透视校正进行了对比,对它们进行区分;其次,在进行透视校正的过程中,出现了部分实验图片无法识别的情况,在查阅相关资料后,在边缘检测步骤前增加了预处理,与原有的透视校正方法形成了对比。
(1)仿射变换
仿射变换描述的是二维坐标下的变换操作,主要包括:平移、旋转、缩放、翻转、错切几种,每种操作均可以表示为矩阵的形式。尤其注意的是,图像经过仿射变换后,原来的直线和平行线,仿射变换之后仍然为直线和平行线。
(2)透视校正
由第二章透视校正的原理可知,透视校正涉及到了三维坐标变换,需要把图片还原回三维坐标,再重新变换至二维。而在此之前,需要对图像内容进行边缘检测,找到边缘点,再相邻边缘点之间做直线,裁剪出所需部分。实验中所用边缘检测方法为canny检测,但由于部分图像本身较为模糊,或者在去噪过程中对图像产生影响等其他原因,使边缘检测失败,导致图像无法校正。
(a)canny检测
canny检测分为5个步骤:①使用高斯滤波器,以平滑图像,滤除噪声;②计算图像中每个像素点的梯度强度和方向;③应用非极大值抑制,以消除边缘检测带来的杂散响应;④应用双阈值检测来确定真实的和潜在的边缘;⑤通过抑制孤立的弱边缘最终完成边缘检测。相较于其他边缘检测算法,canny检测的效果更好,但是也容易把噪点当作边缘点,引起边缘检测失误。实验中,先对边缘点进行检测(a),然后连接相邻边缘点(b),最后进行变换得到结果(c),如图所示。
图3.1.1
本次的项目对仿射变换、透视校正(canny检测)、透视校正(canny检测+模糊预处理)进行比较。
在实验中,通过仿射变换对图像进行了拉伸及各向旋转,完成了图像额线性变换。对图像进行透视校正时,由
于边缘变形及处理对象中存在复杂图案,对透视校正造成影响,通过预处理先对图中内容做模糊处理可进一步降低
噪声对透视校正的影响。
通过运行结果得:仿射变换是对图像整体进行翻转、平移等线性变化;透视校正不仅可完成图像线性变换,也
可进行非线性变换,透视校正是对图像内容的角度校正,通过边缘检测提取所需内容。此次透视校正运用canny检测
对图像进行提取。但由于图像噪声与图像边缘部分都是高频信号,所以容易出现伪边缘,出现无法校正的现象。通
过灰度化、高斯模糊等预处理对图像进行加强后,提高了图像边缘点的提取效果,增强了透视校正的精度。
图像的透视校正是一种应用领域广泛的图像处理算法,是很多图像处理技术的前提与基础。
本文主要研究了基于OpenCV的图像的透视校正算法,同时也对与透视校正算法相近的仿射变换进行了区分。主要哦你工作成果如下:
(1)系统介绍了图像透视校正的重要知识,阐述了透视变换的原理,解释了透视校正所需公式的含义。着重阐述了实验中所用的canny边缘检测算法原理,介绍了两种实现透视校正的方法并做出对比。
(2)系统介绍了仿射变换的概念与原理,对其中的公式变换做了简述。
(3)基于python语法,在引用OpenCV库后,对透视校正与仿射变换做了对比,并找到了二者之间的异同点;在透视校正中对canny检测进行了改进并对增加预处理前后的实验结果进行了分析对比。
(4)改进了实验中所用的透视校正算法,优化了实验结果。
论文的不足之处以及需要改进的方面:
1.论文中使用了canny检测算法进行边缘检测并得出了实验结果,但是结果中对噪声的处理还存在缺陷,仍无法完成对部分噪点较多的图像的透视校正。
2.文章分析了增加预处理的透视校正算法,但在预处理部分仍可以做进一步修改。
3.对透视校正算法部分,只用了canny检测算法,对Sobel等其它边缘检测算法没有做深入了解。
目录
摘要I
AbstractII
第一章 绪论3
1.1 课题研究背景及意义3
1.1.1 人脸识别技术发展背景3
1.1.2 国内外发展现状4
1.1.3 人脸识别签到意义4
1.2 论文的结构安排5
第二章 人脸识别签到架构6
2.1 业务架构6
2.2.1 业务流程需求6
2.2.2 数据管理6
2.2.3 人脸信息管理6
2.2.4 系统的定位6
2.2 技术架构7
2.3 应用架构7
2.4 数据架构8
2.5 本章小结8
第三章 人脸识别签到系统的设计9
3.1 人脸识别原理9
3.2 程序逻辑10
3.2.1 视频流采集10
3.2.2 人脸检测10
3.3 人脸识别签到系统的软件介绍10
3.3.1 PyCharm介绍11
3.3.2 计算机视觉库Opencv11
3.3.3 pyqt界面设计12
3.4 人脸识别功能12
3.4.1 时间功能12
3.4.2 人脸识别12
3.5 本章小结13
第四章 人脸识别签到系统的实现与测试14
4.1 系统前端设计14
4.1.1 主界面14
4.1.2 信息采集界面15
4.1.3 显示界面16
4.2 人脸识别签到系统的功能架构设计17
4.2.1 人脸识别注册17
4.2.2 启动签到17
4.2.3 结束签到18
4.3 数据库19
4.3.1 Sqlite简介19
4.3.2 数据导出19
4.4 本章小结19
结论20
参考文献21
致谢23