1

Mohiy M. Hadhoud の論文によると、2 次元 LMS (TDLMS) 適応アルゴリズムを使用して画像背景推定を実現する Matlab プログラムを作成しました。重み行列 W、推定出力行列 Y、誤差行列 e をゼロで開始しました。サポート領域は 5*5 (ウィンドウ サイズ) です。行列 D は目的の出力であり、Y との差が誤差行列 (e) として定義されます。しかし、プログラムを実行した後、重み W と推定出力 Y はすべてゼロです。W と Y が最初からすべて 0 であるためか、プログラムに問題があるためかはわかりません。これが私のコードです:

clear; close all;
X=imread('noisySea.jpg');
[M N]=size(X);
Ns=5; % 5*5 support region
u=5*10^(-8); % step size
Y=zeros(M,N); % predicted image
Y(1:Ns,1:Ns)=X(1:Ns,1:Ns);
D=zeros(M,N);
D(2:M,2:N)=X(2:M,2:N); % D is shifted version of X
e=zeros(M,N); % error matrix
W=zeros(Ns,Ns); % weight matrix
for m=1+floor(Ns/2):M-floor(Ns/2)
    for n=1+floor(Ns/2):N-floor(Ns/2)
        for l=1:Ns
            for k=1:Ns
                Y(m,n)=Y(m,n)+W(l,k)*X(m-floor(Ns/2)+l-1,n-floor(Ns/2)+k-1);
                e(m,n)=D(m,n)-Y(m,n);
                W(l,k)=W(l,k)+u*e(m,n)*X(m-floor(Ns/2)+l-1,n-floor(Ns/2)+k-1);
            end
        end
    end
end
imshow(Y);

内側の 2 つの反復は点 (m,n) での Y の値を計算するために使用され、外側の 2 つの反復は画像全体をウォークスルーします。m=1+floor(Ns/2) などのコードが頻繁に使用されます。これは、重み行列 (5*5) が画像の端に収まらないためです。重み行列 (またはマスク) にすべての隣接ピクセルを含めることができるピクセルのみがフィルター処理されます。

4

3 に答える 3

0

最初に目にする問題は、結果、エラー マトリックス、および重みに対する更新が実際には更新されないことです。最初のステップは、X を double にキャストすることです。そのため、2 行目を次のように変更します。

X = cast(imread('noisySea.jpg'), 'double');

これを行う前に、少し調べて、何が起こっているのかを理解してください。たとえば、X の内容に関係なく、次のようになります。

u*e(m,n)*X(m-floor(Ns/2)+l-1,n-floor(Ns/2)+k-1)です0

少し分解して、次を見てください。

u*e(m,n) を実行し、適切に動作していることを確認します。

X への参照を取り込むと、「小さい数」*「大きい数」が 0 になるまで精度が低下します。

于 2013-04-30T14:21:16.750 に答える
0

OK、あといくつか。1988 年 5 月号の IEEE Transactions on Circuits and Systems, Vol 35. No. 5 に掲載された Hadhoud と Thomas の論文を参照していると思います。少なくともあと 2、3 の誤りが見られますが、数分かけて論文を読んだだけです。 .

D(2:M,2:N)=X(2:M,2:N); % D is shifted version of X

ここで実際にシフトを行っているわけではありません。論文では、X 方向と Y 方向に 1 ピクセルずつシフトしています。

D(2:M,2:N)=X(1:M-1,1:N-1); % D is a shiftier version of X

また、重み行列 0 から始まる元のイメージの 10 行にわたってアルゴリズムを実行することにより、重み W を初期化します。

また、あなたの体重更新が間違っているとも思います (まだ 100% 確実ではありません)。重みは継続的に更新され、アルゴリズムに奇妙な汚れが発生します。論文を簡単に読んだところ、重みは n ループが繰り返されるときにのみ更新されます。重みは、合計が 1 になるようにスケーリングされ、ローカル平均値が保持されます。

于 2013-04-30T23:25:36.947 に答える