Windows – Tweak Chrome image scaling anti-aliasing to match Internet Explorer 8

anti-aliasinggoogle-chromenvidia-graphics-cardwindows-explorer

I was quite surprised to see that the image scaling anti-aliasing of Internet Explorer 8 seems to be significantly better than that provided by Chrome and Firefox. The screen-shot below is of google.com's home page of March 17th for Chrome and Explorer, side-by-side. Note the Chrome version has obvious staircases on the left of the image, and rasterization effects at the top:

Chrome and Explorer side-by-side--google.com's home page on March 17th

So my question is:

Is it possible to tweak the image scaling anti-aliasing of Chrome (and/or Firefox) to match Internet Explorer?

There was no difference between the 64-bit and 32-bit versions of Explorer. And there was no difference between Chrome and Firefox. (Using latest versions of all, on a 64-bit Windows 7 machine.)

A side question (and my real interest) is What benefits, if any, does Nvidia Optimus provide? But my tests are not yet advanced enough to pose this question. But early results seem negative. (Edit: it was kindly suggested that this side question was unrelated, and should be deleted. But I think it provides the motivation of this otherwise-fluffy question.)

Best Answer

Looking at the source file for Chromium's image resize and filtering, it appears the filter used for upscaling images is a radius 3 Lanczos filter. (see function ResizeMethodToAlgorithmMethod, I guess the default choice is used as the comments seem to fit better to downscaling). The convolution kernel is defined in the function EvalLanczos at the very top of the file, and has no provisions for any modification after compile-time.

Unless I read the code very wrongly (see the constructor for ResizeFilter), the filter(and the scaling) is applied one dimensionally in one direction at the time. The screenshots sort of seem to indicate that the IE filtering is two dimensional, and weighted by radius rather than maximum hor/vert distance. (This might be a false lead, though.)

I guess you could somehow determine what sort of filtering IE does and reimplement it, either just replacing the Lanczos filter, or (more fancily) update the rest of the source to call your filter. The latter would be necessary if you can't work around the one-dimension-at-the-time issue. I would not recommend it, though, unless you have particularly strong feelings about how your browser upscales images.

PS: The scaling in Opera also seems to match your Chrome screenshot.

Related Question