2.3 程序实现

数字图像在进行数学形态学滤波去噪时,根据噪声特点可以尝试采用维数由小到大的结构元素进行处理,进而达到滤除不同噪声的目的。采用数学形态学的多结构元素可以更多地保持数字图像的几何特征。因此,选择构建串联滤波器进行图像滤波,就是将同一形状的结构元素按维数从小到大对图像进行滤波,这类似于串联电路的设计流程(见图2-1)。

图2-1 同一形状的结构元素的串联滤波

同理,可以将上面不同形状的结构元素所构成的串联滤波器进行并联,结合自适应权值算法来构建串、并联复合滤波器,如图2-2所示。

图2-2 串、并联复合滤波器

如图2-2所示,假设输入图像为fx),经某种形状的结构元素的串形滤波结果为 fix),i=1,2,…,n,则输出图像为Fx)。其中,结构元素通过公式(2.7)所示的自适应算法确定权值为α1α2,…,αn,则:

为了简化算法实验步骤,在具体实现过程中,我们可以选择将串联处理结果与原始图像进行差异值计算的方式来作为权值向量,再通过对串联结果加权求和的方式进行计算。因此,为了对数字图像进行数学形态学滤波器级联滤波去噪的仿真,本实验选择一幅人脸图像,加入泊松噪声,通过构建不同的串联滤波器、并联滤波器进行滤波去噪实验,最后通过计算并绘制PSNR值曲线来显示去噪效果。主函数代码如下:

在获取算子函数GetStrelList时将返回指定的线型算子,通过结构体成员的方式整合不同长度、角度的线型算子。核心代码如下:

图像串联去噪函数ErodeList将根据输入的滤波算子,通过imerode逐个处理,并将结果整合到结构体中进行返回。核心代码如下:

图像权值计算函数GetRateList将根据串联结果与原始图像的差异程度进行计算,图像并联去噪函数GetRemoveResult将根据输入的权值向量、串联结果,通过加权求和的方式进行处理。核心代码如下:

为了对处理结果进行比较,这里采用计算PSNR值的方式将串联、并联处理结果与原始图像进行计算,并绘制PSNR值曲线进行分析。核心代码如下:

实验去噪结果及PSNR值曲线比较如图2-3~图2-6所示。

图2-3 原图及加噪图像

图2-4 串联去噪结果

图2-5 并联去噪结果

图2-6 实验去噪结果的PSNR值曲线比较

实验结果表明,如果仅通过串联滤波器去噪,则往往具有一定的局限性,在结果图像中也保留着较为明显的噪声。通过并联滤波器进行滤波去噪得到的结果中PSNR值更高,而且结果图像在视觉效果上要比只进行串联滤波器去噪更为理想。