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) が画像の端に収まらないためです。重み行列 (またはマスク) にすべての隣接ピクセルを含めることができるピクセルのみがフィルター処理されます。