在数字图像处理领域,《数字图像处理(第三版)》作为主要教材已有30多年。这是目前笔者个人所记录的笔记,后续会不断更新。若要获取本书pdf版本,可在本公共号"分享猿" 回复“DIP”获取下载链接。
1.灰度/强度
f(x,y)=i(x,y)r(x,y)
其中,0 < i(x,y) <∞ , 0 < r(x,y) <1
i(x,y):入射分量,入射到被观察场景的光源照射总量,取决于照射源
r(x,y):反射分量,场景中物体所反射的光照总量,0(全吸收)、1(全反射)
令单色图像在任何坐标(x_0 ,y_0)处的强度(灰度)表示为l=f(x_0 ,y_0 )
区间[ Lmi n,Lmax ]称为灰度级, 通常为[ 0,L-1 ],颜色变化:黑→灰→白
灰度级一般取为2的整数次幂,即 L=2^k
2.取样、量化
对坐标值进行数字化称为取样,对幅值数字化称为量化
3.数字图像表示
某些讨论中,使用传统的矩阵表示法来表示数字图像及其像素更为方便:
数字图像原点位于左上角,其中正x轴向下延伸,正y轴向右延伸,这种表示是笛卡尔坐标系。
4.动态范围
我们假设离散灰度级是间隔的,且他们是区间[0,L-1]内的整数。有时,由灰度跨越的值域非正式的称为动态范围,这里定义为系统中最大可度量灰度与最小可检测灰度之比。作为一条规则,上限却决于饱和度,下限取决于噪声
5.对比度
一幅图像中最高和最低灰度级间的灰度差为对比度
当一幅图像中像素可感知的数值有高的动态范围时,认为有高的对比度。相反,具有低动态范围的图像就很呆滞,看上去像冲淡了灰度。
6.存储图像所需的比特数b
b = M × N × k
当 M=N 时,b=N^2 k ,k对应灰度级数
如256个可能的离散灰度值的图像称为8比特图像
7.空间分辨率
每单位距离线对数和**每单位距离点数(像素数)**是最常用的度量。
每单位距离线对数:假设我们用交替的黑色和白色垂直线来构造-幅图形,其中线宽为W个单位(W可以小于1)。线对的宽度就是2W.每单位距离有1/2W个线对。例如,如果条线的宽度是 0.1 mm,每单位距离(mm)就有5个线对。广泛使用的图像分辨率的定义是每单位距离可分辨的最大线对数量(譬如每毫米100个线对)。
每单位距离点数是印刷和出版业中常用的图像分辨率的度量。在美国,这度量通常使用每英寸点数(dpi)来表示,例如,报纸用75 dpi的分辨率来印刷,杂志是133 dpi. 光鲜的小册子是175 dpi,一本精美的书可以是以2044 dpi印刷的。
从技术角度说,“像素”只存在于电脑显示领域,而“点”只出现于打印或印刷领域。对电脑显示屏,分辨率是用像素数目衡量;对数字文件印刷,分辨率是通常用每英寸所含点或像素〔dpi〕来衡量。
8.灰度分辨率
是指在灰度级中可分辨的最小变化
例如,通常说一幅被量化为256级的图像有8比特的灰度分辨率。
9.图像内插
内插是在放大、收缩、旋转和几何校正等任务中广泛应用的工具。
这里介绍最近邻内插法,双线性内插法,双三次内插法。
最邻近内插法
如将1010像素的图像放大1.5倍到1515像素。
步骤:
创建一个假想的1515网格,它与原始图像有相同的间隔,然后将其收缩,使其能准确与原图形匹配。显然,显然,收缩后的1515网格的像素间隔要小于原图像的像素间隔。为了对覆盖的每个点赋以灰度值,我们在原图像中寻找最接近的像素,并把该像素的灰度赋给15*15网格中的新像素。当我们完成对网格中覆盖的所有点的灰度赋值后,就把图像扩展到原来规定的大小,得到放大后的图像。
用图像展示上述过程
原来1010像素图像
假想的1515图像,与原图有相同像素间隔
将这个假想的1515图像收缩以匹配1010图像
将收缩后的1515图像覆盖在1010图像上
图像中黑格为原1010图像,红格为1515图像
选择与每个1515图像中像素点最相邻的1010图像的像素值将其赋值。如下图与1515中f(1,1)最相邻的是1010的f(1,1),则将其赋相应的像素值。
对15*15图像中每个值都匹配好相应值后,再将其扩展到原size,便得到放大后的图像。
缺点:某些直边缘的严重失真。(由于这原因,实际上该方法并不常用。)
双线性插值
上面的是用原图上的一个点去确定新位置的灰度,而这个方法使用4个最近邻去估计给定位置的灰度。
如图,已知Q12,Q22,Q11,Q21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行插值,这就是所谓的双线性插值。
赋值公式为 v(x,y)=ax+by+cxy+d
如果选择一个坐标系统使得 f 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),则
d = f(0,0)
a = f(1,0)-f(0,0)
b = f(0,1)-f(0,0)
c = f(1,1)-f(1,0)-f(0,1)-f(0,0)
详细步骤见这篇博客:http://www.cnblogs.com/linkr/p/3630902.html
另外,双线性内插法并不是一种线性内插法,因为其包含xy项
双线性内插法给出了比最近邻内插好得多的结果,但随之而来的是计算量的增加。
双三次内插
它包括16个最邻近点。赋值公式如下:
其中,16个系数可由16个用(x,y)点最邻近点写出的未知方程确定。当求和的上下限分别为0和1,则可得到双线性内插法的公式。通常,双三次内插在保持细节方面比双线性内插相对较好。双三次内插是商业图像编辑程序的标准内插方法,例如Adobe Photoshop等。
想要更深一步了解双三次内插,传送门:https://blog.youkuaiyun.com/qq_29058565/article/details/52769497
最后,三种方法的python实现,请参考:
https://blog.youkuaiyun.com/u013185349/article/details/84841202
10.相邻像素
p 的4邻域 (N_4 ( p ) )
p 的8邻域 ( N_8 § )
p的D邻域 N_D ( p) 表示 p 的四个对角相邻像素
11.邻接性、连通性、区域和边界
令V是用于定义邻接性的灰度值集合。在二值图像中,如果把具有1值的像素归诸于邻接像素,则V={1}
(a)4邻接:如果q在集合N_4 ( p)中,则具有V中数值的两个像素p和q是4邻接的。
(b)8邻接:如果q在集合N_8 ( p),则具有V中数值的两个像素p和g是8邻接的,
( c) m邻接(混合邻接):混合邻接是8邻接的改进。混合邻接的引人是为了消除采用8邻接时产生的二义性。
考虑下图中对于V={1} 的像素排列
上图分别是8邻接和m邻接
通路:如果从(x0,y0)点到(xn,yn)点,其中的每个点与前后都是K邻接的(K代表4、8、m),则说这两个点之间存在一条K通路,注意一定要强调明白K,而n是这个通路的长度,如果(x0,y0)和(xn,yn)是重合的,那么说这是一条闭合通路。上图分别对应8通路和m通路。
连通:对于图像中的某一个像素子集U和其中的两个点p和q,如果p和q之间有一个有U中全部元素构成的通路,那就说p和q是连通的。
连通集:接上,对于U中的元素p,U中能连通到p的元素的集合叫做U的连通分量,如果U只有一个连通分量,那么U就是一个连通集。
区域:令T是图像中的某一个子集,如果T是一个连通集,那么称T是一个区域。
理解这些概念的时候,不能孤立的看,要和图像分割的过程结合起来看,比如图像的前景和背景,就是跟区域有关的。假设一幅图像中有M个不连接的区域,且它们都不接触图像的边界,令R1代表这M个区域的并集,令R2代表其补集,那么R1中的所有点就是图像中的前景,而R2中的所有点就是图像的背景。
12.距离度量
有两像素 p(x,y)和 q(s,t):
欧氏距离:
距离p小于或者等于某一值是:以p为原点的圆
D4/城市街区距离:
距离小于或者等于某一值是以p为中心的菱形,如图为D4 ≤2形成固定距离的轮廓:
其中D4 = 1的像素是(x,y)的4邻域
D8/棋盘距离:
距离p小于或者等于某一值是以p为中心的正方形:
下图为D8 ≤ 2的像素形成的固定距离的轮廓:
其中D8 = 1的像素是(x,y)的8邻域
D4距离和D8距离与通路无关。若考虑m邻接,则两点间的D_m距离用点间的最短通路定义。
考虑如下排列的像素并假设p,p2,p4值为1,p1,p3值为0或1:
考虑值为1的像素邻接[即V={1}]。则分下列几种情况讨论:
① p1 = p3 = 0,则p和p4之间的最短m通路的长度(D_m距离)是2
② p1= 1 ,p3=0,则p和p2不再是m邻接且p和p4之间的最短m通路的长度是3
③ p3 = 1,p1 = 0,此时最短m通路距离也是3
④ p3 = p1 = 1,此时最短m通路长度是4