CS 684, Homework #3

Antialiasing

Ryan Graham


This assignment demonstrates 4 different sampling strategies to deal with aliasing in 2 different images. The 4 strategies are:           The Adaptive method (for a single pixal):
               Sample the 4 corners of the pixal
               if (any 2 values are different) then
                      subdivide pixal into 4 regions, run Adaptive method on each region.
               else
                      color = sum(4 samples) / 4
 

The first image is the function:
    L(x, y) = (0.5 + 0.5*fade*sin(2.0*Pi*a*exp(5*a)))
    where: a      = x / (double)nx
                fade = (1.0 - y / (double)ny)^3
 

Here are the results:
 
1 sample/pixal
4 samples/pixal
16 samples/pixal
100 samples/pixal
Regular
Jittered
Multijittered
 I think the thing to notice here is that regular and multijittered converged to the correct image faster, e.g., at 16 samples/pixal the regular and multijittered images look correct, where as the jittered image still has some noise.
 
 
*maxdepth = 10, **epsilon = 0.3
*maxdepth = 20, **epsilon = 0.03
*maxdepth = 10, **epsilon = 0.0
*maxdepth = 20, **epsilon = 0.0
Adaptive 
*maxdepth = the maximun number of subdivisions allowed on a pixal.
**epsilon = the tolerance allowed between intensities to consider them equal.
    ( Ideally epsilon should be 0.0, but I was just curious to see what would happen if it wern't. The results aren't pleasing.)
 
 

The next image is an infinite black and white checkerboard. The viewing parameters are:
        lookfrom (0, 0, 1)
        lookat      (1, 1, 0)
        vfov         90 degres
        vup           (0, 0, 1)

(I placed the sphere in the scene just because I decided that if I was going to trace in 3D, I ought to have a 3D object)
 
1 sample/pixal
4 samples/pixal
16 samples/pixal
100 samples/pixal
Regular
Jittered
Multijittered
 For this particular image, it looks like multijittered is the best. Although no image looks good until around 100 samples/pixal, the multijittered images seem to converge faster.
 
 
maxdepth = 0, epsilon = 0.0 
maxdepth = 1, epsilon = 0.0
maxdepth = 10, epsilon = 0.0
maxdepth = 20, epsilon = 0.0
Adaptive
So with no recusion depth we see that sampling just on the corners of the pixals misses some information. However, by just allowing one subdivision in each pixal we get pretty good results in the front, but still bad aliasing in the back. We can also note that allowing more than one subdivision doesn't seem to give us any more information and thus (for this image) was a waste of time.



 Comments: Ryan Graham