2009-04-18 14 views
0

以下は、編集しようとしたコードの一部です(MATLABのdeconvolucy)。
クラスタイプが一致しないDAMPARに問題があるようです。MATLAB deconvolucy.mの配列型 "DAMPAR"に関する問題

私は(deconvolucy.mのように)許容できる画像を誰かが助けることができますか?

[使用する前に画像を配列に変換する必要がありますか?私はどのように行うのか]

// - コード - //
I =関数imread( 'C:\ Users \ユーザーレム\デスクトップ\ III \ TIFF \ 69_M.000.tif'?「TIF ');
クラス(I)
PSF = fspecial( 'gaussian'、7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I、PSF)、 'gaussian'、0、V);
WT = 0(サイズ(I));
WT(5:終了-4,5:終了-4)= 1;
J1 =デコンボリューション(BlurredNoisy、PSF)。
J2 = deconvlucy(BlurredNoisy、PSF、20、sqrt(V)); J3 =デコンボリューション(BlurredNoisy、PSF、20、sqrt(V)、WT)。
// ...
...
... //

??? 316での==> deconvlucy> parse_inputsを使用しているエラー
関数deconvlucyでは、DAMPARは入力イメージと同じクラスでなければなりません。 ==で

エラー> 102
でdeconvlucy [J、PSF、NUMIT、DAMPAR、READOUT、重量、SUBSMPL、sizeI、classI、numNSdim] = ...

答えて

2

あなたはイメージで読んだことがありますimreadを使ってだから、それはおそらくuint8として入っていますか? imreadの助けを借りて、結果はTIFF画像のための何らかの順序の整数になると言います。返されたとき、私はどんなクラスでしたか?

次に画像をフィルタリングしました。 imfilterは整数入力イメージの整数イメージを返します。

次に、ノイズを追加するには、imnoiseを使用します。 imnoiseのオンラインヘルプからは、イメージを内部的に[0,1](倍数)に変換し、ガウスノイズを加えて整数出力に変換します。だからあなたのぼやけた画像は、整数、おそらくuint8要素でなければなりません。

fspecialのヘルプでは、PSF用の倍精度出力が返されます。

デコンボリューションには引数が2つしかないので、DAMPARのデフォルト値を使用しています。 (ここでは失敗してはならないと主張するだろう。デコンボリュシティーの著者は、入力とタイプが一致したデフォルト値を提示していないようだ。)IPTやdeconvolucyについて十分に分かっていない2つの異なる呼び出しを使用して、このコードを再実行することをお勧めします。

J1 = deconvlucy(BlurredNoisy,PSF,[],0); 

J1 = deconvlucy(BlurredNoisy,PSF,[],uint8(0)); 

これらの呼び出しのいずれかが問題を解決しなかった場合、それはdeconvolucyは、画像、BlurredNoisyのための二重入力を期待していることを示唆しています。デコンボリューションのためのオンラインヘルプはここでは具体的ではありませんでした。それは、私がN次元配列またはセル配列であるかもしれないことだけを言います。さらにヘルプの上で、結果を数値配列と呼びます。したがって、デコンボリューションのイメージは浮動小数点イメージであると考えられます。

私はおそらく画像を[0,1]に倍率変換しようとします。しかしそれはただの推測です。そうですね、

BlurredNoisy = double(BlurredNoisy)/255; 

これはあなたの画像が元々クラスのuint8であったことを前提としています。