Image (and Video) Coding and Processing Lecture 5: Point Operations Wade Trappe Lecture Overview Today’s lecture will focus on: – Point-Operations: These are operations that basically do not involve any explicit spatial memory – Examples: Contrast stretching Noise Clipping Histogram Equalization Note: Most of this talk is borrowed from a lecture by my colleague Min Wu at UMD Point Operations / Intensity Transform v Basic idea – “Zero memory” operation each output only depend on the input intensity at the point – Map a given gray or color level u to a new level v, i.e. v = f ( u ) output gray level – Doesn’t bring in new info. input gray level u – But can improve visual appearance or make features easier to detect Example-1: Color coordinate transformations – RGB of each pixel luminance + chrominance components etc. Example-2: Scalar quantization – quantize pixel luminance/color with fewer bits Gamma Characteristics & Gamma Correction Non-linearity in CRT display L’ L’ = a U – Voltage U vs. Displayed luminance L’ L’ ~ U where = 2.0 ~ 2.5 Use preprocessing to compensate -distortion – U~L 1/ U – log(L) gives similar compensation curve to correction ~ logL 1/ ~L good for many practical applications – Camera may have L with c = 1.0-1.7 U 1/c capturing distortion Power-law transformations are also useful for general purpose contrast manipulation L Typical Types of Gray-level Transformation Figure is from slides at Gonzalez/ Woods DIP book website (Chapter 3) Example: Negative Transformation Figure is from slides at Gonzalez/ Woods DIP book website (Chapter 3) Example: Log Transformation Figure is from slides at Gonzalez/ Woods DIP book website (Chapter 3) Example: Effects of Different Gammas L0 ( “vectors” sample image from Matlab ) L02.2 L01/2.2 Luminance Histogram Represents the relative frequency of occurrence of the various gray levels in the image – For each gray level, count the # of pixels having that level – Can group nearby levels to form a big bin & count #pixels in it ( From Matlab Image Toolbox Guide Fig.10-4 ) Luminance Histogram (cont’d) Interpretation – Treat pixel values as i.i.d random variables – Histogram is an estimate of the probability distribution of the r.v. “Unbalanced” histogram doesn’t fully utilize the dynamic range – Low contrast image ~ histogram concentrating in a narrow luminance range – Under-exposed image ~ histogram concentrating on the dark side – Over-exposed image ~ histogram concentrating on the bright side Balanced histogram gives more pleasant look and reveals rich content Example: Balanced and Unbalanced Histograms Figure is from slides at Gonzalez/ Woods DIP book website (Chapter 3) Contrast Stretching for Low-Contrast Images Stretch the over-concentrated graylevels in histogram via a nonlinear mapping – Piece-wise linear stretching function – Assign slopes of the stretching region to be greater than 1 v output gray level o a b input gray level u Contrast Stretching: Example original stretched Clipping & Thresholding – Special case of contrast stretching with ==0 – Useful for noise reduction when interested signal mostly lie in range [a,b] Thresholding – Special case of clipping with a = b = T – Useful for binarization of scanned binary images documents, signatures, fingerprints output gray level Clipping o a b input gray level u v output gray level v o T input gray level u Examples of Histogram Equalization ( From Matlab Image Toolbox Guide Fig.10-10 & 10-11 ) Equalization Example (cont’d) original equalized Histogram Equalization Goal: Map the luminance of each pixel to a new value such that the output image has approximately uniform distribution of gray levels To find what mapping to use: first model pixels as i.i.d. r.v. – How to generate r.v. with desired distribution? Match c.d.f Want to transform one r.v. with certain p.d.f. to a new r.v. with uniform p.d.f. – For r.v. U with continuous p.d.f. over [0,1], construct a new r.v. V by a monotonically increasing mapping v(u) such that u v FU (u) P[U u] pU ( x)dx 0 – Can show V is uniformly distributed over [0,1] FV(v) = v FV(v) = P(V v) = P( FU(u) v) = P( U F-1U(v) ) = FU( F-1U(v) ) = v – For u in discrete prob. distribution, the output v will be approximately uniform How to Do Histogram Equalization? Approach: map input luminance u to the corresponding v – v will be approximately uniform for u with discrete prob. distribution b/c all pixels in one bin are mapped to a new bin (no splitting) P(V<=v) P(U<=u) 1 1 Fu0 c.d.f c.d.f Fu0 u0 o gray level v0 255 u o gray level 255 v Histogram Equalization Algorithm v pU ( xi ) u v xi u Uniform quantization v’ pU(xi) pU ( xi ) h( xi ) L 1 h( x ) i 0 for i 0, ..., L - 1 i v pU ( xi ) xi u v vmin v' Round ( L 1) 1 vmin v [0,1] • Map discrete v [0,1] to v’ {0,…,L-1} • vmin is the smallest positive value of v • vmin 0 1 L-1 Histogram Equalization: A Mini-Example – xi 0 1 2 3 4 5 6 7 – p(xi) 0.1 0.2 0.4 0.15 0.1 0.05 0 0 – v 0.1 0.3 0.7 0.85 0.95 1.0 1.0 1.0 – v’ 0 [1.5] [4.7] [5.8] [6.6] 7 7 7 7 7 7 7 0 2 5 6 (L=8) (L-1)/(1-vmin) = 7.78 Summary: Contrast Stretching vs. Histogram Eq. What are in common? What are different? v output gray level o P(V<=v) b input gray level u P(U<=u) 1 1 Fu0 c.d.f c.d.f Fu0 u0 v0 o a gray level 255 v o gray level 255 u Generalization of Histogram Equalization Histogram specification – Want output v with specified p.d.f. pV(v) – Use uniformly distributed r.v. W as an intermediate step -1 W = FU(u) = FV(v) V = F V (FU(u) ) – Approximation in the intermediate step needed for discrete r.v. W1 = FU(u) , W2 = FV(v) take v s.t. its w2 is equal to or just above w1 Figure is from slides at Gonzalez/ Woods DIP book website (Chapter 3) For Next Time… Next time we will focus on quantization