ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-07-25

2021-07-25 16:33:35  阅读:189  来源: 互联网

标签:25 校正 07 角点 cell 畸变 2021 书本 图片


畸变图像自动校正算法的研究

背景

这是我做的毕业设计(本科,勿喷),在这里分享主要是为了让后面也选这方面题目的同学一点经验。
另外,本文处理的畸变图像是指的书本产生的畸变,比如书本弯曲导致的文字的弯曲,还有书本的角度自动校正。写的时候是用python-opencv写的。没有贴代码,但是会说用了什么函数。
在这里插入图片描述

图像预处理

1.图片角度校正

角度校正顾名思义,就是把拍歪的照片转正。具体的思路就是
1、识别出书本的轮廓 findContours(),
2、得到轮廓的最小外接矩形 minAreaRect(),此时呢矩形的旋转角度大致等于书本的旋转角度,然后根据这个角度把图片旋转。
在这里插入图片描述
效果如下:a.原图 b.识别出的轮廓填充图 c.轮廓的外接矩形 d.旋转角度后图片
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2.文本自动分页

自动分页的想法也很简单,就是找出书本的6个角嘛,然后中间两个角就是分界线。
处理的时候还是先获得图片轮廓,轮廓就是一堆离散连续的点,然后用向量夹角公式判断当前的点是不是一个可能的角点,可能的角点是很多的。然后我的做法是利用角点的聚集度,还有到一些关键位置的距离,来判断是不是要找的点。
另外呢,我把找出的中间的两个角点连成直线,然后根据直线再次对图片角度进行校正,让中间的线垂直。
在这里插入图片描述
分页的效果如下:
在这里插入图片描述 在这里插入图片描述

图片畸变校正

1.把页面处理成上下等宽

这一步的操作是为了后面把页面当成一个广义圆柱面来处理。具体的做法是根据页面的四个角点,把这四个角点经过透视变化直接给处理成上下等宽的。透视变换的函数也是opencv里的,现成。主要知道变化前后的四个点,就能把图片进行变换。另外这一步的变换给我的直觉就是把书本用手展平了一点,应该也是能校正畸变的。

a.原页面 b.等宽处理之后
在这里插入图片描述 在这里插入图片描述

2利用圆柱面对图片进行展开

思路:就是圆柱面相当于一个矩形卷起来了,那把圆柱面切割成小的矩形,再拼接起来就能得到展平的图像(圆割术求周长)。
1.分割图片,我的做法是直接把刚刚等宽处理过的图片均匀垂直分割成长条的cell。
在这里插入图片描述
2. 计算出cell的实际大小。图片产生畸变其实主要是由于透视原理(远小近大),那我们要消除畸变,就要把看起来小的cell,恢复到它的实际大小,这样子那些小的字,也会恢复正常。
如果把单独的一个cell取出来放大,可能是下面的样子,实线部分是它的实际大小,而灰色的呢,则是它被旋转了一个角度之后我们的眼睛看到的样子,也就是目前得到的cell。
在这里插入图片描述
数学问题我也不多讨论,反正都可以四舍五入。这里我将cell拉伸成矩形,没有考虑cell的奇奇怪怪的倾斜角度,一切都可以简化。于是呢newCell的高度是确定的,就是ymax。newCell的宽度我用的下面的柿子。其中的k是相机(成像平面)到cell的距离除以书本的长度,我把它简化成常量1.3;
在这里插入图片描述
于是呢旧cell的四个点,newCell的4个点都能得到,这时候又是透视变换把cell拉伸。
拉伸后每个cell是一个矩形,再把所有的cell拉伸成同一高度,再拼接就能得到校正后的图片。

3效果展示

a.畸变图片 b.校正效果
a. 在这里插入图片描述
a.畸变图片 b.校正效果
在这里插入图片描述 在这里插入图片描述
a.畸变图片 b.校正页面1 c.校正页面2
(这张图片经过了提高了对比度之后才进行校正)
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

改进方案

因为是把图片分割之后再拼接,拼接的地方就可能产生断层。was和the。
在这里插入图片描述
为了消除这种断层,我才用的方法是把原图像的单词作为一个cell,校正之后覆盖到的单词里。

1.先找出单词的轮廓。具体是边缘识别膨胀再边缘识别,最小外接矩形,反正就这些。下面的红框是识别到的单词。
在这里插入图片描述
2.之后呢,把上面的单词的四个角点,计算出他们经过校正之后对应的四个角点,再把这个单词透视变换过去。再对3得到的图片进行单词覆盖。
在这里插入图片描述

标签:25,校正,07,角点,cell,畸变,2021,书本,图片
来源: https://blog.csdn.net/qq_40965678/article/details/119082391

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有