The Hanning Filter
a.k.a. Cosine Hump Filter
fig. 1: 2D plot of the cosine hump function.
fig. 2: the cosine hump plotted above the 8 pixels that surround
a single pixel (pseudo-isometric projection).
fig. 3: 9 cosine humps are plotted and overlaid above the pixels
that they apply to. The center pixel's filter is overlaid with the 2D function
of the filter in the X and Y axis directions (plotted in red).
-
Finite Impulse Response:
This means that the filter is local, so that only the pixels that are within a certain distance from a pixel's center have an affect on that pixel.
-
Conservative:
so that when we apply the filter we don't lose any more data than we have to.
This has something to do with Liouville's Theorem, but I don't have any mathematical evidence to back this up.
Simply put, the conservative quality of the filter requires that for any point on the image, a summation of the filters that are relevant to that point adds up to one.
So no matter where a point is in the image, it will contribute the full amount of its intensity and color to whichever pixels are in range.
We can test for this quality by examining the general case of a point in the interior of the image and the nongeneral case of a point that lies within the 0.5 width border around the image.
If the summation of the filter's values adds up to unity for points within the rectangular test regions, we've got a conservative filter.
Highest-Quality Rasterization with the Hanning Filter
By combining the Hanning filter with the Weiler-Atherton (or Catmull) rendering
algorithms, we can generate the highest-precision rasterizer possible for
polygonal scenes. However, with this very high precision comes a great cost--
severe numerical problems and much greater time complexity. Among these issues
are:
-
Numerical Inaccuracy: The per-frame analytic
visibility method relies on the use of boolean operations on
polygons in the plane. Such operations have been shown to
be numerically unstable when applied several times in
succession. In order to eliminate inaccuracies, floating point
filters should be used for geometric operations, as is done in
the computational geometry library LEDA.
-
BSP: A BSP tree is used in order to guarantee
perfect front-to-back ordering and eliminate ambiguities that
arise when two polygons overlap.
-
Integration: In the final stage of the
rasterization algorithm, the resulting polygons from the
per-frame analytic visibility stage are clipped into a circle
that surrounds a pixel, and we perform a sweep in one direction
while integrating fragments. The closed form of the convolution
generated by multiplying the Hanning filter and the linear
gouraud interpolation function.
References
- Foley, van Dam, Feiner, Hughes. Computer Graphics: Principles & Practice