(学习笔记,不属个人作品)

空域图像增强

1. 背景知识

  1. 主要目标:通过对图像的处理,使图像处理更适合一个特定的应用。

  2. 常见处理:去除噪声边缘增强提高对比度增加亮度、改善颜色效果、改善细微层次等——通常与改善视觉效果相一致

  3. 分类:空域图像增强分为点处理邻域处理

其中:点处理有 灰度级变换、直方图处理、算术运算 。 领域处理有 空域滤波。

2. 直方图(*)

  1. 概念
  • 直方图 : 对于每个灰度值、求出在图像中具有该灰度值的像素数或概率。横轴代表灰度值,纵轴代表像素数(或者概率)

h(rk)=nk,k=0,1..L1(1)h(r_k) = n_k , k = 0,1..L-1 \tag{1}

式中,rkr_k表示第k个灰度级,nkn_k表示灰度值为k的像素在图像中出现的频数,L表示灰度级数。

  • 概率直方图

P(rk)=nk/n,k=0,1..L1(2)P(r_k)=n_k / n , k = 0,1..L-1 \tag{2}

式中,n为图像中的像素总数。P(rk)P(r_k)实际上表示灰度级rkr_k的概率分布率。

  • 累计概率直方图

c(rk)=j=0kP(rj)=j=0knjn,0rj1;k=0,1..L1(3)c(r_k) = \displaystyle\sum_{j=0}^k{P(r_j)} = \displaystyle\sum_{j=0}^k{n_j \over n} , 0 \leqslant r_j \leqslant 1;k=0,1..L-1 \tag{3}

式中,c(rk)c(r_k)表示灰度值落在区间 [0,rk][0,r_k]内的像素在图像中出现的总概率。

  1. 重要性质

    • 只能反映该图像中不同灰度值出现的频数,不能表示出像素的空间位置等其他信息
    • 不同图像可能具有同样的直方图,图像与直方图之间是多对一的映射关系
    • 可叠加性:若将图像分为区,则每个区都可分别作直方图,而原图像的总直方图为各区直方图之和
    • 直方图是总体灰度的概念
  2. 重要应用

    • 图像的视觉效果与其直方图之间存在对应关系,改变直方图的形状对图像产生对应的影响。
    • 利用直方图可在图像分割中确定合适的阈值,并能够根据直方图对区域进行像素数统计。
  • imhist(I)
    返回I图像的灰度直方图

imhist(I,n) 计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。如果I是二值图像,那么n仅有两个值。
imhist(X,map) 计算和显示索引图像x的直方图,map为调色板。
[counts,x] = imhist(…) 返回直方图响应灰度级数量counts或灰度级数x。


3. 灰度级变换

灰度级变换将各像素灰度,都按同一函数进行变换,这种变换与像素的坐标无关,只与灰度级有关。
常见变换 对数、指数、幂次变换、灰度反转、阈值增强函数曲线。

灰度级变换

由图可知

  • 对数变换的可以压缩图像中较亮区域的动态范围。减小了最大值与最小值之间的反差值

  • 与之类似的是幂次变换:

    • 当 幂数<1 时,拉伸直方图灰度级暗端的动态范围,压缩灰度级亮端的动态范围;增强图像中暗区域的对比度,降低亮区域的对比度;图像整体变亮

    小于1

    • 当 幂数>1 时,拉伸直方图灰度级亮端的动态范围,压缩灰度级暗端的动态范围;增强图像中亮区域的对比度,降低暗区域的对比度;整体变暗

    大于1

  • 灰度反转是对图像求反,作用是突出在大片黑色区域中的白色或灰色细节。
    灰度反转

  • 指数变换,在对数域中将乘法运算转换为加法运算,这样能够利用线性滤波进行图像处理,最后再使用指数变换对图像进行反变


4. 直方图处理

通过对灰度直方图变换是有效实施图像增强的一种方法,具体有:

  • 直方图均衡化、 直方图规定化
  1. 直方图均衡化的目的:是将直方图的灰度级概率分布变换为均匀分布。

均衡化目的

这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。

直方图均衡化函数使用

J = histeq(I,n) % I为输入的原图像,J为直方图均衡化后得到的图像,n为指定直方图均衡化后的灰度级数(若n为向量,且长度小于等于I的灰度级数,则此时为直方图规定化映射,映射灰度区间为n),默认值为64 

[J, T] = histeq(I) % J为输出均衡化之后的图像,T为变换矩阵
  1. 灰度变换的寻找

寻找一个灰度级变换 s=T(r)s=T(r), 使变换后图像的直方图p(rk)p(r_k)服从均匀分布。
实现:计算灰度级r的概率密度函数p(rk)p(r_k)累积分布函数,就是所要找的灰度级变换 s = T® 。

  1. 灰度直方图均衡化计算步骤

步骤1:计算输入图像灰度级rkr_k的概率分布率Pr(rk)P_r(r_k),统计各灰度级rkr_k的像素出现的概率为 Pr(rk)P_r(r_k);

步骤2:计算输入图像灰度级rkr_k的累积概率分布率Fr(rk)F_r(r_k)

步骤3:确定输入与输出灰度级之间的映射关系rkskr_k \rightarrow s_k,将输入图像中灰度级为rkr_k的像素映射到输出图像中灰度级为sks_k的对应像素;

步骤4:统计输出图像各灰度级sks_k的像素数,并计算输出图像灰度级sks_k的概率分布率Ps(sk)P_s(s_k)

练习

练习

灰度直方图计算

比较

均衡化过程注意:

  1. 在灰度级为离散形式下,灰度级映射后的灰度值sks_k一般并非落在量化的灰度级上,而是将灰度值sks_k近似为最接近的量化灰度级。
  2. 在近似过程中可能会造成将多个不同的sks_k值近似到相同的灰度级。
  3. 像素重新分配时,只能把同一灰度级的像素成组移动,同一组的像素不允许拆分为多个灰度级,不同组的像素可以合并成一种新的灰度级。
  4. 通常新直方图分布比原直方图分布疏散,sks_k的级数比rkr_k少。

5. 算术运算

图像相加

主要应用:

  • 对同一场景的多幅序列图像求取平均值,降低加性随机噪声;
  • 将一幅图像叠加到另一幅图像上,实现二次曝光效果。

举例:

  • 通过对多个不同背景的同一字幕视频帧进行相加,可以显著削弱背景的影响

均值去噪

图像相减(*)

  1. 主要运用:

    • 显示两幅图像的差异,检测同一场景两幅图像之间的变化,如:视频中镜头边界的检测
    • 图像分割:如分割运动的车辆,减法去掉静止部分,剩余的是运动像素和噪声(背景减除法)
  2. 运算过程中遇到负数灰度值的处理方法:

减法运算可能产生负值,设显示系统要求像素值为无符号整型,在显示之前需要将差值进行重新标度,用数学公式可表达为

dscale(x,y)=round{d(x,y)dmindmaxdminfmax}d_{scale}(x,y) = round{ \{ { {d(x,y)-d_{min}} \over {d_{max}-d_{min}} }* \bm{f}_{max} \} }

式中 round{*} 表示四舍五入符号,dscale(x,y)d_{scale}(x,y)表示重新标度的差值图像。通用的显示设备使用8位无符号整型256个灰度级显示图像,在这种情况下fmax\bm{f}_{max}为255。

举例:

生成背景

提取特征


6. 空域滤波

  1. 概念:
    • 是一种邻域处理方法,通过直接在图像空间中对领域内像素进行处理。
  2. 作用域:
    • 像素及其领域
  3. 目的:
    • 实现图像平滑与锐化。
  4. 空滤模板:即空域滤波器,在使用滤波模板与图像的空域卷积来实现的滤波中也叫卷积模板。

卷积示意图:

空域滤波器分类

滤波器分类

线性滤波输出信号是输入信号的线性表达,而非线性滤波输出信号的表达式则是非线性的。
判断一个函数(滤波器)线性非线性的最重要的手段就是,如下的等式是否成立:

f(λ1x1+λ2x2)=λ1f(x1)+λ2f(x2)f(λ_1x_1+λ_2x_2)=λ_1f(x_1)+λ_2f(x_2)

比如中值滤波、最小。最大滤波器是非线性的,均值滤波是线性的。

图像平滑

  1. 主要作用:

    • 模糊
      • 对大图像处理前,删去无用的细节
      • 连接中断的线段和曲线
      • 平滑化处理,恢复过分锐化的图像
      • 图像创艺(阴影、软边、朦胧效果)
    • 降低噪声
  2. 分类

    • 主要分为线性平滑滤波和统计排序平滑滤波(又为非线性平滑滤波)

特征:权系数全为正值,且系数之和等于1,不会增加总体灰度程度。

  • 最简单的线性平滑滤波模板是均值平滑滤波模板

均值平滑滤波模板

  • 其次更有效的平滑模板——加权平均模板
    • 指模板不同位置对应的像素具有不同的权系数,
    • 中间权系数大,周围权系数小,
    • 最常用的是高斯平滑模板

加权平均模板

  • 空域线性平滑滤波的问题:若图像处理的目的是去除噪声,则低通滤波在去除噪声的同时也平滑化了边缘和细节。

统计排序平滑滤波:
将模板对应的邻域内像素的灰度值进行排序,将统计排序结果作为模板中心对应像素的输出值。

  • 最常见的是中值滤波
    • 特点
      • 在去除噪声的同时,可以比较好地保留边缘的锐度和图像的细节。
      • 能够有效去除脉冲噪声(椒盐噪声)。
  • 最大值滤波、最小值滤波

中值滤波和均值滤波对椒盐噪声的平滑滤波比较,中值滤波更好
原因:椒盐噪声点是图像中为奇异,孤立的像素点,在灰度值上常表现为很大或者很小。所以在中值滤波处理时,更易将这些孤立点排除,中值滤波则会将该灰度计入最终结果,相比而言会对图像造成一定的影响。

中值均值滤波对椒盐噪声效果比较

  • 模板尺寸对滤波器效果的影响:模板尺寸越大,图像越模糊,图像细节丢失越多
  • 空域线性平滑滤波的问题:若图像处理的目的是去除噪声,则低通滤波在去除噪声的同时也平滑化了边缘和细节。

图像锐化(*)

主要作用

  • 增强图像中的边缘和细节, 如边缘增强
  • 减弱或清除灰度变化缓慢的区域,如边缘检测

差分

用差分近似于偏导数

  • why:差分算子的响应程度图像在该点灰度值的突变程度有关,图像锐化使用差分算子

对于一维离散函数f(x)\bm{f}(x),一阶导数用一阶差分近似为

Δf(x)=f(x+1)f(x)\Delta\bm{f}(x) = \bm{f}(x+1) - \bm{f}(x)

特点
  1. 一阶差分特点: 一阶差分在边缘处有一个强的响应,形成一个峰。

一阶差分示意图

同样二阶导数用二阶差分近似:

Δ2f(x)=f(x+1)f(x1)+2f(x)\Delta^2\bm{f}(x) = \bm{f}(x+1) - \bm{f}(x-1) + 2\bm{f}(x)

  1. 二阶差分特点:在二阶差分中边缘的表现是过零点,在过零点两侧,分别形成一个峰和一个谷,这就是二阶差分算子的双响应

二阶差分示意图

  • 原函数中的坡在一阶差分后形成强响应(波峰或者波谷),而波峰或者波谷在一阶差分后形成双响应。
  • 二阶差分是一阶差分基础上再次差分。
分别用途:
  1. 一阶差分:利用图像梯度突出边缘和细节,主要用于图像的边缘检测
  2. 二阶差分:线性算子,通过线性算子提取的边缘和细节叠加在原图像上,主要用于图像的边缘增强
举例差分模板
  1. Roberts算子(一阶差分算子)

    roberts水平垂直方向的梯度算子
    对角线方向的梯度算子:

    gx=fx=f(x+1,y+1)f(x,y)gy=fy=f(x+1,y)f(x,y+1)\begin{array}{l} g_{x}=\frac{\partial f}{\partial x}=f(x+1, y+1)-f(x, y) \\ g_{y}=\frac{\partial f}{\partial y}=f(x+1, y)-f(x, y+1) \end{array}

roberts对角线方向的梯度算子

  1. Prewitt 算子

水平方向 :gx=fx=(z7+z8+z9)(z1+z2+z3): \quad g_{x}=\frac{\partial f}{\partial x}=\left(z_{7}+z_{8}+z_{9}\right)-\left(z_{1}+z_{2}+z_{3}\right)

垂直方向: gy=fy=(z3+z6+z9)(z1+z4+z7)g_{y}=\frac{\partial f}{\partial y}=\left(z_{3}+z_{6}+z_{9}\right)-\left(z_{1}+z_{4}+z_{7}\right)

对角线方向:

gx=(z2+z3+z6)(z4+z7+z8)gy=(z6+z8+z9)(z1+z2+z4)g_{x}^{\prime}=\left(z_{2}+z_{3}+z_{6}\right)-\left(z_{4}+z_{7}+z_{8}\right) \\ \quad g_{y}^{\prime}=\left(z_{6}+z_{8}+z_{9}\right)-\left(z_{1}+z_{2}+z_{4}\right)

prewitt算子

  1. Soble(边缘检测) - 一阶差分算子

    Sobel算子是在Prewitt算子的基础上改进的,在中心系数上使用一个权值2,相比较Prewitt算子,Sobel模板能够较好的抑制(平滑)噪声

    一维一阶差分算子变换到二维,要分两个方向对其计算梯度。

    二维一阶差分

    x方向:

    Gx=(z7+2z8+z9)(z1+2z2+z3\mathscr{G}_{x}=\left(z_{7}+2 z_{8}+z_{9}\right)-\left(z_{1}+2 z_{2}+z_{3}\right\rangle

    y方向:

    Gy=(z3+2z6+z9)(z1+2z4+z7)G_{y}=\left(z_{3}+2 z_{6}+z_{9}\right)-\left(z_{1}+2 z_{4}+z_{7}\right)

    从而我们的soble算子为

    soble算子

    Sobel模板中的系数之和为0,表明灰度恒定区域的响应为0。

  2. 拉普拉斯算子(边缘增强) - 二阶差分算子

    一维的一阶差分变换到二维的二阶差分

    2f(x,y)=Δ2fx(x,y)+Δ2fy(x,y)=[f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)]4f(x,y)\begin{array}{l} \nabla^{2} f(x, y)=\Delta^{2} f_{x}(x, y)+\Delta^{2} f_{y}(x, y) \\ \qquad \begin{aligned} =&[f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)]- 4f(x, y) \end{aligned} \end{array}

    • 所以得到的算子为

    拉普拉斯算子

    整体系数之和为0,在灰度变化平坦区域不响应。

    • 作用

    Laplacian算子是一个用于检测边缘的二阶微分算子。在Laplacian结果中,边缘并不处于最大值处,而是处于最大正值和最小负值之间的零值处,称为过零点、零交叉(Zero Crossing)。

    拉普拉斯二阶微分函数图像

    • 拉普拉斯算子的分析

      • 缺点

      对噪声的敏感;会产生双边效果;不能检测出边的方向。

      • 应用

      利用二阶导数零交叉,确定边的位置。
      检测一个像素是在边的亮的一边还是暗的一边;(由拉普拉斯的二阶微分函数可知,负数为亮,正数为暗)
      拉普拉斯算子不直接用于边的检测,通常只起辅助的角色。

边缘检测函数 edge
BW = edge(I) 
BW = edge(I, method)
BW = edge(I, method, threshold)
BW = edge(I, method, threshold, direction) % I是灰度图像,method是算子,threshold是阈值,direction是方向