计算机视觉及OpenCV入门简介

本文介绍了计算机视觉的基本概念,包括图像识别、无人驾驶、AR/VR等应用场景,并对比了计算机视觉与计算机图形学的区别。重点讲解了OpenCV库,阐述了其在图像处理中的作用。还探讨了图像的数字化过程,如傅里叶变换和图像滤波,特别是高斯模糊的原理。此外,文章列举了相关会议与期刊,为深入学习提供资源。
摘要由CSDN通过智能技术生成

计算机视觉及OpenCV入门简介

这是一篇实验室培训过后写的感悟,附带授课大佬及实验室GitHub地址:

计算机视觉

什么是计算机视觉?

计算机视觉是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。

简单概括为:

  1. 让计算机去认知世界,人工智能
  2. 图像处理 + 机器学习 + 三维理论

计算机视觉能干什么?

  • 图像识别
  • 无人汽车
  • AR、VR
  • 三维重建
  • 工程测绘
  • 图像分割
  • ……

计算机视觉(CV)与计算机图形学(CG)的区别

计算机图形学(Computer Graphics)和计算机视觉(Computer Vision)是同一过程的两个方向。CG将抽象的语义信息转化成图像,而CV是从图像中提取抽象的语义信息。

计算机图形学:输入的是对虚拟场景的描述,通常为多边形数组,而每个多边形由三个顶点组成,每个顶点包括三维坐标、贴图坐标、RGB颜色等。输出的是图像,即二维像素数组。

计算机视觉:输入的是图像或图像序列,通常来自相机、摄像头或视频文件。输出的是对于图像序列对应的真实世界的理解,比如检测人脸、识别车牌。

参考文章:https://blog.csdn.net/hanlin_tan/article/details/50447895

CV对大学生比赛、就业、读研有什么用?

  • CV的魅力在于各种高深的研究方向和算法,有广泛的应用场景,结合CV会有很多有趣的idea
  • 图像处理,或者视觉相关的岗位薪资比较高
  • 计算机视觉仍然是计算机科研的热门方向

OpenCV

下面是对OpenCV的简单介绍,应用实例在后面。

什么是OpenCV?

中文名:开源计算机视觉库
英文全称:Open Source Computer Vision Library

OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。它支持CUDA加速,现在已经发展到了OpenCV4.0.1版本。

为什么会有OpenCV?

计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
1、研究代码(慢,不稳定,独立并与其他库不兼容)
2、耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。

图像

图像的取样与量化

计算机保存的图像都是一个一个的像素点,称为数字图像。我们想要在计算机中处理图像,就必须把真实的图像通过数字化转变成计算机能够接受的显示和存储格式,然后再用计算机进行分析处理。
图像数字化过程由图像的取样与量化来完成。取样就是要用多少点来描述一幅图像,取样结果质量的高低就是用图像的分辨率来衡量的;量化是指要使用多大范围的数值来表示图像采样之后的一个点。也可以说,数字化坐标值称为取样,数字化幅度值称为量化。

实例
上图左侧是要数字化的物体,右侧是数字化后的图像,每个小格即为一个像素点。
实例
在这里插入图片描述
推荐文章:https://www.cnblogs.com/yunfung/p/6753337.html
https://blog.csdn.net/zqhwando/article/details/78871140

图像还能看成是什么?

图像由一组波组成,我们要把图像进行数字化存储,就需要提到一个概念——傅里叶级数。

图像是一种波
傅里叶级数公式
傅里叶级数指任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示。

傅里叶变换(空间域->频率域)

傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。
傅里叶变换的本质是将一个周期信号分解成无限多分开的(离散的)正弦波。

傅里叶变换实例
傅里叶变换实例
傅里叶变换实例
为什么要提到傅里叶变换呢?因为当你在二维很难处理一个图像的时候,可能换个“角度”处理起来却很简单,这是傅里叶变换的一个魅力所在。
在这里插入图片描述
例如,处理一张异常图片,频率方向无法进行或者工作量太大时,可能改为在时间方向处理会很简单。

参考文章:https://blog.csdn.net/yangdashi888/article/details/53215256

图像滤波(空间域滤波)

图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。其实质是减少数字图像在使用前的的噪声污染。

线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核or滤波器)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。
在这里插入图片描述

卷积

卷积可以看作是一种结合了矩阵运算的计算方法,它是是分析数学中一种重要的运算。

设:f(x),g(x)是R1上的两个可积函数,作积分:
在这里插入图片描述

可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数 h(x),称为函数 f 与 g 的卷积,记为 h(x) = (f * g)(x)。

容易验证,(f * g)(x) = (g * f)(x),并且(f * g)(x)仍为可积函数。

卷积与傅里叶变换有着密切的关系。利用一点性质,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

C++语言代码:

void convolution(
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值