1

ウェーブレット変換を使用して画像をフィルター処理しようとしています。ここから関数を使用しようとしmdwtました: http://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 toError 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 = ...

この関数には2つの出力パラメーターがあります。

[y,L] = ...

関数を使用するときは、両方を割り当てる必要があります。

于 2012-06-11T19:56:11.300 に答える