1

我正在尝试使用小波变换过滤图像。我尝试使用此处的功能:http mdwt: //www.mathworks.com/matlabcentral/fileexchange/6391-wavelets-based-denoising/content/mdwt.m,以及此链接中的其他功能,如下所示:

img = imread('A10T_1.jpg');       
h = daubcqf(4,'min');
L = 1;
y = mdwt(img,h,L);

问题是在最后一行我得到 : One or more output arguments not assigned during call to,Error in => y = mdwt(img,h,L);

哪里有问题?该函数mdwt仅包含声明,仅此而已,我可以看到这就是问题所在。谁能帮我解决这个问题?或者还有其他方法可以在不使用这些函数的情况下使用小波变换过滤图像吗?

提前致谢。

编辑 :

现在我尝试使用以下代码显示图像去噪使用小波变换:

RGB = imread('small.jpg');
 J = imnoise(RGB,'salt & pepper',0.05);h = daubcqf(6);  
      noisyLena = J;
      figure; colormap(gray); imagesc(RGB); title('Original Image');
       figure; colormap(gray); imagesc(noisyLena); title('Noisy Image'); 
%       Denoise lena with the default method based on the DWT
      [denoisedLena,xn,opt1] = denoise(noisyLena,h);
      figure; colormap(gray); imagesc(denoisedLena); title('denoised Image');  

但我得到了错误

??? The matrix row dimension must be of size m*2^(L)

Error in ==> denoise at 171
  [xd , LL]= mdwt(double(i),h,L);

Error in ==> wavelet_start at 20
      [denoisedLena,xn,opt1] = denoise(noisyLena,h);

其中去噪函数是这样的:http: //www.mathworks.com/matlabcentral/fileexchange/6391-wavelets-based-denoising/content/denoise.m

哪里有问题 ?

4

2 回答 2

2

该集合中的许多文件都是用 C 编写的 MEX 文件。M 文件仅用于文档,但由于您没有编译 MEX 文件,MATLAB 正在尝试为代码本身运行 M 文件。在运行代码之前,您需要为您的平台构建它们。

尝试阅读提供的 INSTALL.txt 文档,这相当于在该目录中运行“编译”。

您的下一个挑战将是此代码过时,并且您可能与较新的 MATLAB 版本存在兼容性问题。但是试试看,看看会发生什么。

于 2012-06-11T19:18:22.970 回答
0

您尝试使用的功能定义为

function [y,L] = mdwt(x,h,L);

当您在代码中调用该函数时,您只需分配第一个输出参数

y = ...

该函数有两个输出参数,

[y,L] = ...

使用该功能时,您必须同时分配两者。

于 2012-06-11T19:56:11.300 回答