目录
NSCT(Nonsubsampled Contourlet Transform)工具箱是一个用于图像处理的软件包,它实现了非下采样轮廓波变换。NSCT是一种多尺度、多方向的图像分析方法,特别适合于处理边缘和纹理丰富的图像数据。
1.NSCT变换原理
非下采样轮廓波变换(NSCT)是一种多尺度、多方向的图像变换技术,它在图像分析、特征提取和模式识别等领域有着广泛的应用。NSCT结合了非下采样拉普拉斯金字塔变换(NSLP)和轮廓波变换(Contourlet Transform),能够有效捕捉图像中的边缘和纹理信息。
非下采样拉普拉斯金字塔变换(NSLP)是一种多尺度分解方法,它使用高通和低通滤波器对图像进行分解,但不进行下采样操作,以避免因下采样引入的方向混叠问题。NSCT变换是在Contourlet变换的基础上提出的,不仅具有多分辨率、局部化和多方向等特点,还具有平移不变性,从而克服了Contourlet变换存在的缺陷[10]。NSCT变换在结构上可以分为非下采样金字塔滤波器组(NSPFB)和非下采样方向滤波器组(NSDFB)两部分。其结构如下图:
通过àtrous算法的有限滤波器的内插,实现SAR图像的分解。从而得到与原SAR图像相同像素大小的一个低频系数和多个高频系数,即:
而NSDFB在结构上为一个双通道扇形滤波器。为了获得更高精确的分解,采用方向滤波器组,对下一级滤波器采用基于梅花矩阵的上采样。其结构如下图所示:
从图的结构图可知,其插值扇形滤波器有棋盘状的频域支撑,和前一级的滤波器结合在一起实现四个方向的频域分解。通过该滤波器组,可以将频域分解为多个楔形频率区域。其图像的NSCT分解过程可由如下公式表示:
其中aJ为低频子带,bj,k为j尺度,k方向的高频子带,J为NSPFB的分解层次,lj为第j层的NSDFB的分解层次。对NSPFB分解的低频部分进行多尺度分解能够得到点奇异,捕获图像轮廓。
NSCT变换的流程可以表示为:
1.对原始图像进行NST变换,得到一系列的子带系数。
2.对于每个子带,使用SCT变换将其进一步分解成多个方向子带。
3.对于每个方向子带,使用相应的方向滤波器进行滤波,得到一系列的方向子带系数。将所有的子带系数和方向子带系数合并成一个特征向量,作为该尺度下图像的特征表示。
2.NSCT工具箱的配置
一个Matlab的扩展工具包,作者是Arthur Cunha,可在MathWorks官网下载,地址:Nonsubsampled Contourlet Toolbox - File Exchange - MATLAB Central。
下载NSCT工具箱,我们可以看到有如下文件内容:
在运行时,我们首先需要对里面的c文件(“atrousc.c;zconv2.c;zconv2S.c”)进行编译,具体操作如下:
如上图所示,在matlab的当前文件夹窗口,定位到NSCT工具箱,然后在命令窗口输入mex atrouse.c,然后会显示编译成功。
另外2个C文件也同样操作:
mex atrousc.c
mex zconv2.c
mex zconv2S.c
3.NSCT工具箱的使用
在matlab中,首先加载NSCT的路径:(nsct_toolbox为NSCT工具箱文件夹名称)
addpath 'nsct_toolbox\'
NSCT变换和逆变换的调用方式如下:
y_nsctdec = nsctdec(img,[3,3,3],'dmaxflat7','maxflat');
y_nsctrec = nsctrec(y_nsctdec,'dmaxflat7','maxflat');
其中img表示图片变量名称。