Re: Image Format / Pre-Multiplied Alpha Related Feature Request

William Kappler <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CABTxdakd1tz129p1w+7d6TF21CJMRUd9FxxSWavoA9G=BpDOTw@mail.gmail.com>
Thanks for that suggestion. I will give it a try if I notice transition
distortions due to the pre-mult. Although, I think if there's a chance of
at some point getting some sort of floating point format, I will just keep
directly converting the pre-multiplied values until then; my library won't
be ready for release for a good while.


:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
William E. Kappler II
LinkedIn <https://www.linkedin.com/in/williamkappler> · Blog
<http://williamkappler.blogspot.com/> · Project Website
<https://github.com/WilliamKappler/onathacar/wiki>

On Thu, Jan 28, 2016 at 6:12 PM, Lawrence D'Oliveiro <
[email protected]> wrote:

> On Thu, 28 Jan 2016 17:18:04 -0500, William Kappler wrote:
>
> > perhaps I could render color without alpha and then alpha on its own,
> > and just blend the data together on my end.
>
> Try oversampling.
>
> Say you want to create an image that is m × n pixels. Create it at,
> say, 2m x 2n pixels instead. Undo the premultiplied alpha, then add
> each square grouping of 2 × 2 pixel values into a new, deeper pixel
> value, creating an image at m × n pixels.
>
> Each original pixel component value in CAIRO_FORMAT_ARGB32 format is 8
> bits, with a range of 0..255. Adding together 4 of these gives a range
> of 0..1020; replicate the top 2 bits into the bottom 2 to extend the
> dynamic range to 0..1023. This gives you an effective bit depth of log₂
> 1021 ≅ 10 bits. Even if not all 8 bits were meaningful to begin with
> (e.g. because of rounding caused by the original premultiplied alpha),
> you still gain log₂ 1021 - 8 ≅ 2 extra bits regardless.
>
> If that’s not enough, you can try starting with a 4m × 4n image, and
> add together groupings of 4 × 4 pixels to end up with a maximum of log₂
> 4081 ≅ 12 bits per pixel component at m × n resolution. Here you
> replicate the top 4 bits into the bottom 4 bits to extend the 0..4080
> dynamic range to 0..4095. And again, even if not all the bits are
> meaningful, you still gain log₂ 4081 - 8 ≅ 4 extra bits per pixel
> component.
>
> That’s oversampling in a nutshell.
> --
> cairo mailing list
> [email protected]
> http://lists.cairographics.org/mailman/listinfo/cairo
>

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.