Image Processing and Sampling Aaron Bloomfield CS 445: Introduction to Graphics Fall 2006 Overview Image representation What is an image? Halftoning and dithering Trade spatial resolution for intensity resolution Reduce visual artifacts due to quantization What is an Image? An image is a 2D rectilinear array of pixels Continuous image Digital image What is an Image? An image is a 2D rectilinear array of pixels Continuous image Digital image A pixel is a sample, not a little square! What is an Image? An image is a 2D rectilinear array of pixels Continuous image Digital image A pixel is a sample, not a little square! Image Acquisition Pixels are samples from continuous function Photoreceptors in eye CCD cells in digital camera Rays in virtual camera Image Display Re-create continuous function from samples Example: cathode ray tube Image is reconstructed by displaying pixels with finite area (Gaussian) Image Resolution Intensity resolution Spatial resolution Each pixel has only “Depth” bits for colors/intensities Image has only “Width” x “Height” pixels Temporal resolution Monitor refreshes images at only “Rate” Hz Typical Resolutions NTSC Workstation Film Laser Printer Width x Height 640 x 480 1280 x 1024 3000 x 2000 6600 x 5100 Depth 8 24 12 1 Rate 30 75 24 - Sources of Error Intensity quantization Spatial aliasing Not enough intensity resolution Not enough spatial resolution Temporal aliasing Not enough temporal resolution E 2 I ( x, y) P( x, y) 2 ( x, y ) Overview Image representation What is an image? Halftoning and dithering Reduce visual artifacts due to quantization Quantization Artifacts due to limited intensity resolution Frame buffers have limited number of bits per pixel Physical devices have limited dynamic range Uniform Quantization P(x, y) = trunc(I(x, y) + 0.5) P(x,y) I(x,y) I(x,y) P(x,y) (2 bits per pixel) Uniform Quantization Images with decreasing bits per pixel: 8 bits 256 bpp 4 bits 32 bpp 2 bits 8 bpp 1 bit 2 bpp Reducing Effects of Quantization Halftoning Classical halftoning Dithering Error diffusion dither Random dither Ordered dither Classical Halftoning Use dots of varying size to represent intensities Area of dots proportional to intensity in image I(x,y) P(x,y) Classical Halftoning Newspaper image from North American Bridge Championships Bulletin, Summer 2003 Halftone patterns Use cluster of pixels to represent intensity Trade spatial resolution for intensity resolution Figure 14.37 from H&B Dithering Distribute errors among pixels Uniform quantization discards all errors Exploit spatial integration in our eye Display greater range of perceptible intensities i.e. all “rounding” errors Dithering is also used in audio, by the way Floyd-Steinberg dithering Any “rounding” errors are distributed to other pixels Specifically to the pixels below and to the right 7/16 of the error to the pixel to the right 3/16 of the error to the pixel to the lower left 5/16 of the error to the pixel below 1/16 of the error to the pixel to the lower right Assume the 1 in the middle gets “rounded” to 0 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.44 0.19 0.31 0.06 Error Diffusion Dither Spread quantization error over neighbor pixels Error dispersed to pixels right and below + + + 1.0 Figure 14.42 from H&B Floyd-Steinberg dithering Floyd-Steinberg dithering dithering algorithm Original (8 bits) Uniform Quantization (1 bit) is a specific Floyd-Steinberg Dither (1 bit) error Floyd-Steinberg Dither (1 bit) (pure B&W) Random Dither Randomize quantization errors Errors appear as noise P(x,y) P(x,y) I(x,y) I(x,y) P(x, y) = trunc(I(x, y) + noise(x,y) + 0.5) Random Dither Original (8 bits) Uniform Quantization (1 bit) Random Dither (1 bit) Ordered Dither Pseudo-random quantization errors Matrix stores pattern of thresholds 3 i = x mod n D2 j = y mod n 0 e = I(x,y) - trunc(I(x,y)) if (e > D(i,j)) P(x,y) = ceil(I(x, y)) else P(x,y) = floor(I(x,y)) 1 2 Ordered Dither Bayer’s ordered dither matrices Reflections and rotations of these are used as well 4 Dn + D2 (1,1)U n 2 2 Dn 4 Dn 2 + D2 (2,1)U n 2 3 D2 0 1 2 4 Dn + D2 (1,2)U n 2 2 4 Dn + D2 (2,2)U n 2 2 15 3 D4 12 0 7 11 4 13 1 14 8 2 5 9 6 10 Ordered Dither Original (8 bits) Uniform Quantization (1 bit) 4x4 Ordered Dither (1 bit) Dither Comparison Original (8 bits) Random Dither (1 bit) Ordered Dither (1 bit) Floyd-Steinberg Dither (1 bit) Color dithering comparison Original image Optimized 256 color palette FS dithering Web-safe palette, no dithering Optimized 16 color palette No dithering Web-safe palette, FS dithering Optimized 16 color palette FS dithering Summary Image representation A pixel is a sample, not a little square Images have limited resolution Halftoning and dithering Reduce visual artifacts due to quantization Distribute errors among pixels Exploit spatial integration in our eye Sampling and reconstruction Reduce visual artifacts due to aliasing Filter to avoid undersampling Blurring is better than aliasing