02 Filter
02 Filter
02 Filter
input.jpg output.jpg
0.5
0.0
0.7
0.9
Luminance
Measures perceived “gray-level” of pixel
Luminance
x
Values of luminance for positions
on one horizontal scanline
Luminance
x
Samples of luminance for pixels
on one horizontal scanline
Luminance
x
Adjusting Brightness
• Method 1: Convert to HSV, scale V, convert back
• Method 2: Scale R, G, and B directly
o Multiply each of red, green, and blue by a factor
o Must clamp to [0..1] … always
Luminance
x
Original Brighter
Adjusting Contrast
• Compute one mean luminance L* for whole image
Scale deviation from L* for each pixel component
L*
Perceived brightness
Iout = Iin
Amount of light
# Pixels
Luminance Luminance
Image Processing Operations
• Luminance • Linear filtering
Brightness Blur & sharpen
Contrast. Edge detect
Gamma Convolution
Histogram equalization
• Non-linear filtering
• Color Median
Black & white Bilateral filter
Saturation
White balance
• Dithering
Quantization
Ordered dither
Floyd-Steinberg
Color processing
• Color models
RGB
CMY
HSV
XYZ
La*b*
Etc.
W
White Balance
Von Kries method: adjust colors in LMS color space
LMS primaries represent the responses of
the three different types of cones in our eyes
White Balance
For each pixel RGB:
1) Convert to XYZ color space
3) Divide by LWMWSW
4) Convert back to RGB
Image Processing Operations
• Luminance • Linear filtering
Brightness Blur & sharpen
Contrast. Edge detect
Gamma Convolution
Histogram equalization
• Non-linear filtering
• Color Median
Black & white Bilateral filter
Saturation
White balance
• Dithering
Quantization
Ordered dither
Floyd-Steinberg
Blur
What is the basic operation for each pixel
when blurring an image?
Basic Operation: Convolution
Output value is weighted sum of values in
neighborhood of input image
Pattern of weights is the “filter” or “kernel”
Box Filter
Input Output
Basic Operation: Convolution
Output value is weighted sum of values in
neighborhood of input image
Pattern of weights is the “filter” or “kernel”
Triangle Filter
Input Output
Basic Operation: Convolution
Output value is weighted sum of values in
neighborhood of input image
Pattern of weights is the “filter” or “kernel”
Gaussian Filter
Input Output
Convolution with a Gaussian Filter
pixel
position
unrelated uncertain related uncertain unrelated
pixels pixels pixels pixels pixels
Convolution with a Gaussian Filter
Output value is weighted sum of values in
neighborhood of input image
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
Output value is weighted sum of values in
neighborhood of input image
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
Output value is weighted sum of values in
neighborhood of input image
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
Output value is weighted sum of values in
neighborhood of input image
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
Output value is weighted sum of values in
neighborhood of input image
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
What if filter extends beyond boundary?
0.4
0.2 0.2 Filter
Input Output
Convolution with a Gaussian Filter
What if filter extends beyond boundary?
0.8
0.4 Modified Filter
Input Output
Convolution with a Gaussian Filter
Output contains samples from smoothed input
Filter
Input Output
Figure 2.4 Wolberg
Linear Filtering
2D Convolution
o Each output pixel is a linear combination of input pixels
in 2D neighborhood with weights prescribed by a filter
Filter
Filter
Filter
Filter
Filter
per-pixel multiplication
*
input output
Gaussian Blur
Output value is weighted sum of values in
neighborhood of input image
normalized
Gaussian function
1
0
input
Gaussian blur
Linear Filtering
• Many interesting linear filters
Blur
Edge detect
Sharpen
Emboss
etc.
Filter =
?
Blur
Convolve with a 2D Gaussian filter
Original
Blur Filter =
Edge Detection
Convolve with a 2D Laplacian filter that finds
differences between neighbor pixels
Filter =
Sharpen
Sum detected edges with original image
Original Sharpened
Filter =
Emboss
Convolve with a filter that highlights
gradients in particular directions
Original Embossed
Filter =
Side Note: Separable Filters
Some filters are separable (e.g., Gaussian)
First, apply 1-D convolution across every row
Then, apply 1-D convolution across every column
Big impact on performance
Image Processing Operations
• Luminance • Linear filtering
Brightness Blur & sharpen
Contrast. Edge detect
Gamma Convolution
Histogram equalization
• Non-linear filtering
• Color Median
Black & white Bilateral filter
Saturation
White balance
• Dithering
Quantization
Ordered dither
Floyd-Steinberg
Non-Linear Filtering
Each output pixel is a non-linear function of
input pixels in neighborhood (filter depends on input)
G || p q || G | I I q | I q
1
Bilateral [ I ]p p
Wp qS
s r
Spatial Color
Proximity Proximity
Weight Weight
Bilateral Filtering
Combine Gaussian filtering in both
spatial domain and color domain
r =
r = 0.1 r = 0.25 (Gaussian blur)
input
s = 2
s = 6
s = 18
Image Processing Operations
• Luminance • Linear filtering
Brightness Blur & sharpen
Contrast. Edge detect
Gamma Convolution
Histogram equalization
• Non-linear filtering
• Color Median
Black & white Bilateral filter
Saturation
White balance
• Dithering
Quantization
Ordered dither
Floyd-Steinberg
Quantization
Reduce intensity resolution
o Frame buffers have limited number of bits per pixel
o Physical devices have limited dynamic range
Uniform Quantization
I(x,y)
P(x,y)
(2 bits per pixel)
Uniform Quantization
Images with decreasing bits per pixel:
Notice contouring.
Reducing Effects of Quantization
• Dithering
o Random dither
o Ordered dither
o Error diffusion dither
• Halftoning
o Classical halftoning
Dithering
Distribute errors among pixels
o Exploit spatial integration in our eye
o Display greater range of perceptible intensities
P(x,y)
P(x,y)
I(x,y) I(x,y)
i = x mod n
j = y mod n
e = I(x,y) - trunc(I(x,y))
threshold = (D(i,j)+1)/(n2+1)
if (e > threshold)
0 1/5 2/5 3/5 4/5 1
P(x,y) = ceil(I(x, y))
else
P(x,y) = floor(I(x,y)) thresholds
Ordered Dither
Bayer’s ordered dither matrices
Ordered Dither
• Filtering
• Compute new values for image pixels based on
function of old values in neighborhood
• Dithering
• Reduce visual artifacts due to quantization
• Distribute errors among pixels
Exploit spatial integration in our eye