私は一種の畳み込みを実行する最良の方法を見つけようとします。各画像の新しいベクトルを使って畳み込みを行う最も良い方法は?
私は3D行列I = [N x M x P]と2次元行列S = [1 x 1 x K x P]を持っています。私の3Dマトリックスの各p番目のフレーム(3次元)に対して、I(:,:、p-K/2:p + K/2)とS(1,1、:、p)の間の有効な畳み込みを返したい。これを行う方法がありますか?実際には、演算標準畳み込みに非常に近いの動作の数の点で、違いは、私は、各フレームの第2の行列を変更する必要があることである
...
これは、私は現在の方法であります使用:我々は、標準的な畳み込み演算よりも数が同じに終わり
% I = 3D matrix [N x M x P]
% S = Filter [1 x 1 x K x P] (K is an odd number)
% OUT = Result
[N, M, P] = size(I); % Data size
K = size(S, 3); % Filter length
win = (K-1)/2 ; % Window
OUT = zeros(size(I)); % Pre-allocation
for p = win+1:P-win
OUT(:, :, p) = convn(I(:, :, p-win:p+win), S(1, 1, :, p), 'valid'); % Perform convolution
end
、唯一の違いは、フィルタは、フレームごとに異なることである...
任意のアイデア?
感謝;)