Jerry,

Thanks for the information and suggestion. I'll be curious to read Blinn's
explanation of how this happens.

Regards,
Mike Robinson

[EMAIL PROTECTED] wrote:

> > This is a baffling problem first reported by Hitoshi Sato of IBM-Japan
> > some 2-3 weeks ago on this mailing list. It seems like there is a
> > problem using bilinear interpolation on a Buffered Image under some
> > special circumstances. The circumstances are  ...
> >
> > 1) The BufferedImage is a TYPE_INT_ARGB
> > 2) A rectangle is filled with a completely transparent color (say white,
> > although it behaves the same with any color)
> > 3) A smaller rectangle is filled over the top of it using a completely
> > opaque color (also white)
> > 4) The  BufferedImage is then scaled by a factor of 2.0 with Bilinear
> > interpolation using an AffineTransformOp.
> > 5) The resulting BufferedImage is then drawn in a JFrame with a white
> > background.
> >
> > The result is a gray border around the form of the smaller rectangle.
> >
> > If the alpha of the outer rectangle is changed to be even 1, the effect
> > goes away. Does any have a clue as to why this should be the behavior??
>
> Generally, when you perform an operation requiring interpolation (such as
> convolution or scaling with interpolated resampling) on an image with an
> alpha channel, you should use a color model with premultiplied alpha.
>
> An example of why this is true is given in the paper "Compositing, Part 1:
> Theory" by Jim Blinn from IEEE Computer Graphics and Applications, September
> 1994 (reprinted in Blinn's book Jim Blinn's Corner: Dirty Pixels).
>
> If you change the BufferedImage type to TYPE_INT_ARGB_PRE in the sample
> program, there will be no gray border.  Without the premultiplication,
> at the border between 255/255/255/0 pixels and 255/255/255/255 pixels in
> the scaled up image, there are pixels which are the result of resampling
> with input from both types of pixels from the unscaled image.  Resampling
> a non-premultiplied image effectively treats the RGB samples as completely
> independent of the alpha samples for interpolation.  The Blinn paper
> illustrates why this doesn't give the desired result.
>
> Jerry
>
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to