前言:工作原因需要玩一下非下采样轮廓波变换(Nonsubsampled contourlet transform, NSCT),记录一下在Matlab环境下安装扩展工具包的步骤。
1.NSCT_toolbox
一个Matlab的扩展工具包,作者是Arthur Cunha,可在MathWorks官网下载,地址:Nonsubsampled Contourlet Toolbox - File Exchange - MATLAB Central。需要注册账号下载,不想注册账号的话,这里分享一下百度网盘的链接。
百度网盘:https://pan.baidu.com/s/1TTYrz-krZkfhXpI6nwaSBw
提取码:29su
--------------------------------------------------------------------------------------------------------------------
下载完后,工具包文件夹内容如下图所示:
注意:工具包里有3个c文件,分别是“atrousc.c;zconv2.c;zconv2S.c”,这3个文件需要mex编译后才能在Matlab中调用。
2.工具包配置
首先将工具包文件夹复制到Matlab安装目录下的toolbox文件夹下(也可以不复制,建议复制的理由是:工具包都放在规定的位置比较便于管理),安装目录因人而异,比如:C:\Program Files\MATLAB\R2023a\toolbox\,这个根据自己情况找到相应文件夹即可,如下图。
进入Matlab软件的“主页”--->“设置路径”下,进行路径设置,如下图。
将对应nsct_toolbox文件夹添加,保存后关闭。
继续点击“预设项”,选择“常规”,更新一下工具箱路径缓存。
然后退出Matlab,再右键管理员权限重新打开Matlab软件(如果已经是管理员权限了则忽略)。
3.编译toolbox的c文件
管理员权限再次打开Matlab后,左侧工作区进入nsct_toolbox目录,在command命令窗口依次键入:
mex atrousc.c
mex zconv2.c
mex zconv2S.c
分别等待编译完成,如下图。
至此,该工具箱基本配置完成。这里可能大家的VC编译器不同,输出的提示信息也会对应不同。
4.运行测试demo
打开工具箱文件夹内的“dfbdecdemo.m”文件,运行测试。
注意三点:
1.demo中有两个函数名称多写了s字母,需要手动更改一下,具体的两个函数是coeffs = nssdfbdec( double(im), dfilter, nlevels )和imrec = nssdfbrec( coeffs, dfilter ) ,分别修改为coeffs = nsdfbdec( double(im), dfilter, nlevels )和imrec = nsdfbrec( coeffs, dfilter );
2.输入函数的变量“im”是图像,需要加载,可在nsdfbdec函数前加一句im=imread("zoneplate.png");
3.demo中如果要看运行的图像,将“% Show the reconstruction image and the original image”后的if 0修改为if 1即可。
调整后保存运行,得到如下结果:
>> dfbdecdemo
4
dmaxflat7
The mean square error is: 0.000000
说明配置成功。后续可调用工具箱的nsctdec()和nsctrec()分别进行NSCT的分解与重建,工具箱主要调用的函数如下:
The main functions are the following: nsctdec, nsctrec, nsdfbdec, nsdfbrec.
+ nsctdec: Nonsubsampled contourlet decomposition.
+ nsctrec: Nonsubsampled contourlet reconstruction.
+ nsdfbdec: Nonsubsampled directional filter bank decomposition.
+ nsdfbrec: Nonsubsampled directional filter bank reconstruction.
完毕!Enjoy。