《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一一0.2 数字图像处理与机器视觉

简介:

本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一书中的第0章,第0.2节,作者:张铮 , 徐超 , 任淑霞 , 韩海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

0.2 数字图像处理与机器视觉

**数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)
0.2.1 从图像处理到图像识别**
图像处理、图像分析和图像识别是认知科学与计算机科学中的一个令人兴奋的活跃分支。从1970年这个领域经历了人们对其兴趣的爆炸性增长以来,到20世纪末逐渐步入成熟。其中遥感、技术诊断、智能车自主导航、医学平面和立体成像以及自动监视领域是发展最快的一些方向。这种进展最集中地体现在市场上多种应用这类技术的产品的纷纷涌现。事实上,从数字图像处理到数字图像分析,再发展到最前沿的图像识别技术,其核心都是对数字图像中所含有的信息的提取及与其相关的各种辅助过程。

1.数字图像处理
数字图像处理(Digital Image Processing)就是指使用电子计算机对量化的数字图像进行处理,具体地说就是通过对图像进行各种加工来改善图像的外观,是对图像的修改和增强。

图像处理的输入是从传感器或其他来源获取的原始的数字图像,输出是经过处理后的输出图像。处理的目的可能是使输出图像具有更好的效果,以便于人的观察;也可能是为图像分析和识别做准备,此时的图像处理是作为一种预处理步骤,输出图像将进一步供其他图像进行分析、识别算法。

2.数字图像分析
数字图像分析(Digital Image Analyzing)是指对图像中感兴趣的目标进行检测和测量,以获得客观的信息。数字图像分析通常是指将一幅图像转化为另一种非图像的抽象形式,例如图像中某物体与测量者的距离、目标对象的计数或其尺寸等。这一概念的外延包括边缘检测和图像分割、特征提取以及几何测量与计数等。

图像分析的输入是经过处理的数字图像,其输出通常不再是数字图像,而是一系列与目标相关的图像特征(目标的描述),如目标的长度、颜色、曲率和个数等。

3.数字图像识别
数字图像识别(Digital Image Recognition)主要是研究图像中各目标的性质和相互关系,识别出目标对象的类别,从而理解图像的含义。这往往囊括了使用数字图像处理技术的很多应用项目,例如光学字符识别(OCR)、产品质量检验、人脸识别、自动驾驶、医学图像和地貌图像的自动判读理解等。

图像识别是图像分析的延伸,它根据从图像分析中得到的相关描述(特征)对目标进行归类,输出使用者感兴趣的目标类别标号信息(符号)。

总而言之,从图像处理到图像分析再到图像识别这个过程,是一个将所含信息抽象化,尝试降低信息熵,提炼有效数据的过程,如图0.5所示。

从信息论的角度上说,图像应当是物体所含信息的一个概括,而数字图像处理侧重于将这些概括的信息进行变换,例如升高或降低熵值,数字图像分析则是将这些信息抽取出来以供其他过程调用。当然,在不太严格时,数字图像处理也可以兼指图像处理和分析。

image

读者或许也听过另一个概念,计算机图形学(Computer Graphics)。此概念与数字图像分析大致相反,它是一个对由概念或数学表述的物体图像进行处理和显示的过程。

0.2.2 什么是机器视觉
机器视觉(Machine Vision),又称计算机视觉(Computer Vision)。它是将数字图像处理和数字图像分析、图像识别结合起来,试图开发出一种能与人脑的部分机能比拟,能够理解自然景物和环境的系统,在机器人领域中为机器人提供类似人类视觉的功能。计算机视觉是数字成像领域的尖端方向,具有最综合的内容和最广泛的涵盖面。

提示 后文中,如无特别说明,文章通常使用广义的图像处理概念,即用数字图像处理这个词涵盖上文所提到的图像处理和数字图像分析;而对于图像识别和机器视觉的概念常常不加区分,尽管严格地说识别只对应于高级视觉的范畴。
0.2.3 数字图像处理和识别的应用实例
如今,数字图像处理与机器视觉的应用越来越广泛,已经渗透到国家安全、航空航天、工业控制、医疗保健等各个领域乃至人们的日常生活和娱乐当中,在国民经济中发挥着举足轻重的作用。

image

下面结合两个典型的应用来说明。

1.图像处理的典型案例——X光照片的增强
图0.6中的两幅图片,图0.6(a)是一幅直接拍摄未经处理的X光照片,对比度较低,图像细节难以辨识;图0.6(b)中呈现了图0.6(a)经过简单的增强处理后的效果,图像较为清晰,可以有效地指导诊断和治疗。从中读者应该可以看出图像处理技术在辅助医学成像上的重要作用。

image

2.图像识别的典型案例——ALVINN汽车自动驾驶系统
著名的自动驾驶系统ALVINN是人工神经网络(关于人工神经网络的介绍详见第15章)的一个典型的应用。该系统使用一个经过训练的神经网络以正常速度在高速公路上驾驶汽车。如图0.7(b)所示,ALVINN具有一个典型的3层结构,网络的输入层共有30×32个单元,对应于一个30×32的像素点阵,是由一个安装在车辆上的前向摄像机获取的图像经过重采样得到的。输出层共有30个单元,输出情况指出了车辆行进的方向。

image

在训练阶段,ALVINN以人类驾驶时摄像机所捕获的前方交通状况作为输入,以人类通过操作方向盘给出的前进方向作为目标输出,整个训练过程大约5分钟;在测试阶段,ALVINN用学习到的网络在高速公路上以的时速成功地驾驶了。

注 (a)为车内的摄像头和前方的实际情况;(b)为ALVINN的网络结构,摄像头捕获图像的30×32的重采样图像被作为网络的输入,对应于960个输入层单元,这些输入又连接至4个隐藏单元,再连接到30个输出单元,输出为一个30维向量,相当于把整个方向盘的控制范围分成30份,每个输出单元对应一个特定的驾驶方向,决策结果为输出值最大的单元对应的行驶方向。

相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
21天前
|
存储 C++
【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)
【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)
|
29天前
|
算法 IDE Java
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
40 0
|
29天前
|
Java API 开发工具
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(三)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
30 0
|
29天前
|
Java 数据处理 数据库
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(二)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0
|
29天前
|
存储 算法 Java
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(一)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0
|
1月前
|
计算机视觉
数字图像处理笔记(一)Matlab实现直方图均衡化
数字图像处理笔记(一)Matlab实现直方图均衡化
|
1月前
|
存储 C++ Python
C++版本netCDF在Visual Studio中的部署
【2月更文挑战第20天】本文介绍在Windows电脑的Visual Studio软件中,配置C++语言最新版netCDF库的方法~
C++版本netCDF在Visual Studio中的部署
|
2月前
|
编译器 C++
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
46 0
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
|
4月前
|
定位技术 C++
Visual Studio复制、拷贝C++项目与第三方库配置信息到新的项目中
Visual Studio复制、拷贝C++项目与第三方库配置信息到新的项目中
|
4月前
|
C++ 计算机视觉
Visual Studio新项目快速配置已有项目中编译好的C++第三方库的方法
Visual Studio新项目快速配置已有项目中编译好的C++第三方库的方法