【计算机视觉】一、计算机视觉概述

2024-07-30 12:43:16 浏览数 (2)

一、计算机视觉

  • 模仿人类视觉系统
  • 如何使计算机从数字图像或视频中获得高层次的理解

  计算机视觉是人工智能的重要组成部分,是赋予机器自然视觉能力的学科,相当于是人工智能的大门。

  计算机视觉旨在模仿和实现人类视觉系统的功能,从而使计算机能够从数字图像或视频中获取高层次的理解和分析,比如识别物体、理解场景、检测动作等。这对于很多应用领域都具有重要意义,如机器人视觉、自动驾驶、医疗影像分析等。   近年来,计算机视觉取得了长足进步,尤其是在深度学习等人工智能新技术的推动下,计算机视觉系统的性能不断提高,逐步向着人类水平迈进。不过,完全模拟和实现人类视觉的高级认知功能仍然是一个巨大挑战,需要计算机视觉与神经科学、认知科学等多学科深度交叉融合。

二、计算机视觉与其它学科领域的关系

  计算机视觉与其他许多学科领域存在紧密联系,相互借鉴、交叉渗透,这种跨学科的交叉正是推动计算机视觉不断发展的重要动力。我概括了一些主要的关联领域:

1、图像处理

  图像处理通常是把一幅图像变换成另外一幅图像,也就是说,图像处理系统的输入是图像,输出仍然是图像。

  图像处理是计算机视觉的基础,为后续的图像理解和分析提供前期处理。计算机视觉需要利用图像处理方法对原始图像数据进行增强、滤波、恢复等,以获取高质量图像。

2、计算机图形学

  通过几何基元,如线、圆和自由曲面,来生成图像。计算机视觉正好是解决相反的问题,即从图像中估计几何基元和其它特征.因此,计算机图形学属于图像综合,计算机视觉属于图像分析

  图形学着眼于根据几何模型生成图像,而视觉是从图像中提取几何和语义信息的相反过程。二者相辅相成,往往结合使用。

3、模式识别

  模式一般指一类事物区别于其它事物所具有的共同特征

  模式识别研究如何用数学模型来描述事物的内在规律,是计算机视觉任务的理论基础,如目标检测、分类等都需要借助模式识别方法。

4、人工智能(AI)

  涉及到智能系统的设计和智能计算的研究。在经过图像处理和图像特征提取过程后,接下来要用人工智能方法对场景特征进行表示,并分析和理解场景。人工智能有三个过程:感知、认知和行动

  人工智能为计算机视觉提供了大量智能算法,如机器学习、深度学习等,使计算机能够自主学习、推理和决策。视觉是人工智能感知世界的重要能力。

5、神经生理学与认知科学

  将人类视觉作为主要的研究对象。计算机视觉中已有的许多方法与人类视觉极为相似。许多计算机视觉研究者对研究人类视觉计算模型比研究计算机视觉系统更感兴趣,希望计算机视觉更加自然化,更加接近生物视觉。

  人类视觉系统设计给了计算机视觉极大的启发,很多生物视觉计算模型都被成功应用于视觉算法中,如卷积神经网络等。

三、计算机视觉的应用

  计算机视觉的应用领域十分广泛,下面我就根据自己的了解,对这些应用领域简要分析:

1. 人脸识别

  利用计算机视觉技术对人脸进行检测、识别和验证,在安全监控、刷脸支付、人员通行管理等领域有广泛应用。

2. 目标检测

  检测图像或视频中的特定目标物体,定位其位置,在机器人导航、无人驾驶、视频监控等场景中十分重要。

3. 图像生成

  依据文本描述或提示生成逼真图像,如最新的稳定扩散模型,在设计、虚拟现实等领域大有应用前景。

不同模型生成的母猪上树

重量级选手闪亮登场:

4. 城市建模

  通过航空影像或地面图像数据,重建出三维城市模型,用于城市规划、导航等。

5. 电影特效

  在特效合成、动作捕捉、虚拟场景构建等方面,计算机视觉扮演着重要角色。

6. 体感游戏动作捕捉

  通过计算机视觉识别人体动作,实现自然的人机交互,提升游戏体验。

7. 虚拟现实

  计算机视觉是虚拟现实系统的关键技术,用于三维重建、物体检测和跟踪等。

四、计算机视觉的意义

  • 自动识别图像或视频中的对象
  • 从视觉数据中提取出潜在信息
  • 使计算机看到/学习程序员没有告诉它们的东西
  • 用计算算法模仿人类的视觉感知
  • 训练计算机理解视觉世界
  • 通过视觉感知来认识世界

How?

  • 将图像转换为更易于理解的事物,例如距离、边缘、方向等
  • 从图像/视频中获取信息
  • 赋予计算机“眼睛”,像人类一样观察和识别
  • 教计算机通过图像解释和理解我们的世界

意义

  • 智能机器:能够模拟人类的功能,感知外部世界并有效解决人所能解决问 题的系统。
  • 在人类的感知器官中,视觉获取的信息量最大,大约80%,因此对于发展 智能机器而言,赋予机器以人类视觉功能是十分重要的。
  • 计算机视觉:研究用计算机来模拟生物外显或宏观视觉功能的技术学科。
  • 计算机视觉的任务是用图像创建或恢复现实世界模型,然后认知现实世界。
  • 具体来说,让计算机具有对周围世界的空间物体进行传感、抽象、判断的能力,从而达到识别、理解的目的。

五、计算机视觉的发展历程

  • 上世纪50年代,从统计模式识别开始,主要集中在二维图像分析与识别,主要应用包括字符识别、工件表面检测等等。
  • 上世纪60年代,拓展到三维结构,对物体的形状,物体的 空间关系进行描述。通过对积木世界的研究,引出了边缘、 角点等特征提取,图像明暗、纹理、运动以及成像几何等研究工作。
  • 上世纪70年代,Marr计算视觉理论,建立一个十分重要的理论框架。
    • 1982sMarr视觉计算理论——三种层次
      • 计算理论:(视觉)信息处理系统的计算(任务)目的 是什么?该问题的已知或可以施加的约束是什么?
      • 表示和算法:输入、输出和中间信息是如何表达的?使 用哪些算法来计算所期望的结果?
      • 硬件实现:表达和算法是如何映射到实际硬件即生物视 觉系统或特殊的硅片上的?相反地, 硬件的约束怎样才 能用于指导表达和算法的选择?
    • 随着计算机视觉中使用图形芯片(GPU)和多核结构日益增长, 这个问题再次变得相当重要。

六、实践

1、OpenCV (C /Python):

  • 2D和3D特征工具包,用于图像处理
  • 自我运动估计,通过图像确定相机运动
  • 人脸识别系统
  • 手势识别
  • 人机交互(HCI)
  • 移动机器人应用
  • 运动理解
  • 物体检测
  • 图像分割和识别
  • 立体视觉:利用两个相机获取深度感知
  • 运动恢复(SFM)
  • 运动视频跟踪
  • 增强现实

2、MATLAB

  • 用于数值计算和科学计算
  • 统计分析和数据可视化
  • 图像处理和计算机视觉算法
  • 应用于信号处理和控制系统
  • 模拟系统设计和分析
  • 数据分析、建模和可视化
  • 测试和验证
  • 算法原型和分析
  • 应用程序部署
  • 报告生成和演示文稿
  • 并行计算设计

3、Python

  1. imutils具有一系列图像处理功能,如平移、旋转、调整大小、翻转等,并支持Matplotlib图像、OpenCV和Python本身的额外功能。
  2. OpenCV是一个主要针对实时计算机视觉的综合库,提供了许多基本功能,它被认为是一个用于图像处理的库。它效率高,使用实时图像处理。
  3. dlib是一个开源的C 库,实现了多种机器学习算法。虽然该库最初是用C 编写的,但它具有良好且易于使用的Python绑定。它广泛用于人脸检测和面部标志检测。
  4. scikit-learn是一个用于python编程语言的免费软件机器学习库。它具有各种分类、回归、聚类算法,包括支持向量机、随机森林、梯度提升、k-means和DBSCAN。它建立在Matplotlib、NumPy和 SciPy之上。
  5. scikit-image 是python编程语言的开源图像处理库。它包括分割、滤波变换、色彩空间操作、分析、形态学、特征检测等算法。它与Python数值和科学库NumPy和SciPy集成。 scikit-image 是图像处理算法的集合。它是免费的,没有限制。它包含一些OpenCV没有的算法实现。
  6. TensorFlow TensorFlow是一个用于机器学习的端到端开源平台,它提供了一个全面、灵活的工具,库和社区资源。生态系统,使研究人员能够推动ML的最新发展,而开发人员则可以轻松构建和部署ML支持的应用程序。 它是一个免费的开源软件库,用于跨一系列任务的数据流和可微分编程。它通常用于神经网络和Keras的计算后端。
  7. Keras Keras是一个用Python编写的开源神经网络库。它能够在TensorFlow、Microsoft Cognitive Toolkit、Theano或PaidML之上运行。
  8. mxnet mxnet是一个用于训练和部署神经网络的开源深度学习框架。它非常快速和高效。它能够跨多个GPU和多台机器进行分布式运行。

0 人点赞