非局部中值滤波器 - 类型' double'的输入参数的未定义函数。

时间:2014-10-01 19:43:31

标签: matlab image-processing filtering

我正在尝试使用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');

1 个答案:

答案 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

我现在无法测试,但应该这样做。