人类的视觉可以感知可见光波段的电磁光谱,视觉让人类得以观察和理解世界。而计算机视觉的范围则是全电磁光谱,旨在通过电子感知和理解图像来复制人类视觉。机器视觉则是计算机视觉在媒体、医疗保健以及制造业等行业的应用,是一个包括机械工程、光学、计算机科学和自动化的一个子领域。
目录
一、机器视觉概述
(1)机器视觉通用组件
(2)众多的应用场景
(3)实现机器视觉的困难
(4)算力要求
二、MATLAB图像处理概述
三、图像采样和量化
(1)图像数字化
(2)像素
(3)采样
(4)量化
(5)颜色深度
人类的视觉可以感知可见光波段的电磁光谱,视觉让人类得以观察和理解世界。而计算机视觉的范围则是全电磁光谱,旨在通过电子感知和理解图像来复制人类视觉。机器视觉则是计算机视觉在媒体、医疗保健以及制造业等行业的应用,是一个包括机械工程、光学、计算机科学和自动化的一个子领域。
工业视觉中,使用数码相机或者智能相机和图像处理软件来检查制造物体是否合格。智能相机是由图像采集电路和从图像中提取和处理信息的微处理器组成的集成机器视觉系统。智能相机通常有一个接口设备,使结果可用于其他设备。检查对象可以是半导体芯片、汽车零部件、食品和药品等,常见的应用场景有质量控制、安全和监控、环境监控、娱乐产业、医疗保健等。
① 在制造业中,机器视觉能够检测缺陷、校准和控制制造过程,并优化资源的使用;使得人们可以获得可重复性、产品可靠性、100%高速检测、消费者信心和满意度。
② 在保安及监察场景中,机器视觉能够在3D维度中跟踪对象和人、识别和注册特定和通用对象、建模和识别手势、动作和行为,并执行生物特征测量,我们可以获得更安全的环境、更高效的非阻塞性监控,以降低犯罪率。
③ 在环境监测领域,机器视觉可以用于监测飓风的传播、监测垃圾场的污染、绘制和监测天然气管道和铁路的状况、监督海洋的污染,帮助我们更好的规划和利用资源。
④ 在日常生活场景中,机器视觉允许用户通过内容搜索图像数据库和视频库,可以进行高效的图像压缩、多视图场景创建,或者依据对象生成的现实模型。人们能够获得更大的真实感、更低的成本、更广泛的可访问性。前段时间Facebook大火的元宇宙概念就是最典型的例子。
⑤ 在医疗领域,机器视觉为临床医生提供了3D/4D可视化、3D纹理分析、3D和2D图像配准等技术,借助机器视觉医疗人员可以进行虚拟对象操作。
① 3D到2D的信息丢失:例如在针孔模型和单一可用视图中,射影变换以相同的方式看到一个靠近摄像机的小物体和一个远离摄像机的大物体,此时成像几何的针孔模型并不能区分物体的大小。
② 解读困难:人们使用之前的知识和经验来理解当前正在观察的图像,可能出现偏差。
③ 噪声:存在于现实世界的每一个测量中。
④ 数据量大:仅一张A4纸的大小,以每英寸300点(dpi)扫描,每像素8位(灰度),总的数据量为8.5 MB。庞大的数据量对算力提出了高要求。
⑤ 亮度测量:亮度取决于辐照度(光源类型、位置和强度)、观察者的位置、表面局部几何形状和表面反射率属性等,影响因素众多。
⑥ 本地窗口vs.全局视图:如果一个图像是全局的,那么就相对容易理解;但是如果图像只提供了一个非常局部的信息,要识别出图像中描绘的是什么物体可能非常困难。
以典型的医学图像为例,图像分辨率为512x512、16位像素,这将需要0.5Mb的存储空间。对于一帧,将会有512 x 512 = 262,144个像素操作。对于100MHz或者每秒100 x 106次操作的计算机,将花费:262144 / 100 x 106 = 0.00262144 s = 2.62144 ms 来执行图像操作。
实时系统的速率为每秒60-80帧,每个帧需要在12- 16ms内处理。而对于复杂的图像处理操作,每个像素需要多个操作,将需要硬件加速和/或并行处理。
MATLAB是一种很好的数字图像处理实现语言,具有很多的优势,如:
(1)允许快速的原型计算
(2)许多图像分析算法的可用实现
(3)可以很容易地在C, C++或Java中重写
(4)包含广泛流行的图像处理工具箱,涵盖了基本的图像处理功能
(5)MATLAB的公共领域/开源克隆广泛可用,例如Octava和SciLab。
所有MATLAB变量都是多维数组。矩阵是线性代数中常用的二维(2D)数组,向量是一维(1D)数组。MATLAB中的操作基本都是基于矩阵来进行。
无论是人视网膜上的图像,或是电视摄像机、传感器所捕捉到的图像,都是将3D场景投影到2D维度。
数字图像处理是利用计算机算法对数字图像进行图像处理,它是数字信号处理的一个分支领域。图像采样和图像量化就是数字图像处理的例子。
计算机所处理的图像必须用离散的数据结构表示,如矩阵或二维数组。图像数字化是通过采样和量化将图像转换为数字表示的过程,量化给每个连续的样本赋一个整数值,采样使得连续函数变为M行N列的矩阵。
数字图像(光栅图像或位图图像)是连续图像的通过离散抽样矩阵的表示,每个离散样本上的函数值被量化为由有限位数表示。样本矩阵中的每个元素称为像素(表示图元)。下图中,(a)表示投影到传感器阵列上的连续图像,(b)则是图像采样和量化结果。
像素是原始图像的一个点样本。
1、它是图像中最小的信息。
2、它有一个相对于图像中其他像素的位置。
3、它具有以bits为单位的颜色表示能力。
在MATLAB编码中,像素编号从1开始。像素的各种组合可以形成单色图像、彩色图像、视频单色图像流等,进而在显示媒介中显示图像。
采样可以看作是将xy平面采集成网格,采样使连续函数变为M行N列的矩阵。图像采样是空间的自由裁量,故采样图像不等于原始形状。像素越少,空间分辨率就越低。例如,我们可以将640 x 480图像的大小减小到160 x 120。但是当160 x 120的图像插值回640 x 480时,我们将观察到非常模糊的结果。
图像分辨率是测量采样密度的一种方法,提供了像素尺寸和物理尺寸之间的关系。常用单位如每英寸像素(ppi),例如:
如果图像的尺寸为1英寸× 1英寸,M = N = 8,则每英寸有8/1 = 8个像素。像素大小 = 1/8 = 0.125英寸。
像素大小决定了分辨率。另一个重要的值是光栅尺寸,又称为栅格或图像维度(=宽x高)。它是像素网格中水平和垂直样本的数量。
一些常见的图像中的像素数(光栅维数):
- 视频图形阵列(VGA)显示:640 * 480显示;4:3宽高比;M = 640像素,N = 480像素。640 x 480 = 307,200像素或30万像素。
- SVGA(Super VGA):800 x 600 ≈ 40万像素。
- XGA(Extended Graphics Array): 1024 x 768 ≈ 80万像素。
- 1080i HDTV 高清电视:1920 x 1080 ≈ 210万像素,是高分辨率数字电视格式。
- 2K:2048 x 1536 ≈ 310万像素;4:3长宽比;常用于故事片的数字效果实现。
- 普通CCD相机:至少512 × 256像素 = 131,072像素。
- 数码单反相机:至少400万像素。
在光栅尺寸中,缩放(或重新采样)指的是创建与源图像具有不同维度的图像的过程,缩小图像(或抽取)指的是降低栅格维数的过程,最终平均每个输出像素的源像素值。缩放图像是在源栅格中的原始样本样本之间增加图像大小以创建样本点的过程。插值指的是使用样本网格中的值来猜测未知像素的值。
量化过程是指将亮度或强度的连续范围量化到固定灰度级别。由于数字存储和量化硬件限制,固定灰度级别 K = 2^n,其中n是整数,称为颜色能力或颜色深度或位深度。
如果n=1,则k=0或1,图像为二进制图像
如果n=8,则k = 0,1,…,255,图像为灰度图像
图像量化的裁量权则在光强。其中:亮度等级=单色图像中的灰度等级。
量化误差:定义为实际模拟值和量化数字值之间的差值。产生原因是由于舍入或截断。
人类视觉感知最多能识别60个灰度级,数字图像则通常被量化到256个灰度级。
颜色深度定义为一个像素可以存储的最大数据数。例如:
单色图像:(,)=0,1,2,…,−1
二进制图像:(,)=0,1;颜色区分为1位数据
灰度图像:(,)=0,1,…,255;0为黑色,1到254为灰色,255为白色。颜色区分为8位数据。
人眼看到的颜色是所谓原色的可变组合:红(R)、绿(G)、蓝(B),也就是常说的RGB。RGB颜色模型是图像颜色生成的理想模型,每个颜色通道使用8位数据。
除了RGB外,比较常用的还有如CMY和CMYK的彩色打印模型。CMY和RGB其实是互补的颜色类型,应用在大多数在纸上沉积彩色颜料的设备,如打印机或复印机。
除此之外还有HSI颜色模型。HSI颜色模型对人类来说是自然和直观的,其中色相用来描述纯色(如纯黄色、纯橙色或纯红色)的颜色属性,饱和度用来表示纯色被白光稀释的程度,强度表示灰度级别。