【问题标题】:Matlab creating median on entire movie (Avoid memory issue)Matlab 在整个电影上创建中位数(避免内存问题)
【发布时间】:2013-10-28 04:08:52
【问题描述】:

所以我的电脑不是太强..至少可以说.. 然而,我想在整个特定电影中创建所有像素的中值。 我能够为内存中的一系列帧做到这一点..但我不确定每次阅读更多帧时如何做到这一点......我如何给出中间权重? (就像我每次会读取 100 帧但中值必须根据当前中值 * 100 * 我读取的次数 + 100 * 当前图像来更新..) 我有这个代码:

mov = VideoReader('MVI_3478.MOV');
seq = read(mov, [1 frames]);
% create background
channels = size(seq, 3);
height = size(seq,1);
width = size(seq,2);
BG = zeros(height, width, channels, 'uint8');
for c = 1:channels
    for y = 1:height
        for x = 1:width
            BG(y,x,c) = median(seq(y,x,c,:));
        end
    end
end

我的问题是,鉴于我将在所有内容之上添加另一个循环,如何给出中间权重?

谢谢!

【问题讨论】:

    标签: matlab median background-subtraction


    【解决方案1】:

    不可能以这种方式计算中位数。所需信息丢失。

    例子:

    median([1,2,3,4,5,6,7]) is 4
    median([1,2,3,3,5,6,7]) is 3
    median([1,2,3])=2
    median([4,5,6,7])=5
    median([3,5,6,7])=5
    

    因此,对于两个子序列,您会得到部分结果 2 和 5,而中位数在一种情况下为 3,在另一种情况下为 4。

    我看到的唯一可能性是一些二进制搜索方法:

    smaller=0
    larger=0
    equal=0
    el=numel(s)
    while(smaller>=el/2||larger>el/2||equal==0)
        guess=..
        smaller=0
        larger=0
        equal=0
        for c = 1:channels
            for y = 1:height
                for x = 1:width
                    s=seq(y,x,c,:)
                    smaller=smaller+numel(s(s<guess);
                    larger=larger+numel(s(s>guess);
                    equal=equal+numel(s(s=guess);
                end
            end
        end
    end
    

    这只是一个草图,代码必须完成。猜测必须填充一些二分搜索策略。

    【讨论】:

      【解决方案2】:

      在大量帧的情况下,以渐进方式计算中位数可能会出现问题,因为中位数是全局顺序统计量并且没有结构。经典方法是利用我们正在处理灰度 8 位值 (256) 的事实。因此,对于任何像素 p(x,y,n),需要维护一个具有 256 个 bin 的直方图,每个 bin 计算 n 个值(因为有 n 个帧)。

      因此,在每次更新时,我们都会:

      value = p(x,y,i); %for the ith frame
      H(x,y,value) = H(x,y,value) + 1; %updating your histogram, 
      

      然后按频率对直方图进行排序并选择中间值:https://math.stackexchange.com/questions/202302/how-to-calculate-median-and-standard-deviation-from-histogram

      此计数器的大小可以根据视频 N = log2(n) 位中的帧数来确定。中值搜索现在被简化了,因为它在直方图中进行了恒定时间搜索。这在连接许多直方图时也很有帮助,因为搜索保持恒定时间搜索独立。 因此,最终直方图的总大小将是 XYN 位,其中 X 和 Y 是图像的尺寸。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 2018-10-07
        • 1970-01-01
        相关资源
        最近更新 更多