我正在尝试使用here中的非局部均值滤波函数来清理一些图像。当我运行代码时,我收到错误Undefined function 'image2vectors_double' for input arguments of type 'double'
。你对如何解决这个问题有什么建议吗?我使用path
将带有非局部中值滤波器代码的文件夹添加到Matlab路径中,我还将文件复制到我有脚本的文件夹中。
以下是代码:
IM(m,:,:) = fitsread(Image.fits);
Options.kernelratio=4;
Options.windowratio=4;
Options.verbose=true;
J=NLMF(IM,Options);
figure,
subplot(1,2,1),imshow(IM); title('Noisy image')
subplot(1,2,2),imshow(J); title('NL-means image');
答案 0 :(得分:0)
那是因为这个函数是一个.c文件,你需要编译才能与Matlab一起使用,以及这些函数:
vectors_nlmeans_single.c
image2vectors_single.c
vectors_nlmeans_double.c
如果仔细查看NLMF.m文件的注释部分,您会看到:
% First Compile c-code!!!!, with :
% mex vectors_nlmeans_single.c -v
% mex image2vectors_single.c -v
% mex vectors_nlmeans_double.c -v
% mex image2vectors_double.c -v
我现在无法测试,但应该这样做。