|
List Info
Thread: Colour value differences between generated reference images and those in the repository
|
|
| Colour value differences between
generated reference images and those in
the repository |
  Australia |
2007-10-02 20:15:32 |
Hi Thomas.
I’ve been looking in to why the reference images in the
repository often
are different from the images that are generated when I run
regard. The
main difference seems to be when non-opaque colours are
composited.
As an example, I took a look at the second row fourth column
sub-test of
samples/tests/spec/rendering/paintOpacity.svg, specifically
one of the
pixels that is the 0.5 opacity gold painted on the opaque
#eee
background square.
The reference image in the repository is
http://svn.apache.org/repos/asf/xmlgraphics/batik/trunk
/test-references/samples/tests/spec/rendering/paintOpacity.p
ng
and the image generated on my machine is
http://m
cc.id.au/temp/2007/paintOpacity.png. The PNGs
themselves are
identical except for the IDAT chunk.
In the repository reference image, the pixel value is
rgba(224, 222, 118, 255), while in my image it is
rgba(246, 226, 119, 255).
Taking the alpha compositing rules from
http://www.w3.org/TR/SVG11/masking.html#SimpleAlphaBl
ending, this is my
calculation of the pixel value:
// Premultiplied #eee background
Ca = 1
Cr = 238
Cg = 238
Cb = 238
// Premultiplied 0.5 opacity gold rgb(255,215,0)
Ea = trunc(trunc(0.5 * 255) / 255) = 0.49804
Er = trunc(Ea * 255) = 127
Eg = trunc(Ea * 215) = 107
Eb = trunc(Ea * 0) = 0
// Premultiplied final pixel value
Ca' = trunc(1 - (1 - Ea) * (1 - Ca))
= trunc(1 - 0.50196 * 0)
= 1
Cr' = trunc((1 - Ea) * Cr + Er)
= trunc(0.50196 * 238 + 127)
= 246
Cg' = trunc((1 - Ea) * Cg + Eg)
= trunc(0.50196 * 238 + 107)
= 226
Cb' = trunc((1 - Ea) * Cb + Eb)
= trunc(0.50196 * 238 + 0)
= 119
and un-premultiplied this is the same as rgb(246, 226, 119,
255), which
matches the value in my image. So my question is: are the
reference
images in the repository wrong? I’m not an expert on
colour, so I don’t
know if there are other factors (colour spaces that the
compositing
could occur in, for example) that would allow the values in
the
repository reference image. Any ideas?
Thanks,
Cameron
--
Cameron McCormack, http://mcc.id.au/
xmpp:heycam jabber.org ▪ ICQ 26955922 ▪ MSN cam mcc.id.au
------------------------------------------------------------
---------
To unsubscribe, e-mail: batik-dev-unsubscribe xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help xmlgraphics.apache.org
|
|
| Re: Colour value differences between
generated reference images and those in
the repository |
  Australia |
2007-10-02 20:20:38 |
Cameron McCormack:
> // Premultiplied 0.5 opacity gold rgb(255,215,0)
>
> Ea = trunc(trunc(0.5 * 255) / 255) = 0.49804
One too many trunc()s in there, should be:
Ea = trunc(0.5 * 255) / 255 = 0.49804
--
Cameron McCormack, http://mcc.id.au/
xmpp:heycam jabber.org ▪ ICQ 26955922 ▪ MSN cam mcc.id.au
------------------------------------------------------------
---------
To unsubscribe, e-mail: batik-dev-unsubscribe xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help xmlgraphics.apache.org
|
|
| Re: Colour value differences between
generated reference images and those in
the repository |
  United States |
2007-10-04 05:50:14 |
|
Hi Cameron,
Cameron McCormack <cam mcc.id.au> wrote on 10/02/2007
09:15:32 PM:
> As an example, I took a look at the second row fourth column sub-test
of
> samples/tests/spec/rendering/paintOpacity.svg, specifically one of
the
> pixels that is the 0.5 opacity gold painted on the opaque #eee
> background square.
> In the repository reference image, the pixel
value is
> rgba(224, 222, 118, 255), while in my image it is
> rgba(246, 226, 119, 255).
Hmm, on my machine, using gimp, the reference
image
shows the pixel value as rgba(246, 225, 118, 255),
and your generated one has rgba(247, 227, 119, 255).
I can easily imagine reasons why the two would vary
by
a code value (or two).
How are you checking the reference/output
Image's pixel values?
|
| Re: Colour value differences between
generated reference images and those in
the repository |
  Australia |
2007-10-04 05:59:26 |
Cameron McCormack:
> > As an example, I took a look at the second row
fourth column sub-test of
> > samples/tests/spec/rendering/paintOpacity.svg,
specifically one of the
> > pixels that is the 0.5 opacity gold painted on the
opaque #eee
> > background square.
>
> > In the repository reference image, the pixel value
is
> > rgba(224, 222, 118, 255), while in my image it is
> > rgba(246, 226, 119, 255).
Thomas DeWeese:
> Hmm, on my machine, using gimp, the reference image
> shows the pixel value as rgba(246, 225, 118, 255),
> and your generated one has rgba(247, 227, 119, 255).
> I can easily imagine reasons why the two would vary by
> a code value (or two).
>
> How are you checking the reference/output Image's
pixel values?
I am using gimp, too (2.4.0-rc3). I turned the colour
management mode
to “No color management” in the preferences window just
to be sure it
wasn’t doing anything, but get the same values.
--
Cameron McCormack, http://mcc.id.au/
xmpp:heycam jabber.org ▪ ICQ 26955922 ▪ MSN cam mcc.id.au
------------------------------------------------------------
---------
To unsubscribe, e-mail: batik-dev-unsubscribe xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help xmlgraphics.apache.org
|
|
[1-4]
|
|