1. 使用背景
数字图像的噪声主要产生于获取、传输图像的过程中。在获取图像的过程中,摄像机 组件的运行情况受各种客观因素的影响,包括图像拍摄的环境条件和摄像机的传感元器件 质量在内都有可能会对图像产生噪声影响川。
在传输图像的过程中,传输介质所遇到的干 扰也会引起图像噪声,如通过无线电网络传输的图像可能因为光或其他大气因素被加入噪 声信号。图像去噪是指减少数字图像中噪声的过程,广泛应用于图像处理领域的预处理过 程,去噪效果的好坏会直接影响后续的图像处理效果,如图像分割、图像模式识别等。
数学形态学以图像的形态特征为研究对象,通过设计一套独特的数字图像处理方法和 理论来描述图像的基本特征和结构,通过引入集合的概念来描述图像中元素与元素、部分 与部分的关系运算。因此,数学形态学的运算由基础的集合运算(并、交、补等)来定义, 并且所有的图像矩阵都能够方便地转换为集合。随着集合理论研究的不断深入和实际应用 的拓展,图像形态学处理也在图像分析、模式识别等领域有着重要的应用。
2. 理论基础
2.1 图像去噪方法
数字图像在获取、传输的过程中都可能会受到噪声的污染,常见的噪声主要有高斯噪 声和椒盐噪声。其中,高斯噪声主要是由摄像机传感器元器件内部产生的,椒盐噪声主要 是由图像切割所产生的黑白相间的亮暗点噪声,“椒”表示黑色噪声,“盐”表示白色噪声。
数字图像去噪也可以分为空域和频域来完成。空域图像去噪常用的有均值滤波算法和 中值滤波算法,主要是对图像像素做邻域的运算来达到去噪效果。频域图像去噪首先是对 数字图像进行某种变换,将其从空域转换到频域,然后对频域中的变换系数进行处理,最 后对图像进行反变换,将其从频域转换到空域来达到去噪的效果。其中,对图像进行空域 和频域互相转换的方法有很多,常用的有傅里叶变换、小波变换等。
数学形态学图像处理通过采用具有--定形态的结构元素去度量和提取图像中的对应 形状,借助于集合理论来达到对图像进行分析和识别的目标,该算法具有以下特征
1.图像信息的保持
在图像形态学处理中,可以通过已有目标的几何特征信息来选择基于形态学的形态滤波器,这样在进行处理时既可以有效地进行滤波,又可以保持图像中的原有信息。
2.图像边缘的提取
基于数学形态学的理论进行处理,可以在-定程度上避免噪声的干扰,相对于微分算 子的技术而言具有较高的稳定性。形态学技术提取的边缘也比较光滑,更能体现细节信息。
3.图像骨架的提取
基于数学形态学进行骨架提取,可以充分利用集合运算的优点,避免出现大量的断点, 骨架也较为连续。
4.图像处理的效率
基于数学形态学进行图像处理,可以方便地应用并行处理的技术来进行集合运算,具 有效率高、易于硬件实现的特点。
3. 程序设计
数字图像在进行数学形态滤波去噪时,根据噪声特点可以尝试采用维数由小到大的结 构元素来进行处理,进而达到滤除不同噪声的目的。采用数学形态学的多结构元素,可以 更多地保持数字图像的几何特征。因此,选择构建串联滤波器来进行图像滤波,就是将同 一形状的结构元素按维数从小到大的顺序来对图像进行滤波,这类似于串联电路的设计流 程(见图2-1)。
同理,可以将上面不同形状的结构元素所构成的串联滤波器进行并联,结合自适应权 值算法来构建串、并复合滤波器4),如图2-2所示。
为了简化算法实验步骤,在具体实现过程中,我们可以选择将串联处理结果与原始图 像进行差异值计算的方式来作为权值向量,再通过对串联结果加权求和的方式来进行计 算。
因此,为了对数字图像进行数学形态学滤波器级联滤波去噪的仿真,本实验选择- -幅 人脸图像,加入泊松噪声,通过构建不同的串联滤波器、并联滤波器来进行滤波去噪实验, 最后通过计算并绘制PSNR值曲线来显示去噪效果,主函数代码如下所示。
clc; clear all; close all; filename = fullfile(pwd, 'images/im.jpg'); Img = imread(filename); if ndims(Img) == 3 I = rgb2gray(Img); else I = Img; end Ig = imnoise(I,'poisson'); s = GetStrelList(); e = ErodeList(Ig, s); f = GetRateList(Ig, e); Igo = GetRemoveResult(f, e); figure; subplot(1, 2, 1); imshow(I, []); title('原图像'); subplot(1, 2, 2); imshow(Ig, []); title('噪声图像'); figure; subplot(2, 2, 1); imshow(e.eroded_co12, []); title('串联1处理结果'); subplot(2, 2, 2); imshow(e.eroded_co22, []); title('串联2处理结果'); subplot(2, 2, 3); imshow(e.eroded_co32, []); title('串联3处理结果'); subplot(2, 2, 4); imshow(e.eroded_co42, []); title('串联4处理结果'); figure; subplot(1, 2, 1); imshow(Ig, []); title('噪声图像'); subplot(1, 2, 2); imshow(Igo, []); title('并联去噪图像'); psnr1 = PSNR(I, e.eroded_co12); psnr2 = PSNR(I, e.eroded_co22); psnr3 = PSNR(I, e.eroded_co32); psnr4 = PSNR(I, e.eroded_co42); psnr5 = PSNR(I, Igo); psnr_list = [psnr1 psnr2 psnr3 psnr4 psnr5]; figure; plot(1:5, psnr_list, 'r+-'); axis([0 6 18 24]); set(gca, 'XTick', 0:6, 'XTickLabel', {'', '串联1', '串联2', '串联3', ... '串联4', '并联', ''}); grid on; title('PSNR曲线比较');
获取算子函数GetStrelList 将返回指定的线型算子,通过结构体成员的方式整合不同 长度、角度的线型算子,具体代码如下所示。
function s = GetStrelList() s.co11 = strel('line',5,-45); s.co12 = strel('line',7,-45); s.co21 = strel('line',5,45); s.co22 = strel('line',7,45); s.co31 = strel('line',3,90); s.co32 = strel('line',5,90); s.co41 = strel('line',3,0); s.co42 = strel('line',5,0);
图像串联去噪函数ErodeList将根据输入的滤波算子,通过imerode逐个处理,并将结 果整合到结构体中进行返回,具体代码如下所示。
function e = ErodeList(Ig, s) e.eroded_co11 = imerode(Ig,s.co11); e.eroded_co12 = imerode(e.eroded_co11,s.co12); e.eroded_co21 = imerode(Ig,s.co21); e.eroded_co22 = imerode(e.eroded_co21,s.co22); e.eroded_co31 = imerode(Ig,s.co31); e.eroded_co32 = imerode(e.eroded_co31,s.co32); e.eroded_co41 = imerode(Ig,s.co41); e.eroded_co42 = imerode(e.eroded_co41,s.co42);
图像权值计算函数GetRateList将根据串联结果与原始图像的差异程度进行计算,图像 并联去噪函数GetRemoveResult将根据输入的权值向量、串联结果,通过加权求和的方式 来进行处理,具体代码如下所示。.
function Igo = GetRemoveResult(f, e) Igo = f.df1/f.df*double(e.eroded_co12)+f.df2/f.df*double(e.eroded_co22)+... f.df3/f.df*double(e.eroded_co32)+f.df4/f.df*double(e.eroded_co42); Igo = mat2gray(Igo);
为了对处理结果进行比较,采用计算PSNR值的方式将串联、并联处理结果与原始图 像进行计算,并绘制PSNR值曲线来进行分析。具体代码如下所示。
function S = PSNR(s,t) [m, n, ~]=size(s); s = im2uint8(mat2gray(s)); t = im2uint8(mat2gray(t)); s = double(s); t = double(t); sd = 0; mi = m*n*max(max(s.^2)); for u = 1:m for v = 1:n sd = sd+(s(u,v)-t(u,v))^2; end end if sd == 0 sd = 1; end S = mi/sd; S = 10*log10(S);
4. 结果展示
4.1 原图与噪声图
4.2 串联结果图
4.3 并联去噪图
4.4 PRSN比较图
实验结果表明,如果仅通过串联来进行滤波去噪,则往往具有一定的局限性,结果图 像中也保留着较为明显的噪声。通过并联滤波器进行滤波去噪得到的结果PSNR值更高, 而且结果图像在视觉效果上要比只进行串联滤波器去噪得到的结果更为理想。
5.拓展
数学形态学的基本理论和方法在医学成像、显微镜学、生物学、机器人视觉、自动字 符读取、金相学、地质学、冶金学、遥感技术等诸多领域都取得了非常成功的应用。
本案例首先详细描述了数学形态学的膨胀、腐蚀、开启、闭合四大运算,指出开启和 闭合是由膨胀和腐蚀运算组合使用而得出的算法,并指出开运算具有使图像目标形状变 小,闭运算具有使图像目标形状变大的特点。
根据集合学的相关理论,开闭运算具有等幂 性,这意味着一次滤波就能把结构元素所匹配到的所有噪声进行滤除。然后介绍了滤波器 的设计,形态滤波器是由以集合论为基础的开、闭运算组成的,它们具有不模糊图像边界 的特性,采用形态算子对图像进行处理便构成了数学形态学滤波器。最后介绍了不同形状 和维数的滤波如何进行串联、并联来构建级联滤波器,并对其进行了仿真实验。
实验结果表明,采用并联来进行滤波器级联,对噪声图像进行形态学滤波去噪,能取得较为明显的效果。将形态学滤波器通过串联、并联来构建级联滤波器的方式应用于不同的图像处理过 程中,在一定程度上能够影响普通滤波的效果,这也是一个研究方向。