Unprojecting_text_with_ellipses过程分析
创始人
2024-04-28 20:26:21
0

文章目录

  • 一、单应性
    • 1. 图片实例
    • 2. 数学表达式
  • 二、算法思路
    • 1. 算法流程
    • 2. 透视失真具体解决方案
    • 3. 图片旋转具体解决方案
    • 4. 图片文字倾斜具体解决方案
  • 三、实际处理过程
  • 四、算法问题
  • 五、OCR识别

原文链接 https://mzucker.github.io/2016/10/11/unprojecting-text-with-ellipses.html

一、单应性

1. 图片实例

将普通 2D 文本图片转换成类似 3D 文本图片的映射过程叫做单应性。

借用原文中星球大战的图片, 这就是转换之后的图片.

2. 数学表达式

对每个像素点而言, 在 2D 到 3D 转换过程中满足下列式子

x′=ax+by+cgx+hy+1,y′=dx+ey+fgx+hy+1x' = \frac{ax+by+c}{gx+hy+1}, y'=\frac{dx+ey+f}{gx+hy+1} x′=gx+hy+1ax+by+c​,y′=gx+hy+1dx+ey+f​

x,yx,yx,y 表示转换前的像素坐标

x′,y′x',y'x′,y′ 表示转换后的像素坐标

有未知参数 a,b,c,d,e,f,g,ha,b,c,d,e,f,g,ha,b,c,d,e,f,g,h

这些参数控制着图片是如何转换的, 其中就有

aaa 控制图片左右拉伸, eee 控制图片上下拉伸

b,db,db,d 控制图片左右倾斜, 类似于矩阵变为平行四边形的过程

ccc 控制图片左右移动, fff 控制图片上下移动

ggg 控制图片左右透视失真, hhh 控制图片透视失真

上面列出的星球大战字幕图片就是由单由参数 hhh 控制转换所得

二、算法思路

1. 算法流程

我们可以找到一个完美的算法求出式子中的所有参数, 然后就能将图片还原,但是这是理想状态. 所以原文提出了一个很棒的思路.

我们现在拍摄了一张照片, 然后对它进行三步骤的处理.

步骤一 : 解决透视失真的问题

步骤二 : 解决图片旋转的问题

步骤三 : 解决图片中文字倾斜的问题

2. 透视失真具体解决方案

首先通过 opencv 获取到图片中字符的轮廓 (这一步可能会有其他干扰).

作者提出了一个观点, 当处理后的图片中每一个字符各占面积几乎相等时就认为解决了透视失真这个问题. 转换成数学表达式则是

通过找到 g,hg,hg,h 两个参数, 使得

Stotal=∑i=1n(Ai−Aˉ)2S_{total} = \sum_{i=1}^{n}(A_i - \bar{A})^2 Stotal​=i=1∑n​(Ai​−Aˉ)2

最小, 其中 StotalS_{total}Stotal​ 表示面积差总平方和, AiA_iAi​ 表示第 iii 个字符的面积, Aˉ\bar{A}Aˉ 表示字符平均面积.

!!! 这里更准确一点应该被称为轮廓面积, 而不是字符面积, 因为通过 opencv 会检测到其他干扰项. 我们假设最佳情况就是只检测到字符. 以下步骤都是居于此来完成.

椭圆方程

f(x,y)=Ax2+Bxy+Cy2+Dx+Ey+F=0f(x,y) = Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0 f(x,y)=Ax2+Bxy+Cy2+Dx+Ey+F=0

通过一定手段使得列入计算的字符转换成相同面积的椭圆, 用椭圆方程中的A,B,C,D,E,FA,B,C,D,E,FA,B,C,D,E,F六个参数来描述该字符. 由此构建出一个矩阵用于解决透视失真问题.

3. 图片旋转具体解决方案

霍夫变换

4. 图片文字倾斜具体解决方案

用凸包表示一个字符, 构建一个矩阵使得图片中字符宽度最小化. 构建出的矩阵中的参数就是单应性所提到的参数 b,db,db,d

三、实际处理过程

输入图片

获取字符轮廓和面积

字符轮廓进行椭圆化处理, 解决透视失真

霍夫变换, 解决图片旋转问题

凸包代理, 解决文字倾斜问题

处理结果

四、算法问题

当使用如下图片进行处理时

在处理这个图片时就会误把边框进行处理, 且不能检测到所有字符.

五、OCR识别

未处理的图片识别

处理后的图片识别

未处理的图片识别

处理后的图片识别

未处理的图片识别 (不能识别)

处理后的图片识别

未处理的图片识别

处理后的图片识别

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...