数字图像处理学习笔记 三 灰度变换与空间滤波

目录

一 背景基础知识

二  直方图处理

三 空间滤波基础          


一 背景基础知识

     1、  对于图像的处理有两种思路,一种是对图像本身的直接处理,即空间域处理;另一种是在频率域进行处理。关于空域和频域,可以参考傅里叶变换。在空间域的处理相对简单,因此首先介绍的是空域处理法。空域中有两种重要处理方法:灰度变换(或亮度变换)和空间滤波(或邻域处理、空间卷积)。

  •       空间域: 指图像平面本身,这类图像处理方法直接以图像中的像素操作为基础。操作分为灰度变换和空间滤波。
  •       灰度变换: 在图像的单个像素上操作,以对比度和阈值处理为主要目的。
  •       空间滤波: 设计性能改善的操作,例如通过图像中每一个像素的邻域处理来锐化图像。
  •       灰度越大颜色越白,0是黑色,255是白色。

      空间域的处理主要就是分为灰度变换空间滤波

     2、一些基本的灰度变换函数:

数字图像处理学习笔记 三 灰度变换与空间滤波_第1张图片

1、图像反转
     灰度级范围在[0, L-1]的一幅图像的反转图像:s = L - 1 - r,特别适用于增强嵌入在一幅图像的按区域中的白色或灰色细节,特别是黑色面积占主导地位时

read_image(Image, 'frequency')
* 图像反转
invert_image(Image, ImageInvert)

 

2、对数变换
      s = clog(1 + r) c是常数,r≥0
该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,将输入中范围较大的高灰度值映射为输出较窄的灰度值。
使用这种类型的变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值。
     反对数变换相反。

3、幂律(伽马)变换
     s=crγ

数字图像处理学习笔记 三 灰度变换与空间滤波_第2张图片

从图中可以看到,γ<1时,将较窄范围内的较暗的输入值映射为较宽范围的输出值,暗区变小,亮区变大;γ>1时,将较宽范围内较暗的输入值映射到了较窄范围的输出值,暗区变大,亮区变小。

       由于用于图像获取,打印和显示的各种设备根据幂律来产生相应,用于校正这些幂律相应的处理称为伽马校正。
例如图像显示设备的响应是一个指数为2.5的幂函数,会导致显示出来的图像比实际的暗,这种情况下,在图像进入到输出设备之前,做一个指数为1/2.5的伽马变换进行纠正。
       注意:根据实际情况设置伽马值可以用于各种图像设备

       幂律变换还可以用来进行对比度增强。对于整体比较暗的图像,选择一个小于1的伽马值,来扩展灰度级;对于整体比较亮的图像,选择一个大于1的伽马值,来压缩灰度值。

4、对比度拉伸
     不同灰度的数量不会发生改变,但是看上去对比度是增强了的。
原图:

数字图像处理学习笔记 三 灰度变换与空间滤波_第3张图片

灰度拉伸后:

数字图像处理学习笔记 三 灰度变换与空间滤波_第4张图片

5、灰度级分层
     突出图像中特定灰度范围的亮度,用于增强特征
     两种方法:1. 将感兴趣的区域和不感兴趣的区域分别显示为两种灰度,如一个显示为黑色,一个显示为白色,生成了一张二值图像;
    2. 将感兴趣的区域变亮或变暗,其他区域不变。

6、比特分割
     8比特图像考虑为8幅1比特图像构成,其实就是8次阈值分割。
     主要用于图像复原,存储4个高阶比特平面将允许我们以可接受的细节来重建原图像。

二  直方图处理

      1、灰度直方图:表示图像中具有某种灰度级的像素的个数。  直方图反映图像的总体性质:明暗性质、细节是否清晰、动态范围大小等。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。
      若一幅图像的像素倾向于占据整个可能的灰度级并且均匀分布,则该图像会有较高的对比对的外观并展示灰色调的较大变化,最终效果将是一幅灰度细节丰富且动态范围较大的图像。(理想)

      灰度直方图的计算公式如下:p(rk)=nk/MN   其中,rk是像素的灰度级,nk是具有灰度rk的像素的个数,MN是图像中总的像素个数。

     2、直方图均衡化

       假如图像的灰度分布不均匀,其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对比度较低。通常采用直方图均衡化直方图规定化两种变换,使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的。
       直方图均衡化,对图像进行非线性拉伸,重新分配图像的灰度值,使一定范围内图像的灰度值大致相等。这样,原来直方图中间的峰值部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较为平坦的直方图。

      均衡化算法

      直方图的均衡化实际也是一种灰度的变换过程,将当前的灰度分布通过一个变换函数,变换为范围更宽、灰度分布更均匀的图像。也就是将原图像的直方图修改为在整个灰度区间内大致均匀分布,因此扩大了图像的动态范围,增强图像的对比度。通常均衡化选择的变换函数是灰度的累积概率,直方图均衡化算法的步骤:

  • 计算原图像的灰度直方图 P(Sk)=nknP(Sk)=nkn,其中nn为像素总数,nknk为灰度级SkSk的像素个数
  • 计算原始图像的累积直方图 CDF(Sk)=∑i=0knin=∑i=0kPs(Si)CDF(Sk)=∑i=0knin=∑i=0kPs(Si)
  • Dj=L⋅CDF(Si)Dj=L⋅CDF(Si),其中 DjDj是目的图像的像素,CDF(Si)CDF(Si)是源图像灰度为i的累积分布,L是图像中最大灰度级(灰度图为255)

    灰度直方图均衡化实现的步骤

     1.统计灰度级中每个像素在整幅图像中的个数

     2.计算每个灰度级占图像中的概率分布

     3.计算累计分布概率

     4.计算均衡化之后的灰度值

     5.映射回原来像素的坐标的像素值

python实现:

def histeq(im,nbr_bins = 256):
    """对一幅灰度图像进行直方图均衡化"""
    #计算图像的直方图
    #在numpy中,也提供了一个计算直方图的函数histogram(),第一个返回的是直方图的统计量,第二个为每个bins的中间值
    imhist,bins = histogram(im.flatten(),nbr_bins,normed= True)
    cdf = imhist.cumsum()   #
    cdf = 255.0 * cdf / cdf[-1]
    #使用累积分布函数的线性插值,计算新的像素值
    im2 = interp(im.flatten(),bins[:-1],cdf)
    return im2.reshape(im.shape),cdf


pil_im = Image.open('D:\数据\\校园.jpg')   #打开原图
pil_im_gray = pil_im.convert('L')     #转化为灰度图像
pil_im_gray.show()         #显示灰度图像

im = array(Image.open('D:\数据\\校园.jpg').convert('L'))
# figure()
# hist(im.flatten(),256)

im2,cdf = histeq(im)
# figure()
# hist(im2.flatten(),256)
# show()

im2 = Image.fromarray(uint8(im2))
im2.show()
# print(cdf)
# plot(cdf)
im2.save("junheng.jpg")

处理前:

数字图像处理学习笔记 三 灰度变换与空间滤波_第5张图片

数字图像处理学习笔记 三 灰度变换与空间滤波_第6张图片

处理后:

数字图像处理学习笔记 三 灰度变换与空间滤波_第7张图片

数字图像处理学习笔记 三 灰度变换与空间滤波_第8张图片

3、直方图规定化

     从上面可以看出,直方图的均衡化自动的确定了变换函数,可以很方便的得到变换后的图像,但是在有些应用中这种自动的增强并不是最好的方法。有时候,需要图像具有某一特定的直方图形状(也就是灰度分布),而不是均匀分布的直方图,这时候可以使用直方图规定化
      直方图规定化,也叫做直方图匹配,用于将图像变换为某一特定的灰度分布,也就是其目的的灰度直方图是已知的。这其实和均衡化很类似,均衡化后的灰度直方图也是已知的,是一个均匀分布的直方图;而规定化后的直方图可以随意的指定,也就是在执行规定化操作时,首先要知道变换后的灰度直方图,这样才能确定变换函数。规定化操作能够有目的的增强某个灰度区间,相比于,均衡化操作,规定化多了一个输入,但是其变换后的结果也更灵活。

      可以利用均衡化后的直方图作为一个中间过程,然后求取规定化的变换函数。具体步骤如下:

  • 将原始图像的灰度直方图进行均衡化,得到一个变换函数s=T(r),其中s是均衡化后的像素,r是原始像素
  • 对规定的直方图进行均衡化,得到一个变换函数v=G(z),其中v是均衡化后的像素,z是规定化的像素
  • 上面都是对同一图像的均衡化,其结果应该是相等的,s=v,且z=G−1(v)=G−1(T(r))

通过均衡化作为中间结果,将得到原始像素r和z规定化后像素之间的映射关系。

     规定化过程

      对图像进行直方图规定化操作,原始图像的直方图和以及规定化后的直方图是已知的。

      假设Pr(r)表示原始图像的灰度概率密度,Pz(z)表示规定化图像的灰度概率密度(r和z分别是原始图像的灰度级,规定化后图像的灰度级)。

     1.对原始图像进行均衡化操作,则有

    2.对规定化的直方图进行均衡化操作,则

  

    3.由于是对同一图像的均衡化操作,所以有

    4.规定化操作的目的就是找到原始图像的像素sk到规定化后图像像素的zm之间的一个映射。

    有了上一步的等式后,可以得到sk=G(zm),因此要想找到sk对应的zm只需要在z进行迭代,找到使式子G(zm)−sk的绝对值最小即可。在实际的计算过程中,不需要做两次的均衡化操作

 

  • 数字图像处理学习笔记 三 灰度变换与空间滤波_第9张图片

4、局部直方图处理

      之前像素被基于整幅图像的灰度分布的变换函数修改,但增强图像中小区域的细节也是需要的
      解决方法:以图像中每个像素的邻域中的灰度分布为基础设计变换函数,用于映射邻域中心像素的灰度,然后邻域的中心被移至一个相邻像素位置并重复该过程
      当邻域进行逐像素平移时,只有邻域中的一行或者一列被改变,可以在每一步移动中,以新数据更新前一个位置得到的直方图。使用局部均值和方差进行图像处理很灵活,如图像中包含部分隐含特征
      局部均值:邻域的平均灰度
      局部方差:邻域中灰度对比度的度量
例: 保持亮区域不变,只增强暗区域

  • 判断一个区域在点(x,y)是暗是亮的方法:比较局部平均灰度mSxy,mSxy​​与平均图像灰度(全局均值)mGmG​,mSxymSxy​​≤k0mG,k0<1
  • k0​mG​,k0​<1,则在暗区域
  • 判断区域对比度:σSxy≤k2σG
  • σSxy​​≤k2​σG​,则在点(x,y)的像素在暗区域(低对比度)
  • 限制能够接受的最低的低对比度值,防止该过程试图增强标准差为0的恒定区域:k1σG≤σSxy
  • k1​σG​≤σSxy​​
  • 为保留细节并减少计算负担,局部区域的大小应尽可能小
  • 对满足局部增强条件的点的像素乘以指定常数E来处理
  • 参数常用数值:E=4.0,k0=0.4,k1=0.02,k2=0.4
  • E=4.0,k0​=0.4,k1​=0.02,k2​=0.4

三 空间滤波基础          

1、基本概念:

    线性平滑滤波器:减弱或消除图像中的噪声

    统计排序滤波器:适合去除加性椒盐噪声,常见的是中值滤波器

    空域滤波技术根据功能主要分为平滑滤波与锐化滤波

  • 滤波:接受(通过)或拒绝一定的频率分量
    低通滤波器:通过低频的滤波器,效果是模糊(平滑)图像
  • 空间滤波器由一个邻域+对该邻域包围的像素执行的预定义操作组成
  • 滤波产生一个新像素,其坐标=邻域中心坐标,像素值=滤波操作的结果
  • 滤波器的响应(response)g(x,y):滤波器系数与由该滤波器包围的图像像素乘积之和。使用奇数尺寸的滤波器可简化索引,更为直观
  • 线性空间滤波器:图像像素上执行的是线性操作
  • 滤波器的响应(response)g(x,y):滤波器系数与由该滤波器包围的图像像素乘积之和。使用奇数尺寸的滤波器可简化索引,更为直观
  • 空间相关与卷积
    相关(correlation):滤波器模板移过图像并计算每个位置乘积之和。  卷积(convolution):预先将滤波器旋转180度,执行与相关相同的滑动乘积求和操作。

 数字图像处理学习笔记 三 灰度变换与空间滤波_第10张图片

如果在图像像素上执行线性操作,那该滤波器称为线性滤波器

否则称为非线性滤波器

2、平滑滤波器:平滑滤波用于模糊处理和降低噪声。模糊处理常用于预处理任务中,如在目标提取之前去除图像中的一些琐碎细节,以及桥接直线或曲线的缝隙。通过线性或非线性平滑滤波也可降低噪声。

     2.1 平滑线性滤波器,也叫均值滤波器,是低通滤波器( 因为这样的操作降低了灰度的‘尖锐’变化)

  1. 所有系数都相等的滤波器,可以看出是求模板内像素的平均值
  2. 加权平均模板,根绝不同位置设定不同权重,如下图,权重随距离增加递减。对角线位置距离比直接接触的距离大,所以权重变为1。按照1/2的等比随着距离增加进行递减。重要:这个模板的目的是 在平滑处理中降低模糊

       数字图像处理学习笔记 三 灰度变换与空间滤波_第11张图片

      均值(线性)滤波可能带来轮廓模糊的副作用,而中值滤波(非线性)滤波去噪效果优秀,相较均值滤波其模糊程度更低,尤其是针对脉冲噪声的去噪,但有可能带来图像性质的改变
      锐化滤波正好相反,锐化滤波常用于增强被模糊的细节或目标的边缘,强化图像的细节

    3.高斯均值滤波器

      高斯函数的图形:

数字图像处理学习笔记 三 灰度变换与空间滤波_第12张图片

      高斯滤波器是一种带权的平均滤波器,它的模板根据高斯函数计算得到。高斯函数是正态分布的密度函数。正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。

一维:

数字图像处理学习笔记 三 灰度变换与空间滤波_第13张图片

二维:

数字图像处理学习笔记 三 灰度变换与空间滤波_第14张图片

x,y的取值:

数字图像处理学习笔记 三 灰度变换与空间滤波_第15张图片

 

常见高斯滤波模板

数字图像处理学习笔记 三 灰度变换与空间滤波_第16张图片

 

高斯滤波的性质:高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用。

  (1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向. 

  (2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真. 

  (3)高斯函数的傅立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号. 

  (4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷. 

  (5)由于高斯函数的可分离性,较大尺寸的高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.

 

     2.2 统计排序(非线性)滤波器

      以滤波器包围的图像区域中包含的像素的排序为基础,然后使用统计排序结果决定代替中心的像素值。最知名的叫 中值滤波器,这种滤波器对脉冲噪声非常有效,也称为椒盐噪声。

      分析: 因为滤波器用统计中的数列中值代替模板中心位置处的值,这样就比均值更加保证了锐度的特点。使得拥有不同灰度的点看起来更接近于它的相邻点。

       注:既然是统计特性决定的输出,可以取1/2处的值,也可以取最小值,最大值等等其他的统计特性。

数字图像处理学习笔记 三 灰度变换与空间滤波_第17张图片

      比较:均值滤波和中值滤波非常基础,均值滤波相当于低通滤波,有将图像模糊化的趋势,对椒盐噪声基本无能为力。中值滤波的优点是可以很好的过滤掉椒盐噪声,缺点是易造成图像的不连续性。

      最大值滤波是用窗口内像元的最大值来代替中心像元的亮度值,可以发现图像中的亮点,并消除图像中的“椒”噪声(亮度值小的噪声)。

      最小值滤波是用窗口内像元的最小值来代替中心像元的亮度值,可以发现图像中的暗点,并消除图像中的“盐”噪声(亮度值大的噪声)。

  3、锐化滤波器

       3.1 已知图像模糊可用均值平滑实现。因均值处理与积分类似,在逻辑上,我们可以得出锐化处理可由空间微分来实现。微分算子的响应强度与图像的突变程度成正比,这样,图像微分增强边缘和其他突变,而削弱灰度变化缓慢的区域。

       微分算子:(1)在恒定灰度区域的微分值为0;

                        (2)在灰度台阶或斜坡处微分值非0;

                        (3)沿着斜坡的微分值非0

       一维:     一阶微分定义:

        二阶微分定义:

      二维:数字图像的边缘在灰度上常常类似于斜坡过渡,这样就导致图像的一阶微分产生较粗的边缘。因为沿着斜坡的微分非0。另一方面,二阶微分产生由0分开的一个像素宽的双边缘。由此我们得出结论,二阶微分在增前细节方面比一阶微分好得多。

 

数字图像处理学习笔记 三 灰度变换与空间滤波_第18张图片

        3.2最简单的各向同性微分算子—拉普拉斯算子

            滤波器的响应与滤波器作用的图像的突变方向无关。也就是说,各向同性滤波器是旋转不变的,即将原图像旋转后进行滤波处理的结果和先对图像滤波然后再旋转的结果相同。

一个二维图像函数f(x,y)的拉普拉斯算子定义为:

任意阶微分都是线性操作,所以拉普拉斯变换也是一个线性算子。于是:

       对应的滤波模板为下图a,这是一个旋转90°的各向同性模板,另外还有对角线方向45°的各向同性模板,还有其他两个常见的拉普拉斯模板。a、b与c、d的区别是符号的差别,效果是等效的

数字图像处理学习笔记 三 灰度变换与空间滤波_第19张图片

       拉普拉斯强调的是图像中灰度的突变。将原图像和拉普拉斯图像叠加,可以复原背景特性并保持拉普拉斯锐化处理的效果。如果模板的中心系数为负,那么必须将原图像减去拉普拉斯变换后的图像,从而得到锐化效果。所以,拉普拉斯对图像增强的基本方法可表示为下式:

其中,f(x,y)和g(x,y)分别是输入图像和锐化后的图像,如果使用a、b滤波模板则c=-1,如果使用另外两个,则c=1

 

拉普拉斯算子处理:

 数字图像处理学习笔记 三 灰度变换与空间滤波_第20张图片数字图像处理学习笔记 三 灰度变换与空间滤波_第21张图片数字图像处理学习笔记 三 灰度变换与空间滤波_第22张图片

 

 

   3.3非锐化掩蔽和高提升滤波

      处理过程:

     1、平滑原图像

     2、原图像减去1得到的平滑图像(得到的差值图像称为模板)

     3、将模板加到原图像上

令 表示模糊图像,那么首先我们得到模板:

然后在原图像上加上该模板的一个权重部分:

数字图像处理学习笔记 三 灰度变换与空间滤波_第23张图片

上式中,当k=1时,我们得到上面定义的非锐化掩蔽,当k>1时,该处理称为高提升滤波,当k<1时,则不强调非锐化模板的贡献

 .

 

 

 

 

 

 

你可能感兴趣的:(数字图像处理,python)