includes gegl C code and pointers to image enlargement test code and results
for a high quality (non linear) image resampling code (Yet Another Fast
The first post contained slightly non-optimized code, the second, faster code
with a bug. For this reason, use the code found in Comment #3.
The new method is quite flexible: It has two parameters, like cubic splines,
which I call "smooth" and "straighten" but which I think I may rename "smooth"
and "antialias" (the first one primarily has to do with subpixel smoothing, the
second, smoothing at a scale comparable to the distance between pixels. On the
basis of limited testing on a processed digital photograph and a "text like"
image, it appears that with the theoretically optimal values of the parameters
(one of which has to be computed more precicely: complex integrals are involved
in the exact computation) give excellent results. These approximate optimal
values are smooth = .85 and straighten = 14.27; see the corresponding results
for these values first.
When substituted for the gegl-sampler-cubic.c code, scale (run from xml) runs a
smidgen faster than the stock gegl cubic, and 10-15% slower than stock gegl
When smooth = 0 and straighten = 1, the method is co-convex (does not introduce
When smooth = 0 and straighten <= 2, the method is monotone (does not introduce
halos). Monotonicity is a very good thing for the transparency channel.
Although these properties do not hold when smooth is not zero, for small values
of smooth they may as well hold. Note however that my optimal (strongly
nonlinear) values of smooth and straighten are quite far from the "no halo"
values. Even then, the scheme does not smooth as much as Lanczos, but
introduces much less halo, and has a much "crisper" look in general.
Comments, inquiries etc welcome.
Laurentian University/University Laurentienne.
Gimp-developer mailing list