Search code examples
hevc

What is the definition of "Error surface" in HEVC


I'm reading a paper about sub-pixel motion estimation optimization algorithm in HEVC; while all the proposed concepts are based on "Modeling the Error Surface" in the search range(search window)during algorithm;

Does anybody by any chance know the definition of "Error Surface" here?

And what I'm lookin for is definitely not this: Freeform surface modelling.

Thanks.

By the way, the paper's link is here.


Solution

  • The picture below (from the Geneva meeting in January this year) shows the

    Integer samples (shaded blocks with upper-case letters) and fractional sample positions (un-shaded blocks with lower-case letters) for quarter sample luma interpolation

    enter image description here

    The following calculations are needed for the quarter-sample-interpolation:

    a0,0 = ( −A−3,0 + 4 * A−2,0 − 10 * A−1,0 + 58 * A0,0 +   17 * A1,0 − 5 * A2,0 + A3,0 )  >>  shift1  (8‑292)
    b0,0 = ( −A−3,0 + 4 * A−2,0 − 11 * A−1,0 + 40 * A0,0 +   40 * A1,0 − 11 * A2,0 + 4 * A3,0 − A4,0 )  >>  shift1  (8‑293)
    c0,0 = ( A−2,0 − 5 * A−1,0 + 17 * A0,0 +     58 * A1,0 − 10 * A2,0 + 4 * A3,0 − A4,0 )  >>  shift1  (8‑294)
    d0,0 = ( −A0,−3 + 4 * A0,−2 − 10 * A0,−1 + 58 * A0,0 +   17 * A0,1 − 5 * A0,2 + A0,3 )  >>  shift1  (8‑295)
    h0,0 = ( −A0,−3 + 4 * A0,−2 − 11 * A0,−1 + 40 * A0,0 +   40 * A0,1 − 11 * A0,2 + 4 * A0,3 − A0,4 )  >>  shift1  (8‑296)
    n0,0 = ( A0,−2 − 5 * A0,−1 + 17 * A0,0 +     58 * A0,1 − 10 * A0,2 + 4 * A0,3 − A0,4 )  >>  shift1  (8‑297)
    
    –   The samples labelled e0,0, i0,0, p0,0, f0,0, j0,0, q0,0, g0,0, k0,0, and r0,0
        are derived by applying an 8-tap filter to the samples a0,i, b0,i and c0,i with
        i = −3..4 in the vertical direction as follows:
    
    e0,0 = ( −a0,−3 + 4 * a0,−2 − 10 * a0,−1 + 58 * a0,0 +   17 * a0,1 − 5 * a0,2 + a0,3 )  >>  shift2  (8‑298)
    i0,0 = ( −a0,−3 + 4 * a0,−2 − 11 * a0,−1 + 40 * a0,0 +   40 * a0,1 − 11 * a0,2 + 4 * a0,3 − a0,4 )  >>  shift2  (8‑299)
    p0,0 = ( a0,−2 − 5 * a0,−1 + 17 * a0,0 +     58 * a0,1 − 10 * a0,2 + 4 * a0,3 − a0,4 )  >>  shift2  (8‑300)
    f0,0 = ( −b0,−3 + 4 * b0,−2 − 10 * b0,−1 + 58 * b0,0 +   17 * b0,1 − 5 * b0,2 + b0,3 )  >>  shift2  (8‑301)
    j0,0 = ( −b0,−3 + 4 * b0,−2 − 11 * b0,−1 + 40 * b0,0 +   40 * b0,1 − 11 * b0,2 + 4 * b0,3 − b0,4 )  >>  shift2  (8‑302)
    q0,0 = ( b0,−2 − 5 * b0,−1 + 17 * b0,0 +     58 * b0,1 − 10 * b0,2 + 4 * b0,3 − b0,4 )  >>  shift2  (8‑303)
    g0,0 = ( −c0,−3 + 4 * c0,−2 − 10 * c0,−1 + 58 * c0,0 +   17 * c0,1 − 5 * c0,2 + c0,3 )  >>  shift2  (8‑304)
    k0,0 = ( −c0,−3 + 4 * c0,−2 − 11 * c0,−1 + 40 * c0,0 +   40 * c0,1 − 11 * c0,2 + 4 * c0,3 − c0,4 )  >>  shift2  (8‑305)
    r0,0 = ( c0,−2 − 5 * c0,−1 + 17 * c0,0 +     58 * c0,1 − 10 * c0,2 + 4 * c0,3 − c0,4 )  >>  shift2  (8‑306)
    

    Quite a mouthful as you can see...

    The paper you are referring to error surface is probably the difference between the pixel-values calculated using the method proposed in the standard and the second-order-function proposed in the paper. Hope it helps :-)