数字图像处理
数字图像基础
图像内插
用于图像放大、缩小、旋转、几何校正等任务。首先确定变换前后的坐标对应关系,用src表示转换前的图像尺寸,dst表示转换后的图像尺寸,src’表示转换后图像对应于原图像的坐标。对于图像缩放,缩放系数
t=src/dst,则dst对应在src中的坐标为
src′=dst∗t。考虑到转换后图像未处在原图像中间的情况,将公式修正为
src′=(dst+0.5)∗t−0.5。对于旋转、矫正等使用相关公式计算src’后使用以下内插方法进行像素赋值。
修正前
|
修正后
|
- 最近邻内插
将距离src’最近的src像素赋值给src’。
- 双线性内插
利用src’最近的2*2个src像素确定赋值大小。
根据图中定义,先对X再对Y插值,P点的插值结果为
其中各式分母均为1。
参考资料:三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法
- 双三次插值
利用src’最近的
4×4个src像素值确定赋值大小。计算每个像素值到src’的距离,根据分段函数(这里选用BiCubic基函数)确定像素值的权值,对
4×4个像素值进行加权求和得到src’。
例如对于点src’(1.5,1.5),距离最近的4*4坐标为(0,0),(0,1)···(3,3),对于点(0,0),X方向距离为1.5,Y方向距离为1.5,根据BiCubic基函数得到对应的权值
w(0,0)x(这里上标表示坐标方向不是乘方)和
w(0,0)y,则(0,0)点对于src’的贡献为该点处的灰度值
i×w(0,0)x×w(0,0)y。依次求得各点的贡献值后求和得到最终的src’。
参考资料:图像缩放之双三次插值法
- Lanczos插值(兰索斯插值)
基本思路与双三次插值类似,但是改变了基函数类型,并且使用的邻域范围不固定,可自由选择。Lanczos插值函数为:
插值公式为:
其中a为参数大小,x,y为待带插值位置,i,j为当前采样位置。可以设置不同的参数大小得到不同的效果。a取2适合于缩小插值,3适合于放大插值。在opencv中默认取4。
参考资料:Lanczos插值滤波器
几种插值算法对比研究
以上几种插值方法效果依次更好,但同时复杂度也依次提升。
像素距离度量
对于点A(x1,y1)与点B(x2,y2)有如下距离度量
- 欧氏距离
De(A,B)=[(x1−x2)2+(y1−y2)2]21与A距离小于r的点在半径为r的圆内。
- 城区距离(曼哈顿距离)
D4(A,B)=∣x1−x2∣+∣y1−y2∣与A距离小于r的点在半径为r的菱形内。
- 棋盘距离
D8(A,B)=max(∣x1−x2∣,∣y1−y2∣)与A距离小于r的点在半径为r的正方形内。
灰度变换与空间滤波
基本的灰度变换函数
- 图像反转
对于灰度级为L-1的图像,反转定义为
dst=L−1−src
- 对数变换
dst=c∗log(1+src),其中c为常数,src≥0。对数变换扩展低像素值,压缩高灰度值。对数变换的一个重要作用是压缩图像动态范围,例如傅里叶频谱的图像显示通常经过了对数变换。
- 幂律(
γ)变换
dst=c∗srcγ,其中c和γ为正常数。又叫做伽马校正,通常用于设备产生的伽马响应的校正。当
γ<1时可以扩展灰度级,用于处理整体偏暗的图片;
γ>1时可以压缩灰度级,用于处理整体偏亮的图片。
- 分段线性变换函数
对比度拉伸:通过设定不同的变换函数拉伸特定灰度范围内的图像。
灰度级分层:将特定范围内的灰度值设为给定值以突出特定灰度的图像。
比特平面分层:将灰度值用2进制表示,如256灰度级图像可表示为8位二进制数,将每一个像素同位的二进制数组成一幅图像(该图像只包含0和1),可得到8幅图像,即原图像的比特平面分层。其中层数越高对原图像灰度值的决定性越。可以根据分层后的图像重建原图像,并且不一定要使用所有图像,例如只使用最高的4层重建图像得到的图像丢失信息较少,单可以减少一半的存储空间。
直方图处理
直方图:统计图像中每个灰度值包含的像素点个数,绘制横轴为
0∼L−1,纵轴为对应的像素点个数的柱状图称为直方图。将直方图纵轴除以图像总像素点数得到归一化直方图,反映每种灰度出现的概率。
- 直方图均衡化
输入图像s,求s的归一化直方图(由于灰度值为离散变量,可用数组表示为r[i]),再求其累计直方图s[i],则对于灰度i,转换公式为i’=(L-1)*s[i]。直方图均衡化的目的是为了扩展动态范围,使变换后的灰度概率接近均匀分布。例如:
项目 |
- |
- |
- |
- |
- |
- |
原始灰度值 |
0 |
1 |
2 |
3 |
4 |
5 |
像素比例 |
0.3 |
0.4 |
0.2 |
0 |
0 |
0.1 |
累计比例 |
0.3 |
0.7 |
0.9 |
0.9 |
0.9 |
1 |
变换后灰度值=累计比例*最大灰度值 |
2(1.5) |
4(3.5) |
5(4.5) |
5(4.5) |
5(4.5) |
5(5) |
变换后比例 |
0 |
0 |
0.3 |
0 |
0.4 |
0.3 |
- 直方图规范化(匹配)
输入图像s和规定图像z,分别求s和z的直方图均衡化的灰度映射记为s->T(S)和z->T(z),令T(S)=T(z),则可建立s->T(s)=T(z)->z的映射关系。当T(z)->z的对应关系不唯一时,通常选择较小的作为映射结果。例如:
项目 |
- |
- |
- |
- |
- |
- |
灰度值 |
0 |
1 |
2 |
3 |
4 |
5 |
输入像素比例 |
0.3 |
0.4 |
0.2 |
0 |
0 |
0.1 |
输入累计比例 |
0.3 |
0.7 |
0.9 |
0.9 |
0.9 |
1 |
变换后灰度值=累计比例*最大灰度值 |
2(1.5) |
4(3.5) |
5(4.5) |
5(4.5) |
5(4.5) |
5 |
规定像素比例 |
0 |
0.1 |
0.1 |
0.2 |
0.1 |
0.5 |
规定累计比例 |
0 |
0.1 |
0.2 |
0.4 |
0.5 |
1 |
变换后灰度值=累计比例*最大灰度值 |
0 |
1(0.5) |
1 |
2 |
3(2.5) |
5(5) |
变换后灰度值 |
3 |
4 |
5 |
5 |
5 |
5 |
变换后像素比例 |
0 |
0 |
0 |
0.3 |
0.4 |
0.3 |
- 局部直方图处理
可将直方图处理应用于图像局部,如3*3的邻域内。方法为在邻域内进行直方图统计,并求出灰度映射关系,用于对中心像素进行变换,并移动邻域位置进行全图处理。
平滑空间滤波器
- 平滑线性滤波器
均值滤波器(也称为盒状滤波器):将邻域内各像素值均值作为中心像素的结果。
加权均值滤波器:将邻域内各像素值的加权均值作为中心像素的结果。
- 统计排序(非线性)滤波器
最大值滤波器:将邻域内各像素值的最大值作为中心像素的结果。
最小值滤波器:将邻域内各像素值的最小值作为中心像素的结果。
中值滤波器:将邻域内各像素值排序后的中值作为中心像素的结果。
锐化空间滤波器
- 一阶微分锐化图像——梯度
Robert算子:
Sobel算子:
- 二阶微分锐化图像——拉普拉斯算子
- 非锐化掩蔽和高提升滤波
非锐化掩蔽:主要步骤为:a)模糊原图像;b)从原图中渐趋模糊图像得到模板;c)将模板叠加到原图上得到锐化图像。
高提升滤波:在c)中叠加时在模板前加权重k,当k=1时得到非锐化掩蔽,k>1则为高提升滤波。
频率域滤波
待完善
图像复原与重建
图像退化、复原模型
用下式表示图像退化(线性、位置不变的):
g(x,y)=h(x,y)★f(x,y)+η(x,y)g为退化后图像,f为原图像,h为退化函数,η为噪声。★表示卷积运算。根据空间域中的卷积对于频率域中的乘积,频率域中退化表示为:
G(x,y)=H(x,y)F(x,y)+N(x,y)各项对应上式中的傅里叶变换。
噪声模型
待完善
只存在噪声的复原——空间滤波
通常滤波器尺寸为奇数,因为偶数滤波器无中心点。
- 均值滤波器
算术均值滤波器:
f(x,y)=mn1∑(s,t)⊂Sxyg(s,t)
Sxy为m*n的邻域。降低噪声同时模糊了原图。
几何均值滤波器:
f(x,y)=[∏(s,t)⊂Sxyg(s,t)]mn1
同样平滑图片,但较算术均值滤波器丢失的细节少。
谐波均值滤波器:
f(x,y)=∑(s,t)⊂Sxyg(s,t)1mn
对于盐粒噪声及高斯噪声等效果较好,不适用于胡椒噪声。
逆谐波均值滤波器:
f(x,y)=∑(s,t)⊂Sxyg(s,t)Q∑(s,t)⊂Sxyg(s,t)Q+1
Q为滤波器的阶数。Q为正时消除胡椒噪声,Q为负时消除盐粒噪声,Q=0退化为算术均值滤波器,Q=-1为谐波均值滤波器。
- 统计排序滤波器
中值滤波器:
f(x,y)=(s,t)⊂Sxymediang(s,t)
比现行平滑滤波器引起的模糊少,处理单极或者双极脉冲效果较好。
最大值和最小值滤波器:
f(x,y)=(s,t)⊂Sxymaxg(s,t)
f(x,y)=(s,t)⊂Sxyming(s,t)
用于发现图像中的最亮(暗)点,可以降低胡椒(盐粒)噪声。
中点滤波器:
f(x,y)=21[(s,t)⊂Sxymaxg(s,t)+(s,t)⊂Sxyming(s,t)]结合了统计排序和求平均,适用于处理随机分布噪声如高斯噪声和均匀噪声。
修正的阿尔法滤波器:
f(x,y)=mn−d1∑(s,t)⊂Sxygr(s,t)
其中
gr(s,t)为去掉最大的d/2和最小的d/2个像素值后的邻域像素。当d=0,退化为算数均值滤波器;当d=mn-1时,退化为中值滤波器。在包括多种噪声时很有用,如混合有高斯噪声和椒盐噪声的情况。
- 自适应滤波器
自适应局部降低噪声滤波器:
ση2为噪声方差,需要预先估计或者交互给出,
σL2为图像局部方差,
mL为局部均值。基于以下准则构建滤波器a)当
ση2为0,即无噪声,返回原始值;b)若局部方差与
ση2高度相关,则返回g(x,y)的近似值;c)若两个方差相等,则返回邻域的算术均值。
f(x,y)=g(x,y)−σL2ση2[g(x,y)−mL]式中包含假设噪声方差不大于局部方差,若大于则设置比例为1。
自适应中值滤波器:定义如下表示:
zmin=Sxy中最小灰度值,zmax=Sxy中最大灰度值
zmed=Sxy中灰度中值,zxy=坐标(x,y)处的灰度值
Smax=Sxy允许的最大尺寸
则滤波器工作流程为:
a)判断,若
zmed>zmed且
zmed<zmax,转到b),否则增大窗口尺寸,重复a),当窗口尺寸>
Smax输出
zmed。
b)若
zxy>zmin且
zxy<zmax,输出
zxy,否则输出
zmed。
该滤波先判断中值是否脉冲,若是则扩大搜索范围直到找到非脉冲的均值,若不是则判断当前点是否脉冲。若不是则输出当前点,否则输出中值。
线性、位置不变的退化
待补充
估计退化函数
- 图像观察估计
选择信号较强的区域,可假设噪声影响较小。使用锐化等方式得到较清晰的图片作为原图像的估计,则用
Hs(u,v)=Fs(u,v)Gs(u,v)作为退化函数的估计。
- 实验估计
在采集设备可以得到的情况下,对冲激(小亮点)成像得到退化的冲激响应。冲击的傅里叶变换为常量,则退化函数的估计为
H(u,v)=AG(u,v)。
- 建模估计
基于特定专业知识建立退化模型,通常难度较大,但效果较好。
逆滤波
得到退化函数的估计H后可使用逆滤波复原图像。
F
(u,v)=F(u,v)+H(u,v)N(u,v)当退化函数H较小时后一项会影响复原效果。因此可以限制滤波频率,减少遇到0值的概率。
最小均方误差(维纳)滤波
F
(u,v)=[H(u,v)1∣H(u,v)∣2+K∣H(u,v)∣2]G(u,v)
其中H为退化函数,K为常数,通过交互选择确定。
约束最小二乘方滤波
待补充
几何均值滤波
待补充
彩色图像处理
待补充
形态学图像处理
基本操作定义
补集:
Ac
腐蚀:
A⊖B={z∣(B)z⊆A}
膨胀:
A⊕B={z∣(B)z∩A̸=∅}
对偶性:
(A⊖B)c=Ac⊕B,(A⊕B)c=Ac⊖B
开操作:
A∙B=(A⊖B)⊕B
闭操作:
A∘B=(A⊕B)⊖B
击中击不中变换:
A⊛B=(A⊖B1)(A⊕B2),B1和B2分别为结构元的前景和背景部分。
基本形态学算法
边界提取:
β(A)=A−(A⊖B)
待补充
灰度级形态学
腐蚀:
[f⊖b](x,y)=(s,t)∈bminf(x+s,y+t)
膨胀:
[f⊕b](x,y)=(s,t)∈bmaxf(x−s,y−t)
开操作:
f∘b=(f⊖b)⊕b
闭操作:
f∙b=(f⊕b)⊖b
形态学平滑:顺序执行开闭操作。
形态学梯度:
g=(f⊕b)−(f⊖b)
顶帽变换(白顶帽):
That(f)=f−(f∘b),用于暗背景上的亮物体
底帽变换(黑底帽):
Bhat(f)=(f∙b)−b,用于亮背景上的按物体
图像分割
孤立点检测:拉普拉斯算子
线检测:
边缘模型:台阶模型、斜坡模型、屋顶模型
常用梯度算子:
- Robert算子
- Prewitt算子
- Sobel算子
- Canny算子
基本步骤:a)高斯滤波器平滑输入图像;b)计算梯度幅度图像和角度图像;c)将梯度根据方向规范化到八个方向,在梯度指向的方向应用非最大值抑制;d)用滞后阈值法处理和连接分析来检测边缘并连接边缘;e)根据实际需要进行细化操作。
霍夫变换
待补充
阈值处理
Otsu(大津法)
基本步骤:
- 计算输入图像的归一化直方图,用
pi,i=0,1,2⋯L−1表示各个分量。
- 用公式
P1(k)=∑i=0kpi,对于k=0~L-1计算累计和
P1(k)。
- 用公式
m(k)=∑i=0ki∗pi,对于k=0~L-1计算累计均值
m(k)。
- 用公式
mG=∑i=0L−1i∗pi,计算全局灰度均值
mG。
- 用公式
σB2(k)=P1(k)[1−P1(k)][mGP1(k)−m(k)]2,对于k=0~L-1计算类间方差
σB2(k)。
- Otsu阈值K为令
σB2(k)最大的k值,若最大值不唯一,则令K为各k值均值。
- 将K带入公式
η(k)=σG2σB2(k),得到可分性测度
η(k)