我在 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 循环会产生成本。我可以以更有效的方式计算中值吗?