计算每个像素的绝对差值之和

时间:2016-06-04 13:45:07

标签: matlab signal-processing h.264 h.265

我正在尝试实施一份研究论文,以验证我的结果。我已经分享了代码(由我编写)和研究论文中给出的过程描述。不幸的是,我的结果与他的结果有点不同,这意味着我做错了什么。请指引我朝正确的方向前进。

代码

  fileName = 'mobile_cif.yuv';
    width=352;
    height=288;
    numFrames=30;
    SAD=0;

    %for loop to traverse & process from frame '1' to 'last' frames
    for t = 1 : numFrames
    if t < numFrames %(Need to traverse to n-1 frames)
    result=loadFileYuv(fileName,width,height,t);
    currFrame = result.cdata;    %reading Current frame
    result=loadFileYuv(fileName,width,height,t+1);
    nextFrame = result.cdata;    %reading Next frame
    % First, take the absolute value of the difference at each pixel
    myAbsDiff = abs(double(currFrame) - double(nextFrame));
    % Then, sum over all pixels
    out = sum(myAbsDiff(:));
    out=out/(width*height); %(Taking Average with respect to pixel)
    out=out/64;%(Dividing By Block size to normalize)
    disp(out);
    SAD=SAD+out;
    else
        continue;
    end

    end
    disp(SAD/numFrames);  %(Taking Average with respect to Frames)

流程说明

绝对差值和(SAD)是用于块比较和移动矢量计算的简单视频质量度量。每帧被分成小块(即8×8像素),并且对于一帧中的每个块,找到下一帧中最相似(最小SAD)块。这个最小绝对差值之和被指定为每帧中每个块的SAD(直到n-1帧)。然后对每个帧和剪辑中的所有帧平均所有SAD值,并除以块区域,以进行标准化。

0 个答案:

没有答案