数字图像处理学习笔记(二)(上)

第三章 灰度变换与空间滤波

引言

空间域:

指图像平面本身,这类图像处理方法直接以图像中的像素操作为基础。处理主要分为灰度变换和空间滤波两类。

变换域:

变换域的图像处理首先把一幅图像变换到变换域,在变换域中进行处理,然后通过反变换把处理结果返回到空间域。类比信号系统中的时域与频域以及s域。

3.1背景知识

空间域技术优点:

在计算上更有效,且在执行上需要较少的处理资源。

空间域处理表示公式:

g(x,y) = T[f(x,y)]
f(x,y)是输入图像, g(x,y)是处理后的图像,T是在点(x,y)的领域上定义的关于f的一种算子。算子可应用于单幅图像或图像集合。

空间滤波器算子实现:

假设某邻域是大小为3× 3 的正方形,算子 T 定义为“计算该邻域的平均灰度”。考虑图像中的任意位置,譬如(100, 150)。假设该邻域的原点位于其中心处,则在该位置的结果g( 100, 150)是计算f(100, 150)和它的 8 个邻点的和,再除以9(即由邻域包围的像索灰度的平均值)。然后,邻域的原点移动到下一个位置,并重复前面的过程.产生下一个输出图像g的值。
我这里主要是想看一下这个算法处理图片后,图片的信息变化。所以想自己创建个数组,最后对比一下,看一下这个算法的影响。我找了一下,Python关于图像处理的函数很多,我找到一个文章,使用的是Matplotlib这个库,可以把图片读取成数组,也可以将数组显示成图片,所以决定用这个库。
我先试了一下输出结果

import matplotlib.pyplot as plt
digit  =  [[10,10,10,10],[15,15,15,15],[20,20,20,20]]

for i in range(0,len(digit)):
    for j in range(0,len(digit[i])):
        print(digit[i][j],"",end="")  
    print("\n")        
#print(digit)
plt.imshow(digit)
plt.show()

结果提示我没有安装这个Matplotlib数据包。
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
按照这个流程重新安装一下。

https://idmatlab.blog.csdn.net/article/details/83099583?spm=1001.2101.3001.6650.1&ut

数字图像处理学习笔记(二)(上)_第1张图片
数字图像处理学习笔记(二)(上)_第2张图片

滤波实现代码后面补充。

最小邻域的大小为1×1。在这种情况下,g仅取决于点(x,y)处的 f 值.而空间域处理表示公式中的 T 则成为-个形如下式的灰皮(也称为灰度级或映射)交换函数:s = T( r )
这种技术有时称为对比度拉伸。

可以将上图灰度扩大两倍,对比观察:

for i in range(0,len(digit)):
    for j in range(0,len(digit[i])):
        digit[i][j] =digit[i][j]*2
        print(digit[i][j]," ",end=" ")
    print("\n")
plt.imshow(digit)
plt.show()

数字图像处理学习笔记(二)(上)_第3张图片

数字图像处理学习笔记(二)(上)_第4张图片

上图为灰度扩大两倍后的结果。与原始图像一样???
一开始以为是值变换不够大,所以没有变化,但改过值后,同样不产生变化。目前没有找到问题产生的原因,怀疑是我函数调用的不对导致的。问题已经记录,后面进行排查。

图像增强:

增强处理是对图像进行加工,使其结果对于特定的应用比原始图像更合适的一种处理。图像增强没有通用的“理论”。观察者将是判定一种特定方法好与坏的最终裁判员。

3.2一些基本的灰度变换函数

数字图像处理学习笔记(二)(上)_第5张图片

灰度变换:

所有图像处理技术中最简单的技术。r 和 s 分别代表处理前后的像素值,s = T(r),其中T是把像素值r映射到像索值s的一种变换。

图像反转:

该处理特别适用于增强嵌入在一幅图像的暗区域中的内色或灰色细节,特别是当黑色面积在尺寸上占主导地位时。
通用形式为:s= L-1-r 灰度级范围为(0, L-1)

对数变换:

该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,相反地,对高的输入灰度值也是如此。 我们使用这种类型的变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值。反对数变换的作用刚好向反。
通用形式为:s =c log(1+ r),c是一个常数,并假设r≥0。

幂律(伽马)变换:

与对数变换的情况类似,部分伽马值的幂律曲线将较窄范围的暗色输入值映射为较宽范围的输出值,相反地,对于输入高灰度级值时也成立。
基本形式为:s = c*rγ c和γ为正常数。

伽马校正:

用于图像获取、打印和显示的各种设备根据幂律来产生响应。用于校正这些幂律响应现象的处理称为伽马校正

分段线性变换函数:

分段线性函数较我们已经讨论过的函数类型的的主要优点是分段线性函数的形式可以是任意复杂的。分段函数的主要缺点是它的技术说明要求用户输入。
对比度拉伸:最简单的分段线性函数之一。对比度拉伸是扩展图像灰度级动态范围的处理。可以跨越记录介质和显示装置的全部灰度范围。

灰度级分层:

突出图像中特定灰度范围的亮度,其应用包括增强特征。
两种基本方法。一种方法是将感兴趣范围内的所有灰度值显示为一个值(譬如“白色”),而
将其他灰度值显示为另一个值(譬如“黑色”)。

比特平面分层:

像素是由比特组成的数字。突出特定比特来为整个图像外观作出贡献。
生成比特平面的灰度变换函数的方法:
将像素值对应的二进制值转化出来,根据对应的比特平面取对应位的比特值。图像重建是生成比特平面的反变换。比特平面八对应像素值乘以28-1 ,比特平面七对应像素值乘以27-1,将各比特平面值相加,即可。

3.3直方图处理

数字图像的直方图表示公式:h(rk) = nk 其中rk是第k级灰度值,nk是图像中灰度为rk的像索个数。
归一化后的直方图公式:p(rk) = nk /MN MN表示的图像像素的总数,k∈(0,L-1)是p(rk)是灰度级rk在图像中出现的概率的一个估计。
归一化直方图的直方图所有分量之和应等于1。

直方图均衡:

一幅图像的灰度级可看成是区间[0,L-1]内的随机变量。随机变量的基本描绘子是其概率密度函数(PDF)。
图像处理中特别重要的变换函数有如下形式 :
在这里插入图片描述
pr(r)和ps(s)分别表示随机变量r和s的概率密度函数
w是积分的假变量。公式右边是随机变量r的累积分布函数(CDF)
离散形式:
在这里插入图片描述
变换(映射)T(rk )称为直方图均衡或直方图线性变换。

直方图均衡化步骤:

1、计算出各个灰度级对应的概率。
2、由直方图均衡变换函数的到变换后的输出的灰度级(四舍五入)。
3、根据输出的灰度级,统计输出后各灰度级的个数,算出此时各灰度级对应的概率。
4、由计算出的输出灰度级概率得到均衡后的直方图。

直方图均衡作为自适应对比度增强工具具有突出作用。

直方图匹配(规定化):用于产生处理后有特殊直方图的方法称为直方图匹配或直方图规定化。

定义特性的随机变量Z具有如下特性:
在这里插入图片描述
由一幅给定图像得到一幅其灰度级具有指定概率密度函数的图像步骤:
1、由输入图像得到 pr( r ), 由直方图均衡变换函数的到变换后的输出的灰度级(四舍五入)。
2、利用定义的随机变量的特性,得到变换函数G(z)。
3、求得反变换函数z = G-1(s); 因为 z 是由 s 得到的,所以该处理是s到z的映射。而后者正是我们期望的值。
4、首先用直方图均衡变换函数对输入图像进行均衡得到输出图像。该图像的像素值是s值。对均衡后的图像中具有s值的每个像素执行反映射z=G-1(s),得到输出图像中的相应像素。当所有的像素都处理完后,输出图像的PDF将等于指定的PDF。

直方图规定化优缺点:

在原理上是简单的。但在实践中,一个共同的困难是寻找T(r)和G-1的有意义的表达式。

离散形式直方图均衡变换步骤:
1、由输入图像得到 pr( r ), 由直方图均衡变换函数的到变换后的输出的灰度级(四舍五入)。
2、利用变换公式
在这里插入图片描述
对q =0、1、2…L-1。计算变换函数G的所有值。把 G 的值四舍五入为范围[0, L-1]内的整数。将G的值存储在一个表中。
3、对每-个值Sk =0,1,2,…,L-1,使用步骤 2 存储的G值寻找相应的 Zq 值,以使G(zq)最接近Sk,并存储这些从s到z的映射。当满足给定Sk的Zq值多于一个时(即映射不唯一时),按惯例选择最小的值。
4、首先对输入图像进行均衡,然后使用步骤3找到的映射把该图像中的每个均衡后的像素值Sk映射为直方图规定化后的图像中的相应Zq值,形成直方图规定化后的图像。正如连续情况那样,均衡输入图像的中间步骤是慨念上的。

局部直方图处理:

以图像中每个像素的邻域中的灰度分布为基础设计变换函数。以图像中每个像素的邻域中的灰度分布为基础设计变换函数,用于映射邻域中心像素的灰度,然后邻域的中心被移至一个相邻像素位置并重复该过程。

直方图统计:

直接从直方图获得的统计参数用于图像增强。
令 r 表示在区间[0,L-1]上代表灰度值的一个离散随机变量,并令p(ri)表示对应于ri值的归一化直方图分量。r关于其均值的 n 阶矩定义为
在这里插入图片描述
m 是 r 的均值。
在这里插入图片描述
灰度方差:二阶矩
在这里插入图片描述

均值是平均灰度的度量,方差(或标准差)是图像对比度的度量。

使用全局直方图均衡增强会改变整个图的值,当需要增强局部的图像细节时,就需要选择合理的阈值,进行局部直方图灰度变换。这样可以只改变我们需要增强的局部图像细节。

3.4空间滤波基础

空间滤波机理:

空间滤波器由①一个邻域(典型地是一个较小的矩形)②对该邻域包围的图像像素执行的预定义操作组成。
滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像素的值是滤被操作的结果。
在图像像素上执行的是线性操作,则该滤波器称为线性空间滤波器。 否则, 滤波器就称为非线性空间滤泼器。

大小为 m×n 的滤被器对大小为 M x N 的图像进行线性空间滤波,可由下式表示:
在这里插入图片描述

空间相关:

滤波器模板移过图像并计算每个位置乘积之和为相关。

卷积:

预先将滤波器旋转180度,执行与相关相同的滑动乘积求和操作。

离散单位冲激:

包含单个1而其余都是0的函数称为离散单位冲激。
一个函数与离散单位冲激相关,在该冲激位置产生这个函数的一个翻转的版本。

相关操作公式表示:

一个大小为mxn的滤波器w(x,y)与一幅图像f(x,y)做相关操作,可表示为w(x,y)☆f(x,y)即为:
在这里插入图片描述
卷积表示:为w(x,y)★f(x,y)
在这里插入图片描述
使用相关或卷积执行空间滤波是优先选择的方法。
模板与图像的卷积通常用于表示滑动乘积求和处理,而不必区分相关与卷积间的差别。更合适的是,它通常用于表示两种操作之一。 这一不太严密的术语是产生混淆的根源。

空间滤波器模板的产生:

生成一个大小为 m×n 的线性空间滤波器要求指定 mn 个模板系数,这些系数是根据该滤波器支持什么样的操作来选择的,记住,我们使用线性滤波所能做的所有事情是实现乘积求和操作。
产生非线性滤波器要求我们确定邻域的大小,以及将对包含在邻域内的图像像素执行的操作。

滤波器模板都是按照我们的需要进行设计的。我们需要什么样的滤波,就设计什么样的模板。
我觉得难点可能在于设计什么样的模板能够很好地达到我们的目标。

3.5平滑空间滤波器

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

平滑线性滤波器:

也称为均值滤波器,可以把它们归入低通滤波器,输出(响应)是包含在滤波器模板邻域内的像素的简单平均值。使用滤披器模板确定的邻域内像素的平均灰度值代替图像中每个像素的值。
降低了图像灰度的“尖锐”变化,常见的平滑处理应用就是降低噪卢。
会产生边缘模糊的负面效应。
均值滤波器的主要应用是去除图像中的不相关细节,其中“不相关”是指与滤波器模板尺寸相比较小的像素区域。

盒状滤波器:

所有系数都相等的空间均值滤波器有时称为盒状滤波器。

加权平均模板:

根绝不同位置设定不同权重,权重随距离增加递减,对角线位置距离比直接接触的距离大,所以权重变小。总之权重随着距离增加进行递减。
数字图像处理学习笔记(二)(上)_第6张图片

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

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

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

滤波原理都是对图像数据进行处理,按照噪声的不同我们选择不同的数据处理方式,不同的数据处理方式便被称为不同的滤波方式。
按照平均值处理图像数据,则是均值滤波,按照排序取中值与最大值则称为中值滤波,最大值滤波。
这些滤波说到底是为了去除我们不想要的数据,改成我们需要的数据。

3.6锐化空间滤波器

锐化处理的主要目的是突出灰度的过渡部分。在逻辑上,我们可以得出锐化处理可由空间微分来实现。
一阶、二阶微分要求:
①在恒定灰度区域的微分值为0
②在灰度台阶或斜坡处微分值非0;
③沿着斜坡的微分值非0
一阶微分定义:
在这里插入图片描述
二阶微分定义:
在这里插入图片描述
一阶微分产生较粗的边缘,二阶微分产生由零分开的一个像索宽的双边缘。
二阶微分在增强细节方面要比一阶微分好得多,这是一个适合锐化图像的理想特性。

使用二阶微分进行图像锐化——拉普拉斯算子

滤波器的响应与滤波器作用的图像的突变方向无关。也就是说,各向同性滤波器是旋转不变的,即将原图像旋转后进行滤波处理的结果和先对图像滤波然后再旋转的结果相同。
拉普拉斯算子是最简单的各向同性微分算子。
一个二维图像函数f(x,y)的拉普拉斯算子定义为:
在这里插入图片描述
因为任意阶微分都是线性操作,所以拉普拉斯变换也是一个线性算子。 为了以离散形式描述这一公式,我们使用二阶微分的定义,记住,我们必须支持第二个变量。
在x方向上:
在这里插入图片描述
在y方向上:
在这里插入图片描述
两个变量的离散拉普拉斯算子:
在这里插入图片描述
由于拉普拉斯是一种微分算子,因此其应用强调的是图像中灰度的突变,并不强调灰度级缓慢变化的区域。将原图像和拉普拉斯图像叠加在一起的简单方法,可以复原背景特性并保持拉普拉斯锐化处理的效果。
拉普拉斯对图像增强的基本方法可表示为下式:
在这里插入图片描述
其中,f(x,y)和g(x,y)分别是输入图像和锐化后的图像,如果使用a、b滤波模板则c=-1,如果使用另外两个,则c=1
数字图像处理学习笔记(二)(上)_第7张图片

非锐化掩蔽和高提升滤波

在印刷和出版界已用了多年的图像锐化处理过程是从原图像中减去一幅非锐化 (平滑过的)版本。
步骤组成:
1、平滑原图像
2、原图像减去1得到的平滑图像(得到的差值图像称为模板)
3、将模板加到原图像上

f(x,y)有上划线)表示模糊图像,那么首先我们得到模板:在这里插入图片描述
然后在原图像上加上该模板的一个权重部分:
在这里插入图片描述
我们会在上式中包含一个权重系数k(k≥0),当k=1时,我们得到上面定义的非锐化掩蔽。当 k>1时,该处理称为高提升滤波。选择k<1则不强调非锐化模报的贡献。

使用一阶微分对(非线性)图像锐化——梯度
图像处理中的一阶微分是用梯度幅值来实现的 。梯度也就是(x,y)处f的最大变换率的方向,向量▽f的幅值表示为M(x,y),即
在这里插入图片描述
通常我们在实现中,使用绝对值来近似平方和平方根操作更适合于计算:
在这里插入图片描述
梯度处理经常用于工业检测,不是辅助人工检测产品缺陷,就是更为通用地作为自动检测的预处理。在灰度平坦区域中增强小突变的能力是梯度处理的另一个重要特性。

3.7混合空间增强法

为了达到那些用一种方法无法实现的效果。可以把多种方法结合起来。得到期望结果所使用的方法取决于应用。

3.8使用模糊技术进行灰度变换和空间滤波

模糊集合用于空间滤披时 , 基本方法是定义一个邻域特性,该特性“截获”滤波器支持检
测的本质。

3.9小结

本章介绍了灰度变换和空间滤波中当前使用的有代表性的技术。所有变换与滤波的实质就是对于图像像素值得处理方式。如何使用滤波模板进行滤波,与滤波模板的产生是本章的重点。

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