ビデオの各フレームから各ピクセルの平均値を計算するために、Matlab で中央値関数 ( http://www.mathworks.com/help/matlab/ref/median.html ) を使用しています。これが私のコードです:
[a,b,c,d] = size(video); //take video's dimensions
background=zeros(a,b,c); //create a matrix for background image
tempR=zeros(1,d); //create template matrices for each channel
tempG=zeros(1,d);
tempB=zeros(1,d);
for i=1:a % for each pixel
for j=1:b
for(k=1:d) //for each frame
tempR(1,k) = video(i,j,1,k); // r channel
tempG(1,k) = video(i,j,2,k); // g channel
tempB(1,k) = video(i,j,3,k); // b channel
end
background(i,j,1) = median(tempR); //calculate median value for each channel
background(i,j,2) = median(tempG);
background(i,j,3) = median(tempB);
end
end
私の質問は次のとおりです。これを行うためのより効率的な方法はありますか? 示されているように、この方法は効率的ではなく、大きなビデオの場合は非常に遅くなります。フレーム、チャンネル、ピクセルごとに for ループを使用するとコストがかかります。より効率的な方法で中央値を計算できますか?