上篇文章中,我们通过植被指数的学习,掌握了对多光谱遥感数据的波段运算操作。波段运算实质上是对多幅图像的数学运算,而本节介绍的空间滤波与卷积运算则是对单个图像的数学运算,本质都是数字图像处理的内容。
原理
邻域窗口:大家都知道,遥感图像的每个波段,其实质就是一个二维矩阵,每个栅格都是一个数值,即DN(Digital Number)值。那我们在做单波段图像处理的时候,常常要预先定义一个邻域窗口。这个邻域窗口,就是用来告诉程序,以多大的范围来定义邻域,也即用来进行邻域运算的单元。邻域窗口一般设为奇数大小,因为偶数大小的窗口是没有唯一的中心像元的。常用的邻域窗口有3×3,5×5等,下图定义了一个3×3的邻域窗口:
滑动窗口和跳跃窗口:这是邻域窗口在运算时的运动方式。移动窗口,就是每计算完一个栅格的邻域,就移动到其旁边的下一个栅格;而跳动窗口则在计算完一个栅格的领域后,跳动到与这个邻域窗口不相交的下一个邻域窗口进行运算。实际运用中滑动窗口远较跳跃窗口为多,但最好对二者都有了解。具体来看例子:
空间滤波(Spatial Filter):滤波是数字图像处理中很基础也很重要的一个概念。具体来说,就是用对邻域窗口的每个栅格进行某种数学运算,将运算后结果赋给中心栅格。所以,根据不同的数学运算,就会到不同的滤波效果,常用的有均值滤波,中值滤波等。滤波在遥感中常用于去噪和平滑图像。下图展示了均值滤波的操作:
卷积(Convolution):卷积运算是将邻域窗口在图像中移动,每到一个位置就用一个叫卷积核的东西与其对应的栅格值运算并求和,然后赋值给中心栅格。可以看出,整个卷积运算中,最关键的一步是用卷积核与对应栅格进行运算,所以卷积核的定义非常重要。你可以把卷积核理解为一个和邻域窗口一样规模的栅格模板(如3×3),其每个栅格的值根据不同算法也会有不同的取法。下图展现了卷积的基本概念:
下图展现了一个拉普拉斯卷积算法,主要就是用来特定的卷积核来进行了运算,达到图像锐化的目的:
ENVI实操
大家可能已经发现,均值滤波其实就是一种卷积运算,其卷积核的值皆为1/9(3×3窗口)。但若想实现其他的滤波,如众数滤波,最大值滤波等操作,ENVI中貌似没有直接的工具可以实现,需要自己编程实现。作者计划以后开一个小系列专门介绍利用Python来进行遥感图像处理,大家若有兴趣可留心关注。
下面主要说的是卷积运算的ENVI实现。
1.打开Convolutions and Morphologh Tool工具。在这个工具中,你可以自定义卷积核的内容,以及卷积核的大小,默认是3×3。Convolutions中提供了很多经典的卷积核,如高通滤波、低通滤波、拉普拉斯、Sobel算子等。
2.选择一个自己想要实现的卷积算法(当然,你也可以自定义卷积核内容),这里以拉普拉斯为例。
3.利用双屏对结果与原始图像进行对比,具体操作为Views>>Two vertical views,打开双屏,然后加载结果图像进去。拉普拉斯卷积的结果可以看到图像边缘得到了突出,图像已不再具有原遥感图像特征,而成为了边缘图像。
参考文献
[1]朱文泉,林文鹏. 遥感数字图像处理——原理与方法[M]. 北京:高等教育出版社,2016:37-39.