Principles of Computer Graphics and Image Processing Image Processing (10) RNDr. Martin Madaras, PhD. martin.madaras@stuba.sk
Computer Graphics Image processing Representing and manipulation of 2D images Modeling Representing and manipulation of 2D and 3D objects Rendering Constructing images from virtual models Animation Simulating changes over time 2
How the lectures should look like #1 Ask questions, please!!! - Be communicative - www.slido.com #PPGSO10 - More active you are, the better for you! - 3
Image Processing - Image Filtering / Image Manipulation - Pixel operations Filtering - Composition - Quantization - Warping and Morphing - Sampling, Reconstruction and Aliasing - 4
Pixel operations - Change the color values of every pixel - P’ = F(P) 5
Adding noise - Add random value to each color channel - Clamp to <0,1> range 6
Change brightness Simply scale pixel values and clamp to <0,1> range 7
Change contrast Compute mean luminance L = 0.3r+0.59g+0.11b Scale deviation from L and clamp to <0,1> 8
Grayscale r’, g’, b’ = 0.3r+0.59g+0.11b 9
Linear filtering Discretized convolution of functions Each pixel is a linear combination of pixels in its neighborhood 10
Blur Convolve with a filter that sums to 1 11
Edge detection Convolve with a filter that finds differences between pixels 12
Sharpen Sum edges with original image 13
Non Linear filtering Each pixel is non-linear function of input pixels A non-linear filter is one that cannot be done with convolution or Fourier multiplication The median is NOT linear because med( f{i} + g{i} ) != med( f{i} ) + med( g{i} ) med( {1,2,3} + {5,4,6}) = med( {6,6,9} ) = 6 med( {1,2,3} ) + med( {5,4,6} ) = 2 + 5 14
Blending Combine multiple images, produce new image Per-pixel operation blend = F( base , source ) Image dimensions may not be identical 15
Normal Blending Linear combination of pixels from both images blend(x,y) = base(x,y)(1-t) + source(x,y)t t is from <0,1> t = 0 t = 0.5 t = 1 base blend source 16
Normal Blending Linear combination of pixels from both images blend(x,y) = base(x,y)(1-t) + source(x,y)t t is from <0,1> t = 0 t = 0.5 t = 1 base blend source 17
Linear Interpolation Compute value v that is a linear combination of v0 and v1 Use argument t to specify how close v is to v1 using <0,1> range v = v0*(1-t)+v1*t float lerp(float v0, float v1, float t) { return v0*(1-t)+v1*t; } 18
Additive Blending Add pixels from both images Clamp the result into the <0,1> range blend(x,y) = base(x,y) + source(x,y) base source base + source 19
Subtract Subtract pixels from both images Clamp the result into the <0,1> range blend(x,y) = base(x,y) - source(x,y) base source base - source 20
Difference Compute the difference between images White source inverts base blend(x,y) = abs(source(x,y)-base(x,y)) base source |source-base| 21
Masking How to blend parts of the image? We need a way to select sections of the image Idea. How about using another image ... ? 22
Mask White region is transparent Black regions are opaque Use a 1-bit image to select areas of interest base mask masked area 23
Mask composition Blend two images with mask blend(x,y) = base(x,y) if mask(x,y) is 1 blend(x,y) = source(x,y) if mask(x,y) is 0 base + source composite 24
Mask Problems Masks are 1-bit, no smooth edges What about transparent objects such as glass? We need to work with additional image? 25
Alpha Blending Idea. Store pixel transparency per pixel! Alvy Ray Smith, late1970s Pixel = (r, g, b, a ), added alpha channel Let a define the opacity of the pixel a = 0, pixel is transparent a = 1, pixel is opaque Opacity depth is usually same as for colors 26
Premultiplied Color Thomas Porter and Tom Duff, 1984 (r, g, b, a ) represents a pixel that is a covered by the color C=(r/ a , g/ a , b/ a ) Store components premultiplied by a We can display (r, g, b) values directly Why? Closure in composition algebra Note: Many images do not use premultiplied color 27
Premultiplied Color What is the meaning of the following? (0, 1, 0, 1) = (0, ½, 0, 1) = (0, ½, 0, ½) = (0, ½, 0, 0) = 28
Premultiplied Color What is the meaning of the following? (0, 1, 0, 1) = full green, opaque (0, ½, 0, 1) = half green, opaque (0, ½, 0, ½) = full green, partially transparent (0, ½, 0, 0) = transparent 29
Semi-transparent Objects Suppose we put A over B over background G How much of B is blocked by A ? A B G 30
Semi-transparent Objects Suppose we put A over B over background G How much of B is blocked by A ? a A A B G 31
Semi-transparent Objects How much of B is shown through A ? A B G 32
Semi-transparent Objects How much of G is shown through both A and B? A B G 33
Semi-transparent Objects How much of G is shown through both A and B? (1- a A) (1- a B) A B G 34
Opaque Objects How do we combine 2 partially covered objects? 3 Possible colors (0, A, B) 4 Regions (0, A, B, AB) 35
Composition Algebra 12 reasonable combinations 36
Example: C = A over B For colors that are not premultiplied : C = A a A + (1 – a A) B a B a C = a A + (1 – a A) a B For colors that are premultiplied : C = A + (1 – a A) B a C = a A + (1 – a A) a B 37
Example: Masks Photoshop masks and layers 38
Example: Transparency Multiple blend modes and transparency 39
Example: Green Screen 40
Image Processing - Image Filtering / Image Manipulation - Pixel operations Filtering - Composition - Quantization - Warping and Morphing - Sampling, Reconstruction and Aliasing - 41
Image Processing - Image Filtering / Image Manipulation - Pixel operations Filtering - Composition - Quantization - Halftoning - Dithering - Warping and Morphing - Sampling, Reconstruction and Aliasing - 42
Quantization Artifact due to limited intensity resolution Frame buffers have limited number of bits per pixel Physical devices have limited dynamic range 43
Uniform Quantization P(x,y) = trunc(I(x,y)) 44
Quantization Grayscale image with decreasing bits per pixel How to prevent dramatic decrease in quality? 45
Reducing Effects of Quantization Halftoning Classical halftoning Halftoning Patterns Dithering Random dither Ordered dither Error diffusion dither 46
Classical Halftoning Use dot size to represent intensity Area of dots proportional to intensity in image 47
Halftone Patterns Use cluster of pixels to represent intensity Trade spatial resolution for intensity resolution How many intensities are there for n x n? 48
Dithering Distribute errors among pixels Exploit spatial integration in our eye Display greater range of perceptible intensities 8bit 1bit 1bit dithered 49
Random Dither Randomize quantization errors Errors will appear as noise P(x,y) = trunc(I(x,y)+noise(x,y)) 50
Random Dither Results are ... Random 8 bit 1 bit 1bit random dither 51
Ordered Dither Pseudo-random quantization errors Matrix stores pattern of thresholds n = 2 for each y for each x oldpixel = I[x][y] + D[x mod n][y mod n] P[x][y] = trunc(oldpixel) 52
Ordered Dither Slightly better result 8 bit 1 bit 1 bit Ordered dither 53
Error Diffusion Dither Errors are distributed to pixels right and below Robert W. Floyd and Louis Steinberg, 1976 for each y for each x P[x][y] = trunc(I[x][y]) # Pass error to other pixels e = I[x][y] - P[x][ y] I[x+1][y] = I[x+1][y]+7/16*e I[x-1][y+1] = I[x-1][y+1]+3/16*e I[x][y+1] = I[x][y+1]+5/16*e I[x+1][y+1] = I[x+1][y+1]+1/16*e 54
Dither Comparison 8 bit 1 bit 1 bit 1 bit Original Random Ordered Floyd-Steinberg 55
Image Processing - Image Filtering / Image Manipulation - Pixel operations Filtering - Composition - Quantization - Warping and Morphing - Scale - Rotate - Arbitrary Warps - Sampling, Reconstruction and Aliasing - 56
Warping - Transform image pixels - Mapping Forward - Inverse - - Resampling 57
Mapping - Define image transformation Describe the destination (x, y) for every location (u, v) in the source (or - vice-versa, if inversible) v y u x 58
Recommend
More recommend