文档智能(一):基于OpenCV的文档图像校正

本文聚焦基于OpenCV的文档图像校正。介绍了文档智能背景,因PDF扫描件存在扭曲等问题需校正。研究内容涵盖OpenCV基本使用、形态学处理、GrabCut图像分割、边缘检测、轮廓检测、角点检测和透视变换。最后总结方法可批量校正图像,但存在一定局限。

文档智能(一):基于OpenCV的文档图像校正
发表时间2023年1月7日 创作地点湖北省武汉市 作者:ixy_com&[Aneerban Chakraborty]

在这里插入图片描述

封面图片来源:DocTr

本文关键词:文档智能、文档图像校正、OpenCV、形态学变换、边缘检测、轮廓检测、透视变换

1、研究背景

基本概念:文档智能是指通过计算机进行自动阅读、理解以及分析商业文档的过程,是自然语言处理和计算机视觉交叉领域的一个重要研究方向。近年来,数字图像处理技术以及深度学习的飞速发展,极大地推动了文档智能领域的发展,以文档版面分析、文档信息抽取、文档视觉问答、文档图像分类以及文档图像校正等任务为代表的的文档智能任务得到了性能上的显著提升。

任务来源:为积极响应企业数字化转型发展的现实需求,我部承担了基于知识图谱的**研究任务。其中,收集得到的大规模文档数据中有极大比例的PDF扫描件。与可编辑文档PDF格式不同,该类型文档不可编辑,实为图像数据;同时,由于数据收集方等各种不可控因素,导致大量文档图像数据出现扭曲、倾斜、颠倒等情况;因此,为了便于数据处理,提升PDF扫描件的字符识别精度,首先对其进行文档图像校正处理。

---- 数字智能研发


内容说明:在本文中,我将简要介绍基于OpenCV的文档图像校正基本流程,并代码实践的形式加以展示。如下图所示,目前相关研究材料非常充足,本文仅做简单记录,用以交流。基本目标为:介绍OpenCV的基本使用,包括但不限于形态学处理、边缘检测、角点检测、透视变换等章节内容,核心内容为数字图像处理相关技术。全文内容包含以下部分:

在这里插入图片描述

图 1-1 文档图像校正相关研究(万方数据)

内容目录:

  • OpenCV基本使用(opencv-contrib-python)
  • 形态学处理(Morphological operation)
  • GrabCut图像分割(GrabCut)
  • 边缘检测(Edge Detection)
  • 角点检测(Corner Points)
  • 透视变换(Perspective Transform)
  • 局限性(Limitations)

2、研究内容

2.1 OpenCV基本使用

Opencv是一个开源的计算机视觉库,内部包含丰富的数字图像处理工具。其支持多平台安装使用,安装教程与相关简介本文不做赘述。利用Opencv可以进行图像处理、特征检测与描述、视频分析、相机校准与3D重建、机器学习、计算摄影以及目标检测等任务。相关工具箱的集成化程度非常高,可参见Opencv 4.0文档

这里用图像滤波举例,将使用各种低通滤波器(LPF)进行图像模糊,并对图像应用自定义滤波器(二维卷积)。LPF有助于降低噪音,高通滤波器HPF有助于在图像中找到边缘。OpenCV中的 c v . f i l t e r 2 D ( ) cv.filter2D() cv.filter2D()函数即可实现上述功能。首先读入原始图像,如下图:

在这里插入图片描述

图 2.1-1 原始图像示例
# 使用自定义的卷积核(滤波器)对输入图像进行二维卷积操作
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt


"""
print(np.__version__)
print(cv.__version__)
1.21.2
4.3.0
"""

img = cv.imread('./OpenCV.jpg')
kernel = np.ones((5, 5), np.float32)/25
dst = cv.filter2D(img, -1, kernel)

plt.subplot(121)
plt.title('Original image')
plt.imshow(img)
# 第二张子图
plt.subplot(122)
plt.title('Filtered image') 
plt.imshow(dst)

plt.show()

在这里插入图片描述

图 2.1-2 图像滤波示例
# 对输入图像进行均值模糊
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt


"""
print(np.__version__)
print(cv.__version__)
1.21.2
4.3.0
"""

img = cv.imread('./OpenCV.jpg')

dst = cv.blur(img, (5, 5))

plt.subplot(121)
plt.title('Original image')
plt.imshow(img)

plt.subplot(122)
plt.title('Blurred image')
plt.
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值