术语空间域指图像*面本身,这类图像处理方法直接以图像中的像素操作为基础;空间域处理主要分为灰度变换和空间滤波两类,灰度变换在图像的单个像素上操作,主要以对比度和阈值处理为目的;空间滤波涉及改善性能的操作。
背景知识
本章讨论的空间域处理可由下式表示:
g(x,y)=T[f(x,y)]
其中f(x,y)是输入图像,g(x,y)是处理后的图像,T是在点(x,y)的邻域上定义的关于f的一种算子
一些基本灰度变换函数
假设r,s分别代表处理前后的像素值,s=T(r),其中T是把像素值r映射到像素值s的一种变换;
- 图像反转:灰度级范围为[0,L−1]
s=L−1−r
增强一幅图像的暗区域中的白色或灰色细节
s=clog(1+r)
该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,使用这种变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值,也就是将暗区域的细节显现出来
s=crγ
当γ=1为恒等变换,γ>1增加了亮区域的细节,使原图片变暗,γ<1增加了暗区域的细节,使原图片变亮,效果和对数变换类似,用于校正幂律响应现象的处理称为伽马校正
- 分段线性变换函数
对比度拉伸

灰度级分层

比特*面分层

直方图处理
灰度级范围为[0,L−1]的数字图像的直方图是离散函数h(rk)=nk,其中rk是第k级灰度值,nk是图像中灰度为rk的像素个数,假设M,N分别是图像行和列的维数,那么归一化后的直方图为p(rk)=nk/MN,k=0,1,⋯,L−1,简单的说p(rk)是灰度级rk在图像中出现的概率的一个估计
直方图均衡
用r表示待处理图像的灰度,通常我们假设r的取值区间为[0,L−1],r=0表示黑色,r=L−1表示白色,对于输入图像中每个具有r值的像素值产生一个灰度值s:
s=T(r),0≤r≤L−1
转换函数需要满足的条件:
- T(r)在区间0≤r≤L−1上为单调递增函数;
- 当0≤r≤L−1时,0≤T(r)≤L−1
我们知道高对比度的图片的直方图占据整个灰度级而且分布均匀
那么直方图均衡的转换函数为:
sk=T(rk)=(L−1)k∑j=0pr(rj)=L−1MNk∑j=0nj,k=0,1,⋯,L−1
上式中的变换称为直方图均衡或直方图线性变换
证明:
首先变换后的变量s的PDF概率密度函数可以由下式得到:
ps(s)=pr(r)∣∣∣drds∣∣∣
当变换函数如下时可以证明s的概率密度函数是均匀分布函数,该变换公式满足开始的两个条件
s=T(r)=(L−1)∫r0pr(w)dw
又有:
dsdr=dT(r)dr=(L−1)ddr[∫r0pr(w)dw]=(L−1)pr(r)
可以推出:
ps(s)=pr(r)∣∣∣drds∣∣∣=pr(r)∣∣∣1(L−1)pr(r)∣∣∣=1L−1,0≤s≤L−1
是一个均匀概率密度函数,也就是经过变换之后的图像的灰度值的分布是均匀的,灰度值是离散取值的:
pr(rk)=nkMN,k=0,1,⋯,L−1
所以变换函数为:
sk=T(rk)=(L−1)k∑j=0pr(rj)=L−1MNk∑j=0nj,k=0,1,⋯,L−1
直方图匹配
目的:有的时候采用均匀直方图的基本增强不是最好的方法,希望处理后的图像具有规定的直方图形状可能更有用
直方图匹配或直方图规定化:产生处理后有特殊直方图的方法
s=T(r)=(L−1)∫r0pr(w)dw
之后将我们需要的直方图形式所对应的输出的灰度值z均匀化,这个z也就是我们需要求的:
G(z)=(L−1)∫z0pz(t)dt=s
之后通过反函数求得z
z=G−1[T(r)]=G−1(s)
于是就得到了我们需要的输出的灰度值
- 一个例子:
假设一幅图像的灰度PDF为pr(r)=2r/(L−1)2,0≤r≤L−1,对于其他r值有pr(r)=0,寻找一个变换函数使得产生的灰度PDF是pz(z)=3z2/(L−1)3,0≤z≤L−1,对于其他的z值有pz(z)=0
首先对原图像进行直方图均衡变换,得到灰度值为s的均匀PDF图像:
s=T(r)=(L−1)∫r0pr(w)dw=2L−1∫r0wdw=r2L−1
对希望输出的图像进行直方图均衡变换,也得到灰度值为s的均匀PDF图像:
G(z)=(L−1)∫z0pz(w)dw=3(L−1)2∫z0w2dw=z3(L−1)2
之后求得反函数,得到s到z的映射:
z=[(L−1)2s]13
有s=r2L−1,带到上式可得r到z的映射:
z=[(L−1)2s]13=[(L−1)2r2L−1]13=[(L−1)r2]13
而因为灰度值是离散的,所以可以不需要计算G的反变换,我们可以首先计算G(zq)=(L−1)∑qi=0pz(zi)得到z和s的一个对应形成一张表,之后对于输入的图像的每一个灰度值r计算均衡化之后的s值,在表中查找对应的z值
局部直方图处理
上面两个小节的图像处理都是基于整个图像而言的,还有一种情况是,每一个像素基于邻域来进行局部增强,在每个位置,计算邻域中的点的直方图,例如直方图均衡化或者规定化变换函数,在这个处理的过程中不断移动邻域中心
在图像增强中使用直方图统计
r的均值为m:
m=L−1∑i=0rip(ri)
r关于其均值的n阶矩定义为:
μn(r)=L−1∑i=0(ri−m)np(ri)
其中二阶矩称为灰度方差,通常使用σ2表示,是图像对比度的度量,还可以直接用下面的公式计算:
m=1MNM−1∑x=0N−1∑y=0f(x,y)σ2=1MNM−1∑x=0N−1∑y=0[f(x,y)−m]2
局部均值和方差是根据图像中每一像素的邻域内的图像特征进行改变的基础,Sxy表示规定大小的以(x,y)为中心的邻域,也就是子图像,pSxy是区域Sxy的直方图,该领域中像素的均值为:
mSxy=L−1∑i=0ripsxy(ri)
邻域中像素的方差由下式给出:
σ2Sxy=L−1∑i=0(ri−mSxy)2pSxy(ri)
下面是一个局部图像增强的例子

空间滤波基础
- 空间滤波器由一个邻域,对该邻域包围的图像像素执行的预定义操作组成,滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤波操作的结果;
- 一般来说,假设m=2a+1,n=2b+1,使用大小为m×n的滤波器对大小为M×N的图像进行线性空间滤波,可由下式表示:
g(x,y)=a∑s=−ab∑t=−bw(s,t)f(x+s,y+t)
- 相关和卷积:卷积需要将滤波器旋转180°,相关不需要旋转,如果滤波器是对称的,那么相关和卷积的结果相同
相关:
g(x,y)=a∑s=−ab∑t=−bw(s,t)f(x+s,y+t)
卷积:一个函数与单位冲激的卷积,相当于在单位冲激的位置复制该函数
g(x,y)=a∑s=−ab∑t=−bw(s,t)f(x−s,y−t)

- 线性滤波的向量表示:w是一个大小为m×n的滤波器的系数,z为滤波器覆盖的相关图像的灰度值
R=w1z1+w2z2+⋯+wmnzmn=mn∑k=1wkzk=wTz
*滑空间滤波器
目的:用于模糊处理和降低噪声
*滑线性滤波器
*滑线性空间滤波器的输出是包含在滤波器模板邻域内的像素的简单*均值,有时也称为均值滤波器,可以归入低通滤波器,由于典型的随机噪声由灰度级的急剧变化组成,因此,常见的*滑处理应用就是降低噪声,但是由于图像边缘也是由图像灰度尖锐变化带来的特性,所以均值滤波处理还是有着边缘模糊的负面效应,所有系数都相等的空间均值滤波器称为盒状滤波器
R=199∑i=1zi
减少边缘模糊的一种方法:加权均值滤波器,也就是权重值随着离中心点的距离增大而减小,一幅M×N的图像经过一个大小为m×n的加权均值滤波器的过程可由下式给出:
g(x,y)=∑a−a∑b−bw(s,t)f(x+s,y+t)∑a−a∑b−bw(s,t)
统计排序(非线性)滤波器
这种滤波器的响应以滤波器包围的图像区域中所包含的像素的排序为基础,例如中值滤波器,中值滤波器对处理椒盐噪声非常有效,这种噪声是以黑白点的形式叠加在图像上面的
锐化空间滤波器
锐化处理的主要目的就是突出灰度的过渡部分,增强了边缘和其他突变(例如噪声),削弱了灰度变化缓慢的区域,本节将讨论由数字微分来定义和实现锐化算子的各种方法
∂f∂x=f(x+1)−f(x)
∂2f∂x2=f(x+1)+f(x−1)−2f(x)
使用二阶微分进行图像锐化-拉普拉斯算子
- 各向同性滤波器:这种滤波器和滤波器作用的图像的突变方向无关,也就是说各向同性滤波器是旋转不变的,即将原图像旋转后进行滤波处理得到的结果和先对图像滤波然后再旋转的结果相同
- 最简单的各向同性微分算子是拉普拉斯算子,一个二维图像函数f(x,y)的拉普拉斯算子定义为
∇2f=∂2f∂x2+∂2f∂y2
以离散形式描述,在x方向上:
∂2f∂x2=f(x+1,y)+f(x−1,y)−2f(x,y)
在y方向上:
∂2f∂y2=f(x,y+1)+f(x,y−1)−2f(x,y)
由上式可得,拉普拉斯算子是:
∇2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)
上式可以用滤波模板来实现:第一幅是以90°为增量进行旋转的一个各向同性结果,第二幅是以45°为增量的

使用拉普拉斯对图像进行增强的基本方法如下:如果使用a,b中的滤波器,c=−1,另外两幅的话c=1
g(x,y)=f(x,y)+c[∇2f(x,y)]
非锐化掩蔽和高提升滤波
非锐化掩蔽的处理过程:
- 模糊原图像
- 从原图像中减去模糊图像(产生的差值图像称为模板)
- 将模板加到原图像上
令¯¯¯f(x,y)表示模糊图像,非锐化掩蔽以公式形式描述如下,首先,我们得到模板:
gmask(x,y)=f(x,y)−¯¯¯f(x,y)
然后,在原图像上加上该模板的一个权重部分:
g(x,y)=f(x,y)+k×gmask(x,y)
当k=1时,得到上面定义的非锐化掩蔽,k>1时,该处理称为高提升滤波,k<1则不强调非锐化模板的贡献
使用一阶微分对(非线性)图像锐化-梯度
图像处理中的一阶微分是用梯度幅值来实现的,对于函数f(x,y),f在坐标(x,y)处的梯度定义为二维向量
∇f≡grad(f)=[gxgy]=⎡⎢⎣∂f∂x∂f∂y⎤⎥⎦
该向量具有重要的几何特性,即它指出了在位置(x,y)处f的最大变化率的方向,向量∇f的幅度值表示为M(x,y):
M(x,y)=mag(∇f)=√g2x+g2y
M(x,y)是与原图像大小相同的图像,该图像称为梯度图像,梯度向量的分量是微分,所以他们是线性算子,然而该向量的幅度不是线性算子,偏微分不是旋转不变的,梯度向量的幅度是旋转不变的,在某些实现中,用绝对值的*似*方和*方根操作更适合计算,*似式在旋转90°的倍数的时候是各向同性的,*似式也是非线性的:
M(x,y)≈|gx|+|gy|
假设使用交叉差分:
gx=(z9−z5)gy=(z8−z6)
结合上式得到梯度图像:
M(x,y)=[(z9−z5)2+(z8−z6)2]12
如使用*似*方根:
M(x,y)=|z9−z5|+|z8−z6|
能实现上述所需偏微分项的滤波器称为罗伯特交叉梯度算子,见图b,c,但是偶数尺寸的模板难以实现,使用3×3的模板:
gx=∂f∂x=(z7+2z8+z9)−(z1+2z2+z3)gy=∂f∂y=(z3+2z6+z9)−(z1+2z4+z7)
计算梯度幅值:
M(x,y)≈|(z7+2z8+z9)−(z1+2z2+z3)|+|(z3+2z6+z9)−(z1+2z4+z7)|
对应的模板为图d,e,称为Soble算子

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理