나는 일종의 컨볼 루션을 수행하는 최선의 방법을 찾아 내려고 노력합니다.각 이미지에 대해 새 벡터로 컨볼 루션을 수행하는 가장 좋은 방법은 무엇입니까?
저는 3D 매트릭스 I = [N x M x P]와 2D 매트릭스 S = [1 x 1 x K x P]를가집니다. 내 3D 행렬의 각 p 번째 프레임 (3 차원)에 대해 I (:, :, P-K/2 : p + K/2)와 S (1, 1, :, p) 사이의 유효한 컨벌루션을 반환하고 싶습니다. 이것을 할 방법이 보이십니까? 실제로 계산 표준 콘볼 루션 아주 가까이에서의 동작의 개수의 관점에서의 차이점은 I 프레임마다 제 행렬을 변경할 필요가있다
...
이
는 I 현재 방법 사용% 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
를 우리가 표준 회선에 비해 작업의 같은 수의 끝에서, 유일한 차이점은 ... 필터가 각 프레임에 대해 서로 다른 것을
어떤 생각인가?
감사)