空间域是指图像平面本身,在本章中均是以对图像像素直接进行处理为基础;
g ( x , y ) = T [ f ( x , y ) ] 注 : f ( x , y ) 为 输 入 图 像 , g ( x , y ) 为 输 出 图 像 , T 是 定 义 在 点 ( x , y ) 邻 域 上 对 图 像 f 进 行 操 作 的 算 子 g(x,y) = T[f(x,y)] 注:f(x,y)为输入图像,g(x,y)为输出图像,T是定义在点(x,y)邻域上对图像f进行操作的算子 g(x,y)=T[f(x,y)]注:f(x,y)为输入图像,g(x,y)为输出图像,T是定义在点(x,y)邻域上对图像f进行操作的算子
定义(x,y)的邻域的方法:利用一块中心点位于(x,y)的正方形或矩形区域,随着点(x,y)的移动会包含不同的邻域,算子T作用于每个位置(x,y),从而得到相应位置的输出图像g。
当邻域大小被定义为1x1时,输出图像仅由f在该点的灰度值决定时,T称为灰度(亮度)变换函数/强度映射。
s = T ( r ) 注 : r 表 示 输 入 图 像 ( x , y ) 的 灰 度 , s 表 示 输 出 图 像 ( x , y ) 点 对 应 的 灰 度 s=T(r) 注:r表示输入图像(x,y)的灰度,s表示输出图像(x,y)点对应的灰度 s=T(r)注:r表示输入图像(x,y)的灰度,s表示输出图像(x,y)点对应的灰度
基本思想:s=c*log(1+r)
注:c为一个常数,r>=0
变换原则:如果原图像的灰度级为L,对数变换公式的结果应当标定为[0,L-1]的灰度级
s = L − 1 l o g L ∗ l o g ( 1 + r ) s = \frac{L-1}{logL}*log(1+r) s=logLL−1∗log(1+r)
Matlab实现代码
f = imread("demo_1.jpg");
g = im2unit8(mat2gray(log(1+double(f))));
应用:此种变换将一窄带低灰度输入图像值映射为一宽带输出值;用于扩展被压缩的高值图像中的暗像素;用于对数值范围过大的数据进行调整显示。
基本思想
s = c ∗ r γ 注 : 其 中 c 和 γ 为 正 常 数 。 当 γ > 1 的 值 和 γ < 1 的 值 产 生 的 曲 线 具 有 相 反 的 效 果 , γ < 1 将 暗 区 域 的 窄 的 灰 度 范 围 拉 升 到 较 宽 的 范 围 , γ > 1 将 亮 区 域 的 窄 的 灰 度 范 围 拉 升 到 较 宽 的 范 围 s = c*r^\gamma 注:其中c和\gamma为正常数。当\gamma>1的值和\gamma<1的值产生的曲线具有相反的效果 ,\gamma<1 将暗区域的窄的灰度范围拉升到较宽的范围,\gamma>1 将亮区域的窄的灰度范围拉升到较宽的范围 s=c∗rγ注:其中c和γ为正常数。当γ>1的值和γ<1的值产生的曲线具有相反的效果,γ<1将暗区域的窄的灰度范围拉升到较宽的范围,γ>1将亮区域的窄的灰度范围拉升到较宽的范围
变换原则
应用:幂次变换也称为叫γ校正,用来校正监视器显示的非线性特点(γ<1)。
优点:它的形式可任意合成;
缺点:需要更多的用户输入。
基本思想:提高特定灰度范围的亮度
matlab实现代码
g = imadjust(f,[0.5 0.75],[0 1]) %将所关心范围的灰度值拉升到更高的范围
基本思想:指定一个变换函数来变换一幅图像的灰度。
matlab实现公式
z = linspace(0,1,numel(T))`;
g = interp1(z,T,f) %T是一个列向量,其中包含该变换的函数值,例如T(1)是输入图像0灰度值映射的值
目的:寻找变换函数,该函数产生有均匀直方图的输出图像;该函数仅仅依靠输入图像直方图中的信息可以自动达到这一效果。
关键:寻找变换函数,该函数产生有均匀直方图的输出图像。
原理:考虑连续函数且变量r代表待增强图像的灰度级,假设r被归一化到[0,1]
s = T ( r ) = ∫ 0 r p r ( w ) d w 0 ≤ r ≤ 1 注 : T ( r ) 在 区 间 内 为 单 值 且 单 调 递 增 ; 当 0 ≤ r ≤ 1 时 , 0 ≤ T ( r ) ≤ 1 s=T(r)=\int_0^rp_r(w)dw 0\le r \le 1 注:T(r)在区间内为单值且单调递增;当0\le r \le 1时,0\le T(r) \le 1 s=T(r)=∫0rpr(w)dw0≤r≤1注:T(r)在区间内为单值且单调递增;当0≤r≤1时,0≤T(r)≤1
对于离散值,一幅图像中灰度级 r k r_k rk出现的概率近似为: p r ( r k ) = n k n p_r(r_k)=\frac{n_k}n pr(rk)=nnk s k = T ( r k ) = ∑ j = 0 k p r ( r j ) = ∑ j = 0 k n j n s_k=T(r_k)=\sum_{j=0}^kp_r(r_j) =\sum_{j=0}^k \frac{n_j}{n} sk=T(rk)=∑j=0kpr(rj)=∑j=0knnj
注: r k r_k rk和 s k s_k sk都是归一化后的值;输入和输出的数字图像灰度级分辨率应该是一致的;
新的灰度级= r o u n d ( ( L − 1 ) ∗ s k ) round((L-1)*s_k) round((L−1)∗sk),一般不能证明离散变换能产生均匀概率密度函数的离散值。
[外链图片转存失败(img-R4aKTxJj-1566550743646)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\1565347691203.png)]
目的:某些图像进行直方图均衡得到的效果并不好,为了得到规定的直方图分布形式则进行直方图匹配。例如:图像本身偏暗,灰度值偏低的像素数目较多,直接进行直方图均衡时,灰度值将会映射到更高的范围,输出图像整体偏亮。
原理:考虑连续灰度级,令 p r ( r ) p_r(r) pr(r)为输入图像的概率密度函数, p z ( z ) p_z(z) pz(z)为希望输出图像具有的规定概率密度函数
令s为一随机变量,且有 s = T ( r ) = ∫ 0 r p r ( w ) d w s=T(r)=\int_0^rp_r(w)dw s=T(r)=∫0rpr(w)dw,假设定义随机变量z,且 G ( z ) = ∫ 0 z p z ( t ) d t = s G(z)=\int_0^zp_z(t)dt=s G(z)=∫0zpz(t)dt=s,由 G ( z ) = T ( r ) G(z)=T(r) G(z)=T(r),因此 z = G − 1 ( s ) = G − 1 [ T ( r ) ] z=G^{-1}(s)=G^{-1}[T(r)] z=G−1(s)=G−1[T(r)]
设 G − 1 G^{-1} G−1存在,由输入图像得到一个有规定概率密度函数的图像:
对于离散值而言,输出图像与期望图像近似,数字图像直方图规定化的实现过程:
(1)对于数字图像,灰度级{ r j r_j rj}{ s j s_j sj}和{ z j z_j zj}的每个集合为Lx1维的一维阵列;
(2)所有从r到z的映射都是给定像素值和这些阵列间的简单查表过程;
(3)计算每个{ r j r_j rj}对应的 s j = T ( r ) s_j=T(r) sj=T(r);计算每个 z j z_j zj对应的 v j = G ( z ) v_j=G(z) vj=G(z);
(4)对每一个 s j s_j sj,寻找最接近的 v k v_k vk。该 v k v_k vk对应的 z k z_k zk就是 r j r_j rj映射为的灰度值。
例题:已知一幅64x64 3bit的数字图像,各灰度级出现的频数如表1所示,试进行直方图规定化,使图像具有表2的灰度级分布。
r | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
n® | 790 | 1023 | 850 | 656 | 329 | 245 | 122 | 81 |
z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
p(z) | 0 | 0 | 0 | 0.15 | 0.2 | 0.3 | 0.2 | 0.15 |
注:直方图规定化大多数时候都是一个试凑过程;对于一个给定增强任务必须借助于实际分析。
应用:
应用直方图进行局部增强
在图像增强中使用直方图统计学
p ( r i ) p(r_i) p(ri)代表灰度级 r i r_i ri出现的概率估计值,r的平均值: m = ∑ i = 0 L − 1 r i p ( r i ) m=\sum_{i=0}^{L-1}r_ip(r_i) m=∑i=0L−1rip(ri),
r的方差(二阶矩): μ 2 ( r ) = ∑ i = 0 L − 1 ( r i − m ) 2 p ( r i ) = σ 2 ( r ) \mu_2(r)=\sum_{i=0}^{L-1}(r_i-m)^2p(r_i)=\sigma^2(r) μ2(r)=∑i=0L−1(ri−m)2p(ri)=σ2(r)
局部平均值和方差,令(x,y)为某一图像中像素的坐标,令 S x y S_{xy} Sxy表示一确定大小的邻域,其中心在(x,y),根据在 S x y S_{xy} Sxy像素的平均值 m x y m_xy mxy和灰度级方差: m x y = ∑ i = 0 L − 1 r i P s x y ( r i ) ; σ S x y 2 = ∑ i = 0 L − 1 ( r i − m S x y ) 2 p S x y ( r i ) m_{xy}=\sum_{i=0}^{L-1}r_iP_{s_{xy}}(r_i);\sigma^2_{S{xy}}=\sum_{i=0}^{L-1}(r_i-m_{S{xy}})^2p_{S{xy}}(r_i) mxy=∑i=0L−1riPsxy(ri);σSxy2=∑i=0L−1(ri−mSxy)2pSxy(ri);局部平均值是对邻域 S x y S_{xy} Sxy中的平均灰度值的度量,方差是对邻域中对比度的度量。
操作邻域的图像像素值以及相应的与邻域具有相同维数的子图像的值,这些子图像可以被称为滤波器、掩模、核、模板或窗口,且在滤波器子图中的值是系数值,不是像素值。
邻域处理(空间滤波)的步骤:
线性空间滤波(空间卷积、掩模与图像的卷积、卷积模板、卷积核):响应值由滤波器系数与滤波掩模扫过区域的相应像素值的乘积之和给出。
对于mxn的掩模,设m=2a+1且n=2b+1, g ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) g(x,y)=∑s=−aa∑t=−bbw(s,t)f(x+s,y+t)
非线性空间滤波:也是基于邻域处理,滤波处理取决于所考虑的邻域像素点的值
当滤波中心靠近图像轮廓时发生的状况:当一个nxn的方形掩模,掩模中心距离图像边缘为(n-1)/2个像素时,至少有一条边与图像轮廓重合,如果继续向图像边缘靠近,那么掩模的行或列就会处于图像平面之外。
原理:其输出是包含在滤波掩模邻域内像素的简单平均值,也称为均值滤波器。用滤波掩模确定的邻域内像素的平均灰度值代替图像中每个像素点的值,减小了图像灰度的"尖锐"变化。
应用
注意:由于图像的边缘是由图像灰度的尖锐变化带来的,因此均值滤波处理存在不希望的边缘模糊的负面效应(不可避免)。
计算过程:
(1)均值平均滤波
(2)加权平均滤波(边界模糊负效应更小):
g ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) ∑ s = − a a ∑ t = − b b w ( s , t ) g(x,y)=\frac{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t)}{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)} g(x,y)=∑s=−aa∑t=−bbw(s,t)∑s=−aa∑t=−bbw(s,t)f(x+s,y+t)
与滤波掩模大小有关的图像平滑效果:随着掩模尺寸的增大,图像的噪声模糊效应更大,丢失了一些细节。
统计排序滤波器:响应基于图像滤波器包围的图像区域中像素的排序,然后由统计排序结果决定的值代替中心像素的值
中值滤波器
原理:将像素邻域中的灰度中值代替该像素的值
应用
处理椒盐噪声(它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有))
主要目的:突出图像中的细节或者增强被模糊的细节,这些模糊是由于错误操作或特殊图像获取方法的固有影响。
处理方法:使用空间微分来完成。微分算子的响应强度与图像在该点的突变程度有关。图像微分增强了边缘或其他突变并削弱了灰度变化缓慢的区域。
对于一阶微分的任何定义必须保证一下几点:(1)在平坦处微分值为零;(2)在灰度阶梯或斜坡的起始点处微分值非零;(3)沿着斜坡面微分值非零;变化发生的最短距离是在两个相邻像素之间,对于一元函数f(x)而言
∂ f ∂ x = f ( x + 1 ) − f ( x ) \frac{\partial{f}}{\partial{x}}=f(x+1)-f(x) ∂x∂f=f(x+1)−f(x)
任何二阶微分的定义:(1)在平坦区域微分为零;(2)在灰度阶梯的起始点处微分值非零;(3)沿着斜坡面微分值为零。
∂ 2 f ∂ x 2 = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{{\partial}^{2}f}{\partial{x}^2}=f(x+1)+f(x-1)-2f(x) ∂x2∂2f=f(x+1)+f(x−1)−2f(x)
通过比较一阶微分和二阶微分处理的响应,得出的结论:(1)异界微分通常会产生较宽的边缘;(2)二阶微分处理对细节有较强的响应;(3)一阶微分处理一般对灰度阶梯有较强的响应;(4)二阶微分处理对于灰度级阶梯变化产生双响应;且对线的响应比阶梯强,对点的响应比线响应强。
基于二阶微分的图像增强——拉普拉斯算子
基于一阶微分的图像增强——梯度法(非线性)
原理:对于函数f(x,y),在其坐标(x,y)上的梯度通过一个二维列向量来定义: ∇ [ f ( x , y ) ] = [ ∂ f ∂ x ∂ f ∂ y ] T \nabla[f(x,y)]=\begin{bmatrix}\frac{ \partial{f}}{\partial{x}} \\\frac{ \partial{f}}{\partial{y}}\\ \end{bmatrix}^T ∇[f(x,y)]=[∂x∂f∂y∂f]T
向量的模值: ∇ [ f ( x , y ) ] = m a g [ G ] = [ ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 ] 1 2 \nabla[f(x,y)]=mag[G]=\begin{bmatrix}(\frac{\partial{f}}{\partial{x}})^2+(\frac{\partial{f}}{\partial{y}})^2\\ \end{bmatrix}^{\frac12} ∇[f(x,y)]=mag[G]=[(∂x∂f)2+(∂y∂f)2]21,实际操作中,常用绝对值代替平方与平方根运算,求梯度的模值: ∇ f ≈ ∣ G x ∣ + ∣ G y ∣ \nabla{f}\approx|G_x|+|G_y| ∇f≈∣Gx∣+∣Gy∣
Robert交叉梯度算子
Sobel算子:在3x3的图像区域中,第三列与第一列的差接近y方向上的微分,第三行与第一行的差接近x方向上的微分。
应用:用于工业检测、辅助人工检测缺陷,或者更为通用的自动检测的预处理。
混合空间增强法
12} , 实 际 操 作 中 , 常 用 绝 对 值 代 替 平 方 与 平 方 根 运 算 , 求 梯 度 的 模 值 : ,实际操作中,常用绝对值代替平方与平方根运算,求梯度的模值: ,实际操作中,常用绝对值代替平方与平方根运算,求梯度的模值:\nabla{f}\approx|G_x|+|G_y|$
Robert交叉梯度算子
Sobel算子:在3x3的图像区域中,第三列与第一列的差接近y方向上的微分,第三行与第一行的差接近x方向上的微分。
应用:用于工业检测、辅助人工检测缺陷,或者更为通用的自动检测的预处理。
混合空间增强法