Chapter 5 Digital Image Processing Fundamentals Learning Goals

























- Slides: 25
Chapter 5 Digital Image Processing Fundamentals
Learning Goals • The human visual system • Digitizing images • Display of Images
Trading an eye for an ear
An eye is a Multi-mega pixel camera • • It has a lens (adjustable zoom) It has an automatic f-stop (iris 2 -8 mm) It has a sensor plane (100 million pixels) The sensor has a transfer function senstive to mesopic range; 380 to about 700 nm
The eyes have a USB 2 data rate! • • • 250, 000 neurons in the optic nerve variable voltage output on EACH nerve 17. 5 million neural samples per second 12. 8 bits per sample 224 Mbps, per eye (a 1/2 G bps system!). Compression using lateral inhibition between the retinal neurons
Response curves • Eye has Gaussian response to light. • Gives rise to biologically motivated image processing
Quantization of an Image • Computers use digital cameras -> quantization
Sampling an Image
Sampling=convolution w pulse train
Quantization Error is visible
Displays • Color Monitors are made for people
Chapter 6 -7 • Opening and Saving Images
Chapter 8 Convolution with a kernel, g(x)
Region of Support • The region of support is defined as that area of the. kernel which is non-zero • linear convolution: =signal has infinite extent but kernel has finite support • If function has finite region of support we have compact support
Real images have finite region of support • But we treat them as periodic and infinite! • We repeat kernels so that they have the same period as the images. • We call this cyclic convolution.
Convolution in 2 D
Avoid the Mod op
What is wrong with avoiding the mod op? • How do I find the center of the kernel?
Cyclic Convolution
Implementing Convolution for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { sum = 0. 0; for(int v = -vc; v <= vc; v++) for(int u = -uc; u <= uc; u++) sum += f[cx(x-u) ][cy(y-v)] * k[ u+uc][v+vc]; if (sum < 0) sum = 0; if (sum > 255) sum = 255; h[x][y] = (short)sum; } }
What happens to the image if you ignore the wrap?
Cyclic Convolution keeps the edges
Can you think of a better way to implement convolution? • Keep the edges! • Don’t use the mod operation. • How about growing the image by the size of the kernel*2?
Convolution is slow, how can I speed it up? • JAI! • FFT!? • Other ideas?