[cairo] Concerns about using filters for downscaling
Søren Sandmann
sandmann at cs.au.dk
Wed Mar 26 15:35:53 PDT 2014
Owen Taylor <otaylor at redhat.com> writes:
> On Fri, 2014-03-21 at 18:33 -0400, Owen Taylor wrote:
>
>> * For some reason, the results of downscaling images don't have
>> left-right symmetry. The result of scaling down:
>>
>> 000000 000000 000000 000000
>> 000000 ffffff ffffff 000000
>> 000000 ffffff ffffff 000000
>> 000000 000000 000000 000000
>>
>> By a factor of two is:
>>
>> 646464 3c3c3c
>> 3c3c3c 242424
>>
>> (I'm a bit suspicious about the fact that pixman generates
>> even length filters, and wonder if that has something to do
>> with the asymmetry.)
>
> What's going on here is:
>
> +-------+-------+ Destination image
> * * Sampling points
> +---+---+---+---+ Original image
> * * * * * * * * Subpixel filter points
>
> So each sampling point is between two subpixel filter points, and the
> picking one of them the asymmetry. When pixman has N bits of subpixel
> filters, it picks the points as:
>
> 0.5/2^N, 1.5/2^N ... (2^N-0.5)/2^N
>
> To give an equal distribution in the unit interval. I think that's
> actually wrong and they should be at:
>
> 0, 1/2^N ... (N-1)/2^N
>
> It shouldn't make a difference when the scale/offset of the filter
> is arbitrary, but means that you avoid the half-way-between rounding
> for exact integer scale-downs.
I think I agree with this. It will just move the artefacts so that they
now happen at different offsets, but it is probably good to make sure
that the exact-integer scale-downs get an exact sampling of the filter,
and I can't think of any benefits from aligning the subsample grid the
way pixman does now.
Søren
More information about the cairo
mailing list