Anti-Aliasing
Jian Huang, CS594, Fall 2008
This set of slides references our text book and the slides used at Ohio State by Prof. Roger Crawfis.
Aliasing?
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
Aliasing
• Aliasing comes from in-adequate sampling rates of the continuous signal
• The theoretical foundation of antialiasing has to do with frequency analysis
• It’s always easier to look at 1D cases, so let’s first look at a few of those.
Example of Sampling
Examples of Inadequate
Sampling
Cosine Integrations
• Consider these formulas
cos( x ) dx
sin( x )
cos
2
( x ) dx
x
2
1
4 sin( 2 x )
cos( 2 x ) cos( x ) dx
sin( x )
2
1
6 sin( 3 x )
Improper Cosine Integrals
• Evaluating from (-
,
)
cos( x ) dx
cos
2
( x ) dx
0
cos( 2 x ) cos( x ) dx
0
Fourier Transform
• The Fourier Transform represents a periodic function as a continuous summation of sin’s and cos’s.
F ( u )
f ( x ) e
j 2
ux dx
F ( u , v )
f ( x , y ) e
j 2
( ux
vy ) dxdy e jx cox ( x )
j sin( x )
F ( u )
Re( u )
i Im( u )
Fourier Transform
• Note:
F ( 0 )
f ( x ) dx
• This is also called the direct current or
DC component.
Inverse Fourier Transform
• We can get back our original function f(x) from F(u) using the inverse transform: f ( x )
F ( u ) e j 2
ux du
OK – Why do this?
• Fourier space is a very good space for analyzing and understanding our signals.
• Rarely ever want to transform to Fourier space.
• There are some great theories developed in terms of sampling and convolution.
Fourier Analysis
• By looking at F(u), we get a feel for the
“frequencies” of the signal.
• We also call this frequency space.
• Intuitively, you can envision, the sharper an edge, the higher the frequencies.
• From a numerical analysis standpoint, the sharper the edge the greater the tangent magnitude, and hence the interpolation errors.
Fourier Analysis
• Bandlimited
– We say a function is bandlimited, if F(u)=0 for all frequencies u>c and u<-c.
• Amplitude Spectrum
– The magnitude, |F(u)|, is called the amplitude spectrum or simply the spectrum.
• Phase Spectrum or Phase
( u )
tan
1
(
Im( u )
Re( u )
)
Fourier Properties
• Linearity af ( x )
bg ( x )
aF ( u )
bG ( u )
• Scaling f ( ax )
1 a
F u
( a
)
Convolution
• Definition: f ( x )
h ( x )
f ( t ) h ( t
x ) dt
• Pictorially
Convolution f(x) h(x)
Convolution h(t-x) f(t) x
Convolution
• Consider the function (box filter): h ( x )
0
1
0
1
2 x
x
1
2
x
1
2
1
2
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This function windows our function f(x ).
f(t)
Convolution
• This particular convolution smooths out some of the high frequencies in f(x) .
f(x)
g(x) f(t)
Another Look At Convolution
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
Filtering and Convolution
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
Different functions achieve different
Results.
Impulse Function
• Consider the special function (called impulse):
( x )
0
a x
0 x
0
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
such that,
( x ) dx
1
Impulse and Convolution
• Then, if we take the convolution of f(x) with
(x), we get:
QuickTime™ and a
TIFF (Uncompressed) decompressor are needed to see this picture.
f(x)
(x) = f(x)
Sampling Function
• A Sampling Function or Impulse Train is defined by:
S
T
( x )
k
( x
kT ) where T is the sample spacing.
T
Sampling Function
• The Fourier Transform of the Sampling
Function is itself a sampling function.
• The sample spacing is the inverse.
S
T
( x )
S
1
T
( u )
Convolution Theorem
• The convolution theorem states that convolution in the spatial domain is equivalent to multiplication in the frequency domain, and vica versa.
f ( x )
g ( x )
f ( s ) g ( x )
F ( u ) G ( u )
F ( u )
G ( u )
Convolution Theorem
• This powerful theorem can illustrate the problems with our point sampling and provide guidance on avoiding aliasing.
• Consider: f(x) S
T
(x) f(t)
T
Convolution Theorem
• What does this look like in the Fourier domain?
S(u) F(u)
1
T
Convolution Theorem
• In Fourier domain we would convolve
S(u) F(u)
S(u)
F(u)
1
T
Aliasing
• What this says, is that any frequencies greater than a certain amount will appear intermixed with other frequencies.
• In particular, the higher frequencies for the copy at 1/T intermix with the low frequencies centered at the origin.
Aliasing and Sampling
• Note, that the sampling process introduces frequencies out to infinity.
• We have also lost the function f(x), and now have only the discrete samples.
• This brings us to our next powerful theory.
Sampling Theorem
• The Shannon Sampling Theorem
A band-limited signal f(x), with a cutoff frequency of l
, that is sampled with a sampling spacing of T may be perfectly reconstructed from the discrete values f[nT] by convolution with the sinc(x) function, provided: l
1
2 T l is called the Nyquist limit.
Sampling Theory
• Why is this?
• The Nyquist limit will ensure that the copies of F(u) do not overlap in the frequency domain.
• I can completely reconstruct or determine f(x) from F(u) using the
Inverse Fourier Transform.
Sampling Theory
• In order to do this, I need to remove all of the shifted copies of F(u) first.
• This is done by simply multiplying F(u) by a box function of width 2 l
.
S(u) F(u)
l l
1
T
Sampling Theory
• In order to do this, I need to remove all of the shifted copies of F(u) first.
• This is done by simply multiplying F(u) by a box function of width 2 l
.
S(u) F(u)
l l
1
T
Original function Sampled function
Acquisition
Reconstructed
Function
Resampling
Re-sampled function
Spatial Domain: Frequency Domain:
Convolution:
f
x
t
dt
Mathematically: f(x)*h(x) =
Evaluated at discrete
F
Multiplication: points (sum)
S f[i]
Reconstruction
Mathematically: f(x)*h(x) = ( S f[i])*h(x) h(x)
- Frequency Domain
Original function Sampled function
Acquisition
Reconstructed
Function
Resampling
Re-sampled function
Sampling
• What we have in computer graphics is a point sampling of our scene, or:
– I( x ) = f(x) • S
T
( x )
• What we would like is more of an integration across the pixel (or larger area):
– I( x ) = f(x)
h(x)
• What should h(x) be?
Original function Band-limited function
Pre-Filtering
Sampled
Function
Reconstructed function
Reconstruction
0.6
0.4
0.2
0
-0.2
0.8
1
Spatial Domain:
• convolution is exact
Frequency Domain: cut off freq. replica f r
0
Sinc
sin
x
0.95
0.9
0.85
0.8
0.75
0.7
0.65
0 0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
-0.4
-25 -20 -15 -10 -5 0 5 10 15 20 25
1
0.5
0
-0.5
-1
1.5
Spatial Domain:
• convolution is exact f r d
f
0
Frequency Domain: cut off freq. replica
Cosc
cos x
sin
x
2 x
Cosc(t)
5 10 15 20
0.95
0.9
0.85
0.8
0.75
0.7
25
0.65
0 0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
-1.5
-25 -20 -15 -10 -5 0
• Post-aliasing
– reconstruction filter passes frequencies beyond the
Nyquist frequency (of duplicated frequency spectrum) => frequency components of the original signal appear in the reconstructed signal at different frequencies
• Smoothing
– frequencies below the Nyquist frequency are attenuated
• Ringing (overshoot)
– occurs when trying to sample/reconstruct discontinuity
• Anisotropy
– caused by not spherically symmetric filters
Spatial Domain:
• local error
• asymptotic error
• numerical error
Frequency Domain: global error visual appearance blurring aliasing smoothing
Approximation
Theory/Analysis Signal Processing
• Non-bandlimited signal
Low sampling rate (below Nyquist)
Non perfect reconstruction
The spatial extent of reconstruction kernels, or interpolation basis functions, depend on the cut-off frequency as well.
pass band filter stop band
Ideal filter
Smoothing error
Postaliasing error
• Nearest Neighbor (Box)
Triangular func
Sinc
Gaussian
+ many others
1
0.8
0.6
0.4
0.2
0
-6 -4 -2 0 2 4 6
Spatial d.
1
0.8
0.6
0.4
0.2
0
-6 -4 -2 0 2 4 6
Frequency d.
• An-isotropic Filters
• (radially symmetric) h
h
x
2 y
2
separable filters h
• Very important; regardless of algorithm
• expensive => done very often for one image
• Requirements for good reconstruction
– performance
– stability of the numerical algorithm
– accuracy
Nearest neighbor
Linear
Put Things in Perspective
• In graphics, need to use continuous space functions.
But can only work with discrete data. So, let’s reconstruct from discrete data to continuous space
(convolution) and resample
• Interpolation is doing the same thing. Computing one data point in the resulting function, say, at x
1
.
• So, which reconstruction kernel (basis function) does linear/bilinear/tri-linear interpolations use?
A Cosine Example
• Consider the function f(x)=cos(2
x).
f(x)
F(u) x u
Sampling Theory
• So, given f[nT] and an assumption that f(x) does not have frequencies greater than
1/2T
, we can write the formula: f[nT] = f(x) S
T
(x)
F(u) = (F(u)
S
F(u)
S
T
(u)
T
(u)) Box
1/2T
(u) therefore, f(x) = f[nT]
sinc(x)
A Cosine Example
• Now sample it at T=½ f(x)
F(u) x u
1
A Cosine Example
• Problem:
– The amplitude is now wrong or undefined.
• Note however, that there is one and only one cosine with a frequency less than or equal to 1 that goes through the sample pts.
F(u) u
1
A Cosine Example
• What if we sample at T=¾?
2
cos( x
3
) f(x)
F(u) x u
1
Supersampling
• Supersampling increases the sampling rate, and then integrates or convolves with a box filter, which is finally followed by the output sampling function.
f(x) x
Sampling and Anti-aliasing
• If you can not get rid of it, convert it to noise.
Basic checkerboard Checkerboard with noise
Sampling and Anti-aliasing
• The images were calculated as follows:
– A 2Kx2K image was constructed and smoothly rotated into 3D.
– For Uniform Sampling, it was downsampled to a 512x512 image.
– Noise was added to the image, sharpened and then downsampled for the other one.
– Both were converted to B&W.
Sampling and Anti-aliasing
• The problem:
– The signal is not band-limited.
– Uniform sampling can pick-up higher frequency patterns and represent them as low-frequency patterns.
S(u) F(u)
1
T
Sampling and Anti-aliasing
• Turning the high-frequencies into noise.
• Recall, multiplication by the sampling function is equivalent to convolution in the Fourier domain.
• Fourier transform of noise.
Non-uniform Sampling
• So far we just mapped one point
• results in bad aliasing (resampling problems)
• we really need to integrate over polygon
• super-sampling is not a very good solution (slow!)
• most popular (easiest) - mipmaps
• Pixel area maps to “ weird ” (warped) shape in texture space y s v pixel x s u
• We need to:
– Calculate (or approximate) the integral of the texture function under this area
– Approximate:
• Convolve with a wide filter around the center of this area
• Calculate the integral for a similar (but simpler) area.
• the area is typically approxiated by a rectangular region (found to be good enough for most applications)
• filter is typically a box/averaging filter - other possibilities
• how can we pre-compute this?
Mip-maps
• An image-pyramid is built.
256 pixels 128 64 32 16 8 4 2 1
Mip-maps
• Find level of the mip-map where the area of each mip-map pixel is closest to the area of the mapped pixel.
y s v pixel x s u
2x2 pixels level selected
Mip-maps
• Pros
– Easy to calculate:
• Calculate pixels area in texture space
• Determine mip-map level
• Sample or interpolate to get color
• Cons
– Area not very close – restricted to square shapes (64x64 is far away from 128x128).
– Location of area is not very tight.
Summed Area Table (SAT)
• Use an axis aligned rectangle, rather than a square
• Precompute the sum of all texels to the left and below for each texel location
– For texel (u,v), replace it with: sum (texels( i=0…u,j=0…v ))
Summed Area Table (SAT)
• Determining the rectangle:
– Find bounding box and calculate its aspect ratio y s v pixel x s u
Summed Area Table (SAT)
• Determine the rectangle with the same aspect ratio as the bounding box and the same area as the pixel mapping.
y s v pixel x s u
Summed Area Table (SAT)
• Center this rectangle around the bounding box center.
• Formula:
• Area = aspect_ratio*x*x
• Solve for x – the width of the rectangle
• Other derivations are also possible using the aspects of the diagonals, …
Summed Area Table (SAT)
• Calculating the color
– We want the average of the texel colors within this rectangle
(u4,v4)
(u3,v3) v
+
-
+
(u1,v1)
+ -
(u2,v2)
+ u
Summed Area Table (SAT)
• To get the average, we need to divide by the number of texels falling in the rectangle.
– Color = SAT(u3,v3)-SAT(u4,v4)-SAT(u2,v2)+SAT(u1,v1)
– Color = Color / ( (u3-u1)*(v3-v1) )
• This implies that the values for each texel may be very large:
– For 8-bit colors, we could have a maximum SAT value of
255*nx*ny
– 32-bit pixels would handle a 4kx4k texture with 8-bit values.
– RGB images imply 12-bytes per pixel.
Summed Area Table (SAT)
• Pros
– Still relatively simple
• Calculate four corners of rectangle
• 4 look-ups, 5 additions, 1 mult and 1 divide.
– Better fit to area shape
– Better overlap
• Cons
– Large texel SAT values needed
– Still not a perfect fit to the mapped pixel.
Elliptical Weighted Average
(EWA) Filter
• Treat each pixel as circular, rather than square.
• Mapping of a circle is elliptical in texel space.
y s v pixel x s u
EWA Filter
• Precompute?
• Can use a better filter than a box filter.
• Heckbert chooses a Gaussian filter.
EWA Filter
• Calculating the Ellipse
• Scan converting the Ellipse
• Determining the final color (normalizing the value or dividing by the weighted area).
EWA Filter
• Calculating the ellipse
– We have a circular function defined in (x,y).
– Filtering that in texture space h(u,v).
– (u,v) = T(x,y)
– Filter: h(T(x,y))
EWA Filter
• Ellipse:
–
(u,v) = Au 2 + Buv + Cv 2 = F
– (u,v) = (0,0) at center of the ellipse
• A = v x
2
• C = u x
2
+v y
2
• B = -2(u x v y
+u y
2
+ u y v x
)
• F = u x v y
+ u y v x
EWA Filter
• Scan converting the ellipse:
– Determine the bounding box
– Scan convert the pixels within it, calculating
(u,v).
– If
(u,v) < F, weight the underlying texture value by the filter kernel and add to the sum.
– Also, sum up the filter kernel values within the ellipse.
EWA Filter
• Determining the final color
– Divide the weighted sum of texture values by the sum of the filter weights.
EWA Filter
• What about large areas?
– If m pixels fall within the bounding box of the ellipse, then we have O(n 2 m) algorithm for an nxn image.
– m maybe rather large.
• We can apply this on a mip-map pyramid,rather than the full detailed image.
– Tighter-fit of the mapped pixel
– Cross between a box filter and gaussian filter.
– Constant complexity O(n 2 )