用OpenCV实现页面扭曲矫正
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
前言
今天要分享的内容是关于页面扭曲矫正的内容,为了让大家有一个相关的概念,下面先预览一下效果图
页面扭曲矫正的原理
作者写这篇文章的目的也很有意思,因为 作者的妻子是一个老师,她的学生经常要发一些图片的作业给她,但是难免由于拍照技术和条件等各种原因,导致批改作业的难度提升,因此作者为了他的老婆,做出来了这一套方案。(爱的魔力)
对于一些经典的文本矫正的思路(例如Leptonica dewarping method 和 the CTM method)将问题分解为:
1. 将文本分成几行线
2. 找到使得线平行和水平的映射或坐标变换
本文作者同样采用了类似的思路,构建了一个参数模型用于页面(文本)的矫正,模型主要考虑的参数:
页面在三维空间中的旋转向量 r和平移向量 t
指定页面表面的两个曲率 α and β
页面上n个水平跨度的垂直偏移
对于每个跨度,水平跨度中 m个点的水平偏移量
对于上面的一些参数,本人的理解是页面扭曲存在这旋转和偏移的变换,因为把文本内容分成几行,因此将每一行文本看成是一条曲线,这里假设扭曲后变成三次样条曲线,由两个系数 a 和 b 控制。垂直偏移是指分割后的每行之间的距离,水平偏移是指对每条线上设置点,用于后续的矫正变换处理。
(个人理解,可能与原文存在一点的偏差)
接下来的操作就非常牛了,作者通过对页面进行模拟,设置不同参数用于观察其中的规律
最后作者发现当设置的参数固定后,页面上的每个关键点都能在图片的平面内找到确定的对应点。
红色的是文本上检测到的关键点,蓝色的是通过模型的重投影的点。左图的蓝色点都是共线的(假设一开始文本是直线的),而右图是将确定页面的姿态/形状,使得蓝色点几乎上红色点上。
实现的细节
上面是大致的实现原理,接下来是作者实现功能的主要步骤:
1、获取页面的边界。这里并不是采用整幅图去处理,而是非常的巧妙采用内部文本内容以及文本与边界大致距离去确定页面的边界。
2、检测文本的轮廓。通过自适应阈值——> 膨胀+腐蚀——> 连通区域分析+PCA来近似文本
3、将文本组成跨度。
4、样本跨度。在每个跨度上生成代表性点。
5、创建初始参数估计。实现投影到图片平面内。
6、优化!使重投影的误差变小
7、重新映射图片和阈值。
总结
该项目是之前用到的,今天特意分享给大家,百度搜索出来的相关内容很少,因为个人觉得分享出来还是蛮有意义的,对于内容的理解由于本人水平有限,可能会存在一定的偏差,但是真的是花了挺大功夫来解读的。
使用起来并不难,但是由于作者的假设,对于并非这种情况的文本,以及变形过大的矫正效果并不是非常理想。创作不易,希望能点个在看,转发一手,由于缺少留言功能,因此,只能通过后台的数据反馈才知道自己分享的内容是否真的有帮助到大家,大家的每个阅读在看和转发,我都非常的感谢。
代码和原文链接可以在后台回复”page_dewarp“,获取,建议复制,避免错误。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
用OpenCV实现页面扭曲矫正相关推荐
- 一个有趣的案例 | 页面扭曲矫正
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 前言 今天要分享的内容是关于页面扭曲 ...
- 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
导读 本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤. 背景介绍 在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜.本文将使用OpenCV将倾斜的文档矫正水平 ...
- 【Unity】用于Humanoid骨骼的扭曲矫正组件
[Unity]用于Humanoid骨骼的扭曲矫正组件 组件已知限制: 可以在一定旋转范围内消除变形,不能无限度的消除变形: 不支持连续的两个扭曲矫正骨骼,如果需要,可以自行调整代码. 在Unity中, ...
- OpenCvSharp (C# OpenCV) 实现扫描文本矫正应用与实现详解(附源码)
导 读 本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤. 背景介绍 在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜.本文将使用OpenCV将倾斜的文档矫正 ...
- 美颜SDK实用算法——直播背景扭曲矫正
经常关注颜值主播的人应该比较清楚,主播们在直播中都在使用美颜功能,例如"瘦脸"."长腿"."小头"等,这些美型美体的功能几乎成了主播们的必备 ...
- OpenCV About 页面翻译
https://opencv.org/about/ 关于OpenCV OpenCV(Open Source Computer Vision Library) 是一个开源计算机视觉和机器学习软件库.Op ...
- OpenCV案例(四): 投射矫正
仿射变换是二维坐标间的线性变换, 故而变换后的图像仍然具有原图的一些性质,包括"平直性"以及"平行性",常用于图像翻转(Flip).旋转(Rota ...
- 基于OpenCV的图片透视矫正及处理
图像透视关键函数: Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method = 0, double rans ...
- opencv 4计算机视觉项目实战_资源|计算机视觉实战操作(PDF下载)
这是近一两年来分享的关于计算机视觉实战相关的项目汇总.理论总是枯燥乏味的,公式又是那么晦涩难懂,而视觉的魅力就在于,完美的数学公式后,隐藏着惊艳令人惊艳的结果.但是,如果有人告诉你,你需要先学会数学, ...
最新文章
- Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
- 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
- java swing总结,Java 实用经验总结 Swing 篇
- python接口自动化(六)--发送get请求接口(详解)
- tensorflow2实现unet, 完成眼底血管分割任务
- html+jquery翻页相册(原创)
- Caffe模型详细介绍
- matlab 半正定规划,半正定规划
- Germany Gone with honour - 德国队 带着胜利离开
- Linux下的Ruby2.7.0下载
- C#处理JSON格式数据
- SpringBoot+Vue实现前后端分离的旅游推荐网站
- 狐狸找兔子 ← C语言实现
- 计算机毕业设计Java新疆旅游专列订票系统(源码+系统+mysql数据库+Lw文档)
- 收藏!2020上半年社区精华教程盘点
- 阿里面试官鬼得很,问我为什么他们阿里要禁用Executors创建线程池?
- 模仿探探(百合网,珍爱网)卡片左右滑动效果,滑动流畅,卡片view无限重生
- 蓝牙技术|AirPods Pro 2 支持蓝牙 LE Audio 技术带来的 5 大好处
- 《OD学Oozie》20160807Oozie
- JOOQ初体验-SpringBoot集成JOOQ
热门文章
- 未来之城,管理者可能不是人......
- 飞天AI平台到底哪里与众不同?听听它的架构者怎么说
- 程序员单身比例有多高?【2019开发者图鉴】告诉你
- 微信确认出Bug,目前已全部恢复
- 非计算机专业如何转行AI,找到算法offer?
- 2018最后一战:25天编程PK赛!
- AI一分钟 | 英伟达发布Tesla T4 GPU新品;腾讯发布《2018 年全球自动驾驶法律政策研究报告》...
- 可能是全网最全,JAVA日志框架适配/冲突解决方案,可以早点下班了
- 不要用 SELECT *
- 切记!MySQL中ORDER BY与LIMIT 不要一起用,有大坑