Image filtering

Image filtering

Reading
Szeliski, Chapter 3.1-3.2

What is an image?

Images as functions
We can think of an image as a function, f, from R2 to R:
f( x, y ) gives the intensity at position ( x, y )
Realistically, we expect the image only to be defined over a rectangle, with a finite range:
f: [a,b]x[c,d] à [0,1]
A color image is just three functions pasted together.  We can write this as a “vector-valued” function:

Images as functions

What is a digital image?
We usually work with digital (discrete) images:
Sample the 2D space on a regular grid
Quantize each sample (round to nearest integer)
If our samples are D apart, we can write this as:
f[i ,j] = Quantize{ f(i D, j D) }
The image can now be represented as a matrix of integer values

Filtering noise
How can we “smooth” away noise in an image?

Mean filtering

Slide 10

Mean filtering

Cross-correlation filtering
Let’s write this down as an equation.  Assume the averaging window is (2k+1)x(2k+1):

Mean kernel
What’s the kernel for a 3x3 mean filter?

Mean vs. Gaussian filtering

Gaussian filtering
A Gaussian kernel gives less weight to pixels further from the center of the window
This kernel is an approximation of a Gaussian function:
What happens if you increase s ?
                                                        Photoshop demo

Image gradient
How can we differentiate a digital image F[x,y]?
Option 1:  reconstruct a continuous image, f, then take gradient
Option 2:  take discrete derivative (finite difference)

Image gradient

Slide 18

Slide 19

Convolution
A convolution operation is a cross-correlation where the filter is flipped both horizontally and vertically before being applied to the image:
It is written:
Suppose H is a Gaussian or mean kernel.  How does convolution differ from cross-correlation?
Suppose F is an impulse function (previous slide)  What will G look like?

Continuous Filters
We can also apply filters to continuous images.
In the case of cross correlation:
In the case of convolution:
Note that the image and filter are infinite.

More on filters…
Cross-correlation/convolution is useful for, e.g.,
Blurring
Sharpening
Edge Detection
Interpolation
Convolution has a number of nice properties
Commutative, associative
Convolution corresponds to product in the Fourier domain
More sophisticated filtering techniques can often yield superior results for these and other tasks:
Polynomial (e.g., bicubic) filters
Steerable filters
Median filters
Bilateral Filters
(see text, web for more details on these)