实战:使用 Python 和 OpenCV 创建自己的“CamScanner”

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

小伙伴们有没有想过“CamScanner”如何将我们移动相机的模糊文档图片转换为定义好的、光线充足的扫描图像?我曾经并且直到最近我认为这是一项非常艰巨的任务,但事实并非如此,我们可以用相对较少的代码行创建我们自己的“CamScanner”。

什么是计算机视觉以及为什么如此流行?

计算机视觉是一个跨学科的科学领域,研究计算机如何从数字图像或视频中获得高水平的理解。从工程的角度来看,它试图理解和自动化人类视觉系统可以完成的任务,它是一个科学领域,可以让计算机理解照片/视频,类似于人类如何理解它。

人工智能和机器学习的进步加速了计算机视觉的发展,早期这是两个不同的领域,并且两者都有不同的技术、编码语言和学术研究人员,但现在这一差距已经大大缩小,越来越多的数据科学家在计算机视觉领域工作,反之亦然。原因在于这两个领域有着简单共同点——数据。

归根结底,计算机是通过消耗数据来学习,而人工智能不仅可以帮助计算机进行处理,还可以通过反复试验来提高其理解/解释能力。所以现在,如果我们可以结合图像数据并在其上运行复杂的机器学习算法,那么我们得到的便是一个真正的人工智能。

我们今天要实现什么?

在文章中,我们将只专注于计算机视觉,而机器学习我们以后再说。此外,我们将只使用一个OpenCV库来创建整个内容。

索引

  1. 什么是 OpenCV?

  2. 使用不同的概念对图像进行预处理,例如模糊、阈值处理、去噪(非局部均值)。

  3. Canny 边缘检测和最大轮廓提取

  4. 最后——锐化和亮度校正

什么是 OpenCV

OpenCV 是一个主要针对实时计算机视觉的编程函数库,最初由 Intel 开发,后来由 Willow Garage 和 ITEZ 提供支持。该库是跨平台的,可在开源 BSD 许可下免费使用,它最初是用 C++ 开发的,但现在它可以跨多种语言使用,例如 Python、Java 等。

预处理

模 糊

模糊的目的是减少图像中的噪声,它从图像中去除高频内容(例如:噪声、边缘),导致边缘模糊。

平均——它只是取内核区域下所有像素的平均值,并用这个平均值替换中心元素。

高斯滤波器——使用高斯核代替由相等滤波器系数组成的盒式滤波器。

中值滤波器——计算内核窗口下所有像素的中值,并用这个中值替换中心像素。

双边滤波器——高斯模糊的高级版本,它不仅可以消除噪音,还可以平滑边缘。

原始VS高斯模糊

阈 值

在图像处理中,阈值分割是最简单的图像分割方法,在灰度图像中,阈值可用于创建二值图像,这样做通常是为了清楚地区分不同的像素强度阴影。

简单阈值——如果像素值大于阈值,则为其分配一个值(可能是白色),否则为其分配另一个值(可能是黑色)。

自适应阈值——算法计算图像小区域的阈值。因此,对于同一图像的不同区域,我们可以得到不同的阈值,对于不同照明的图像,我们可以得到更好的结果。


注意:切记在阈值之前将图像转换为灰度

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值