数字图像处理笔记

时间:2024-04-12 07:08:45

初识数字图像处理与机器视觉

数字图像

什么是数字图像

简单地说,数字图像就是能够在计算机上显示和处理的图像,可根据其特性分为两大类——位图和矢量图。位图通常使用数字阵列来表示,常见格式有BMP、JPG、GIF等;矢量图由矢量数据库表示,接触最多的就是PNG图形。

本书只涉及数字图像中位图图像的处理与识别,如无特别说明,后文提到的“图像”和“数字图像”都仅仅是指位图图像。一般而言,使用数字摄像机或数字照相机得到的图像都是位图图像。

将一幅图像视为一个二维函数f (x , y ),其中x 和y 是空间坐标,而在x – y 平面中的任意一对空间坐标(x , y )上的幅值 f 称为该点图像的灰度 、亮度 或强度 。此时,如果f 、x 、y 均为非负有限离散,则称该图像为数字图像 (位图 )。

一个大小为M ×N 数字图像是由M 行N 列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素 或像素 。

数字图像的显示

不论是CRT显示器还是LCD显示器,都是由许多点构成的,显示图像时这些点对应着图像的像素,称显示器为位映像设备。所谓位映像,就是一个二维的像素矩阵,而位图也就是采用位映像方法显示和存储的图像。当一幅数字图像被放大后就可以明显地看出图像是由很多方格形状的像素构成的。

数字图像的分类

根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像以及索引图像等。

1.二值图像
每个像素只有黑、白两种颜色的图像称为二值图像 。在二值图像中,像素只有0和1两种取值,一般用0来表示黑色,用1表示白色。

2.灰度图像
在二值图像中进一步加入许多介于黑色与白色之间的颜色深度,就构成了灰度图像 。这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)称为一个灰度级 ,通常用L 表示。在灰度图像中,像素可以取0~L -1之间的整数值,根据保存灰度数值所使用的数据类型不同,可能有256种取值或者说2 k 种取值,当k =1时即退化为二值图像。

3.RGB图像
众所周知,自然界中几乎所有颜色都可以由红(Red, R)、绿(Green, G)、蓝(Blue, B)3种颜色组合而成,通常称它们为RGB三原色。计算机显示彩色图像时采用最多的就是RGB模型,对于每个像素,通过控制R、G、B三原色的合成比例决定该像素的最终显示颜色。

对于三原色RGB中的每一种颜色,可以像灰度图那样使用L 个等级来表示含有这种颜色成分的多少。例如对于含有256个等级的红色,0表示不含红色成分,255表示含有100%的红色成分。同样,绿色和蓝色也可以划分为256个等级。这样每种原色可以用8位二进制据表示,于是3原色总共需要24位二进制数,这样能够表示出的颜色种类数目为256×256××256=224 ,大约有1600万种,已经远远超过普通人所能分辨出的颜色数目。

RGB颜色代码可以使用十六进制数减少书写长度,按照两位一组的方式依次书写R、G、B三种颜色的级别。例如:0xFF0000代表纯红色,0x00FF00代表纯绿色,而0x00FFFF是青色(这是绿色和蓝色的加和)。当RGB三种颜色的浓度一致时,所表示的颜色就退化为灰度,比如0 x808080就是50%的灰色,0x000000为黑色,而0xFFFFFF为白色。

未经压缩的原始BMP文件就是使用RGB标准给出的3个数值来存储图像数据的,称为RGB图像 。在RGB图像中每个像素都是用24位二进制数表示,故也称为24位真彩色图像。

4.索引图像
如果对每个像素都直接使用24位二进制数表示,图像文件的体积将变得十分庞大。来看一个例子,对一个长、宽各为200像素,颜色数为16的彩色图像,每个像素都用RGB三个分量表示。这样每个像素由3个字节表示,整个图像就是200×200×3=120kB。这种完全未经压缩的表示方式,浪费了大量的存储空间,下面简单介绍另一种更节省空间的存储方式:索引图像

同样还是对200×200像素的16色图像,由于这张图片中最多只有16种颜色,那么可以用一张颜色表(16×3的二维数组)保存这16种颜色对应的RGB值,在表示图像的矩阵中使用那16种颜色在颜色表中的索引(偏移量)作为数据写入相应的行列位置。例如,颜色表中第3个元素为0xAA1111,那么在图像中所有颜色为0xAA1111的像素均可以由3-1=2表示(颜色表索引下标从0开始)。这样一来,每一个像素所需要使用的二进制数就仅仅为4位(0.5字节),从而整个图像只需要200×200×0.5=20kB就可以存储,而不会影响显示质量。

上文所指的颜色表就是常说的调色板(Palette) ,另一种说法叫作颜色查找表(Look Up Table,LUT) 。Windows位图中应用到了调色板技术。其实不仅是Windows位图,许多其他的图像文件格式比如PCX、TIF、GIF都应用了这种技术。

在实际应用中,调色板中通常只有少于256种的颜色。在使用许多图像编辑工具生成或者编辑GIF文件的时候,常常会提示用户选择文件包含的颜色数目。当选择较低的颜色数目时,将会有效地降低图像文件的体积,但也会一定程度上降低图像的质量。

使用调色板技术可以减小图像文件体积的条件是图像的像素数目相对较多,而颜色种类相对较少。如果一个图像中用到了全部的24位真彩色,对其使用颜色查找表技术是完全没有意义的,单纯从颜色角度对其进行压缩是不可能的。

数字图像的实质

对于数字图像f (x , y )的定义仅适用于最为一般的情况,即静态的灰度图像。更严格地说,数字图像可以是2个变量(对于静止图像,Static Image)或3个变量(对于动态画面,Video Sequence)的离散函数。在静态图像的情况下是f (x , y ),而如果是动态画面,则还需要时间参数t ,即f (x , y , t )。函数值可能是一个数值(对于灰度图像),也可能是一个向量(对于彩色图像)。

图像处理是一个涉及诸多研究领域的交叉学科,下面就从不同的角度来审视数字图像。

  1. 从线性代数和矩阵论的角度,数字图像就是一个由图像信息组成的二维矩阵,矩阵的每个元素代表对应位置上的图像亮度和/或色彩信息。当然,这个二维矩阵在数据表示和存储上可能不是二维的,这是因为每个单位位置的图像信息可能需要不只一个数值来表示,这样可能需要一个三维矩阵来对其进行表示。
  2. 由于随机变化和噪声的原因,图像在本质上是统计性的。因而有时将图像函数作为随机过程的实现来观察其存在的优越性。这时有关图像信息量和冗余的问题可以用概率分布和相关函数来描述和考虑。例如,如果知道概率分布,可以用熵(Entropy) H ① 来度量图像的信息量,这是信息论中一个重要的思想。
  3. 从线性系统的角度考虑,图像及其处理也可以表示为用狄拉克冲激公式表达的点展开函数的叠加,在使用这种方式对图像进行表示时,可以采用成熟的线性系统理论研究。在大多数时候,都考虑使用线性系统近似的方式对图像进行近似处理以简化算法。虽然实际的图像并不是线性的,但是图像坐标和图像函数的取值都是有限的和非连续的。

数字图像的表示

为了表述像素之间的相对和绝对位置,通常还需要对像素的位置进行坐标约定。本书中所使用的坐标约定如图所示。但在MATLAB中坐标的约定会有变化。
数字图像处理笔记
在这之后,一幅物理图像就被转化成了数字矩阵,从而成为计算机能够处理的对象了。数字图像f 的矩阵表示如下所示。
数字图像处理笔记
有时也可以使用传统矩阵表示法来表示数字图像和像素,如下式所示。
数字图像处理笔记

其中行列(M 行N 列)必须为正整数,而离散灰度级数目L 一般为2的k 次幂,k 为整数(因为使用二进制整数值表示灰度值),图像的动态范围为[0, L -1],那么图像存储所需的比特数为b = M ×N ×k 。注意到在矩阵f (y , x )中,一般习惯于先行下标,后列下标的表示方法,因此这里先是纵坐标y (对应行),然后才是横坐标x (对应列)。

而有些图像矩阵中,很多像素的值都是相同的。例如在一个纯黑背景上使用不同灰度勾勒的图像,大多数像素的值都会是0。这种矩阵称为稀疏矩阵(Sparse Matrix),可以通过简单描述非零元素的值和位置来代替,大量地写入0元素。这时存储图像需要的比特数可能会大大减少。

图像的空间和灰度级分辨率

1.图像的空间分辨率(Spatial Resolution)
图像的空间分辨率是指图像中每单位长度所包含的像素或点的数目,常以像素/英寸(pixels per inch, ppi)为单位来表示。如72ppi表示图像中每英寸包含72个像素或点。分辨率越高,图像将越清晰,图像文件所需的磁盘空间也越大,编辑和处理所需的时间也越长。

像素越小,单位长度所包含的像素数据就越多,分辨率也就越高,但同样物理大小范围内所对应图像的尺寸也会越大,存储图像所需要的字节数也越多。因而,在图像的放大缩小算法中,放大就是对图像的过采样,缩小是对图像的欠采样。

一般在没有必要对涉及像素的物理分辨率进行实际度量时,通常会称一幅大小为 M × N 的数字图像的空间分辨率为 M × N 像素。

2.图像的灰度级/辐射计量分辨率(Radiometric Resolution)
在数字图像处理中,灰度级分辨率 又叫色阶 ,是指图像中可分辨的灰度级数目,即前文提到的灰度级数目L ,它与存储灰度级别所使用的数据类型有关。由于灰度级度量的是投射到传感器上光辐射值的强度,所以灰度级分辨率也叫辐射计量分辨率 。

随着图像的灰度级分辨率逐渐降低,图像中包含的颜色数目变少,从而在颜色的角度造成图像信息受损,同样使图像细节表达受到了一定的影响。

数字图像处理笔记

数字图像处理与机器视觉

从图像处理到图像识别

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

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

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

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

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

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

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

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

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

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

什么是机器视觉

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

后文中,如无特别说明,文章通常使用广义的图像处理概念,即用数字图像处理这个词涵盖上文所提到的图像处理和数字图像分析;而对于图像识别和机器视觉的概念常常不加区分,尽管严格地说识别只对应于高级视觉的范畴。

数字图像处理和识别的应用实例

如今,数字图像处理与机器视觉的应用越来越广泛,已经渗透到国家安全、航空航天、工业控制、医疗保健等各个领域乃至人们的日常生活和娱乐当中,在国民经济中发挥着举足轻重的作用。

相关领域 典型应用
安全监控 指纹验证、基于人脸识别的门禁系统
工业控制 产品无损检测、商品自动分类
医疗保健 X光照片增强、CT、核磁共振、病灶自动检测
生活娱乐 基于表情识别的笑脸自动检测、汽车自动驾驶、手写字符识别

数字图像处理的预备知识

数字图像是由一组具有一定的空间位置关系的像素组成的,因而具有一些度量和拓扑性质。理解像素间的关系是学习图像处理的必要准备,这主要包括相邻像素,邻接性、连通性,区域、边界的概念,以及今后要用到的一些常见距离度量方法。

邻接性、连通性、区域和边界

数字图像处理笔记

1.邻接性(Adjacency)
定义V 是用于决定邻接性的灰度值集合,它是一种相似性的度量,用于确定所需判断邻接性的像素之间的相似程度。比如在二值图像中,如果认为只有灰度值为1的像素是相似的,则即V ={1},当然相似性的规定具有主观标准,因此也可以认为V ={0,1},此时邻接性完全由位置决定;而对于灰度图像,这个集合中则很可能包含更多的元素。此外,定义对角邻域ND (P )为8-邻域中不属于4-邻域的部分(见图0.8(c)),那么有如下的规定。

(1)4邻接(4-Neighbor):如果 Q ∈N 4 (P ),则称具有V 中数值的两个像素P 和Q 是4邻接的。
(2)8邻接(8-Neighbor):如果 Q ∈N 8 (P ),则称具有V 中数值的两个像素P 和Q 是8邻接的。

如下图所示,q和p是4邻接的:
数字图像处理笔记

如下图所示,q和p是对角邻接的:
数字图像处理笔记

如下图所示,p和周围的八个数都是邻接的:
数字图像处理笔记

显然,若p和q是8邻接,则他们不一定是4邻接。若p和q是4邻接,他们一定是8邻接。

m邻接:
说到m邻接,不得不引入灰度值集合V。灰度值集合V指的是0-255的任意一个子集。
对于m邻接,书上的概念是这么说的:
下列两个条件满足其中一个即为m邻接

(i)q在N4( p )中
(ii)在ND( q )中,且集合N4( p )∩N4( q )中没有来自V中数值的元素

看起来一脸懵逼,举个最简单的例子,设灰度值只有1。即p和q的灰度值都为1,V={1}。
然后让我们来翻译一下书上的概念:
直接看条件2,q在p的对角邻域中,即q和p是对角邻接,且p的4邻域和q的4邻域的交集的灰度值不在灰度值集合V中(由于V只有1这个元素,则交集元素的灰度非1),则p和q为m邻接。

是不是还是觉得很难理解,那我们可以通过图片来了解:
数字图像处理笔记
其中,红色区域的灰度值不在V中,即非1。
数字图像处理笔记
其中,黄色区域为p的4邻域和q的4邻域的交集,这个交集的元素的灰度值都不在V中,故p和q是m邻接。

接下来再举个例子,
数字图像处理笔记
其中,黄色区域为p的4邻域和q的4邻域的交集,交集中的一个像素的灰度值在V中,即为1,故p和q不是m邻接。

m邻接实质:当像素间同时存在4-邻接和8-邻接时,优先采用4-邻接,屏蔽两个和同一像素间存在4-邻接的像素之间的8-邻接。

为什么要引入m临接呢?我们再看下面的例子。
设下图ABCD像素灰度值为1。
数字图像处理笔记

将他们的8邻域中灰度值为1的值相连,得下图:
数字图像处理笔记

可以发现在这个8通路中,A到C的方式有两种,①是A——》B——》C,②是A——》C。而这被称为二义性,这就是为什么要引入M邻接的方式,因为采用m邻接的方式让像素相连能够消除二义性。

那么如何消除二义性呢?我们可以看到,A和C的四邻域交集中,B为1(属于集合V),故A和C不是m邻接,则说明A和C无法连通,如下图所示,各个像素的连通情况,A无法直接连通C。
数字图像处理笔记

如图所示,A到C只有一条路,即A——》B——》C,这样就使用了m邻接消除了二义性。

2.连通性

为了定义像素的连通性,首先需要定义像素P 到像素Q 的通路(Path)。这也是建立在邻接性的基础上的。
像素P 到像素Q 的通路(Path) 指的是一个特定的像素序列(x 0 , y0 ), (x 1 , y 1 ), …, (xn , yn ),其中(x 0 , y 0 ) = (xp , yp ),(x n , yn ) = (x q , yq )。并且像素(xi , yi ) 和(xi-1 , yi-1 ) 在满足1≤i ≤n 时是邻接的。在上面的定义中,n 是通路的长度,若(x 0 , y 0 ) = (xn , yn ),则这条通路是闭合通路。相对应于邻接的概念,在这里有4通路和8通路。这个定义和图论中的通路定义是基本相同的,只是由于邻接概念的加入而变得更加复杂。
像素的连通性(Contiguous) :令S 代表一幅图像中的像素子集,如果在S 中全部像素之间存在一个通路,则可以称2个像素P 和Q 在S 中是连通的。此外,对于S 中的任何像素P ,S 中连通到该像素的像素集叫作S 的连通分量 。如果S 中仅有一个连通分量,则集合S 叫做连通集 。

卧槽,天书啊!

数字图像处理笔记
如果要从像素s到像素t:
在4连通的条件下:s不能到t,因为中心像素和右下角像素不满足4邻接关系。
在8连通的条件下:s可以到t
在m连通的条件下:s可以到t

3.区域和边界
区域的定义是建立在连通集的基础上的。令R 是图像中的一个像素子集,如果R 同时是连通集,则称R 为一个区域(Region)。

边界(Boundary) 的概念是相对于区域而言的。一个区域的边界(或边缘、轮廓)是区域中所有有一个或多个不在区域R 中的邻接像素的像素所组成的集合。显然,如果区域R 是整幅图像,那么边界就由图像的首行、首列、末行和末列定义。因而,通常情况下,区域指一幅图像的子集,并包括区域的边缘。而区域的边缘(Edge) 由具有某些导数值的像素组成,是一个像素及其直接邻域的局部性质,是一个有大小和方向属性的矢量。

边界和边缘是不同的。边界是和区域有关的全局概念,而边缘表示图像函数的局部性质。

距离度量的几种方法

假设对于像素P (xp , yp )、Q (xq , yq )、R (xr , yr )而言,有函数D 满足如下3个条件,则函数D 可被称为距离函数或度量。

  • D(P,Q) ≥0,当且仅当P = Q 时,有D(P,Q) = 0
  • D(P,Q) = D(Q,P)
  • D(P,Q) ≤D(P,R) + D(R,Q)

常见的几种距离函数如下所示。
① 欧氏距离
数字图像处理笔记
即两点之间的直线距离。

② D4距离(街区距离)
数字图像处理笔记
即距离等于r 的像素形成的以P 为中心的菱形。

比较难理解,可参考:https://www.cnblogs.com/soyo/p/6893551.html

③ D8距离(棋盘距离)
数字图像处理笔记
即距离等于r 的像素形成的以P 为中心的方形。

比较难理解,可参考:https://www.cnblogs.com/soyo/p/6893551.html

距离度量参数可以用于对图像特征进行比较和分类或者进行某些像素级操作。最常用的距离度量是欧氏距离,然而在形态学中,也可能使用街区距离和棋盘距离。

基本的图像操作

1.点运算和邻域运算
点运算指的是对图像中的每一个像素逐个进行同样的灰度变换运算。设r 和s 分别是输入图像f (x , y )和输出图像g (x , y )在任一点(x , y )的灰度值,则点运算可以使用下式定义。
s = T (r)
而如果将点运算扩展,对图像中每一个小范围(邻域)内的像素进行灰度变换运算,即称为邻域运算或邻域滤波。这可以使用下式定义。
g (x , y ) = T [f (x , y )]

2.线性和非线性操作
令H 是一种算子,其输入输出都是图像。若对于任意两幅(或两组)图像F 1和F 2及任意两个标量a 和b 都有如下关系成立,
H (aF 1 +bF 1 )=aH (F 1 )+bH (F 2 )

则称H 为线性算子。也即对两幅图像的线性组合应用该算子与分别应用该算子后的图像在进行同样的线性组合所得到的结果相同,也即算子H 满足线性性质。同样的,不符合上述定义的算子即为非线性算子,对应的是非线性图像操作。举例来说,滤波中的平均平滑、高斯平滑、梯度锐化等都是线性运算,而中值滤波则是非线性的。

线性操作由于其稳定性的特点而在图像处理中占有非常重要的地位。 尽管非线性算子常常也能够提供较好的性能,但它的不可预测性使其在一些如军事图像处理和医学图像处理等严格的应用领域中难以获得广泛的应用。

参考链接:
https://blog.csdn.net/Hanghang_/article/details/87064184