W3C home > Mailing lists > Public > www-svg@w3.org > June 2010

feConvolveMatrix bias property in SVG 1.1 SE

From: Jasper van de Gronde <th.v.d.gronde@hccnet.nl>
Date: Wed, 23 Jun 2010 09:54:36 +0200
Message-ID: <4C21BDBC.3090800@hccnet.nl>
To: "www-svg@w3.org" <www-svg@w3.org>
I would really like the bias property clarified in SVG 1.1 SE. The 
problem with the current explanation is that it seems to be 
contradictory (and if you take the most explicit explanation, frankly 
not that useful).

In the explanation of the property it is said to be intended to have (as 
one possibility) a gray zero response. However, in the basic convolution 
formula the bias is added directly to the premultiplied color values. If 
you follow this definition the bias property does not give you any 
effective control over the zero response! Depending on the alpha 
component a bias of 0.5 could be anything from out-of-range white to 0.5 
gray.

We've discussed this problem before and the last post in that thread 
that I could find was by me (on Nabble, as my laptop, with a lot of my 
e-mails is being serviced) and summarized the progress as follows:

<quote>
For reference, the pseudo-code in the SVG  specification suggests
the following (preserveAlpha=false):
-------------------------------------
Option 1:
    aF = filtered alpha without bias
    cF = filtered (premultiplied) color without bias
    aR = aF + bias
    cR = cF + bias
-------------------------------------

I previously suggested:
-------------------------------------
Option 2:
    cR = cF + bias*aR
-------------------------------------

You seem to suggest:
-------------------------------------
Option 3:
    cR = cF + bias*(aR-bias)
-------------------------------------
I'm not sure what the advantage of this would be though. For example, if
you have a uniformly colored shape (opacity also uniform) and apply the
filter -1 1 (with bias=0.5) I would expect a response of
(0.25,0.25,0.25,0.5), and not (0,0,0,0.5).

Another option would be to do an explicit conversion from and to
premultiplied colors:
-------------------------------------
Option 4:
    cR = (cF/aF + bias)*aR
-------------------------------------
Conceptually this might be cleaner, but it does have the disadvantage of
needing a division. Specifically, what color should result if aF=0?
</quote>
Received on Wednesday, 23 June 2010 07:55:06 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:45 GMT