一个有趣的案例 | 页面扭曲矫正

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达

前言

小伙伴们,大家好!好久没有给大家分享图像处理相关的实战内容了,图像处理给我的感觉是真的体现数学之美,例如我之前分享的关于极坐标转换的全景图的变换,虽然搞了很久才想明白,不过确实挺有意思的。

希望今天的文章能让大家有所收获,有用可以帮我转发一下。

个人觉得虽然这个项目不一定你会用到,但是对于创作者,遇到一个问题如何去分解问题,解决问题的思路和方法或许才是真正对我们个人成长有帮助的点。

文章链接:酷炫骚操作,票圈装13神技,极坐标全景图

今天要分享的内容是关于页面扭曲矫正的内容,为了让大家有一个相关的概念,下面先预览一下效果图


页面扭曲矫正的原理

作者写这篇文章的目的也很有意思,因为 作者的妻子是一个老师,她的学生经常要发一些图片的作业给她,但是难免由于拍照技术和条件等各种原因,导致批改作业的难度提升,因此作者为了他的老婆,做出来了这一套方案。(爱的魔力)

对于一些经典的文本矫正的思路(例如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“,获取,建议复制,避免错误。

秘密基地

我偷偷弄了一个公众号,专门用于分享各种实用的软件,工具,网站和app。期待你的关注。

兄弟们,开车啦

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
Matlab是一种功能强大的数学软件,它提供了许多图像处理工具和函数,可以用于扭曲矫正扭曲矫正是一种常见的图像处理技术,用于纠正图像中由于透视、畸变等因素引起的形变。 在Matlab中,我们可以通过使用几何校正工具箱或计算机视觉工具箱来进行图像的扭曲矫正。这两个工具箱提供了一系列的函数和算法,可用于对图像进行几何变换,包括扭曲矫正。 首先,我们需要加载图像并确定矫正的目标区域。然后,我们可以使用仿射变换、透视变换等方法来对图像进行矫正。 对于仿射变换,可以使用`imwarp`函数来将图像进行旋转、平移和缩放等变换。该函数需要提供变换矩阵和插值方法作为参数。 对于透视变换,可以使用`fitgeotrans`函数来估计透视变换矩阵,然后再使用`imwarp`函数进行矫正。透视变换通常用于纠正图像中的透视畸变,例如建筑物的图像中。 另外,还可以使用`estimateGeometricTransform`函数来估计图像间的几何变换关系,然后使用`imwarp`函数进行矫正。 需要注意的是,扭曲矫正可能会引入一定的误差,特别是对于较复杂的图像或扭曲情况。因此,在进行扭曲矫正之前,应该先理解图像的扭曲情况,并选择合适的矫正方法和参数。 总而言之,Matlab提供了多种方法和工具箱来实现图像的扭曲矫正,可以根据具体的需求选择合适的方法进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值