Computer Graphics Filling & Color.

Slides:



Advertisements
Similar presentations
Polygon Scan Conversion – 11b
Advertisements

CS 450: COMPUTER GRAPHICS FILLING POLYGONS SPRING 2015 DR. MICHAEL J. REALE.
Polygon Rasterization
CS 445 / 645 Introduction to Computer Graphics Lecture 13 Color Color.
Introduction to Computer Graphics ColorColor. Specifying Color Color perception usually involves three quantities: Hue: Distinguishes between colors like.
Different types of Polygons Simple Convex Simple Concave Non-simple : self-intersecting With holes ConvexConcaveSelf-intersecting.
CPCS 391 Computer Graphics 1 Lecture 5: Polygon Filling
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Color Week 5, Fri Feb.
School of Computing Science Simon Fraser University
Scan Conversion II Revision 1.4 2/13/07 Copyright 2006, Dr. Zachary Wartell, UNCC, All Rights Reserved.
Now Playing: Big Bird Eddie Floyd from The Complete Stax-Volt Singles Volume 1 ( ) Released April 30, 1991.
What is color for?.
1 CSCE441: Computer Graphics: Color Models Jinxiang Chai.
Color Models AM Radio FM Radio + TV Microwave Infrared Ultraviolet Visible.
TOPIC 4 PART III FILL AREA PRIMITIVES POLYGON FILL AREAS CGMB214: Introduction to Computer Graphics.
Digital Image Processing Colour Image Processing.
CS 376 Introduction to Computer Graphics 01 / 26 / 2007 Instructor: Michael Eckmann.
CGMB 314 Intro to Computer Graphics Fill Area Primitives.
Polygon Scan Conversion and Z-Buffering
CS 445 / 645: Introductory Computer Graphics Color.
Graphics Graphics Korea University cgvr.korea.ac.kr Raster Graphics 고려대학교 컴퓨터 그래픽스 연구실.
CS 445 / 645 Introduction to Computer Graphics Lecture 13 Color Color.
Color and Resolution Introduction to Digital Imaging.
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
CSC361/ Digital Media Burg/Wong
Graphics Lecture 4: Slide 1 Interactive Computer Graphics Lecture 4: Colour.
DIGITAL IMAGE. Basic Image Concepts An image is a spatial representation of an object An image can be thought of as a function with resulting values of.
1 CSCE441: Computer Graphics: Color Models Jinxiang Chai.
Introduction to Computer Graphics
Color Models. Color models,cont’d Different meanings of color: painting wavelength of visible light human eye perception.
Greg Humphreys CS445: Intro Graphics University of Virginia, Fall 2003 Raster Graphics and Color Greg Humphreys University of Virginia CS 445, Fall 2003.
1 CSCE441: Computer Graphics: Color Models Jinxiang Chai.
Computer Graphics Filling. Filling Polygons So we can figure out how to draw lines and circles How do we go about drawing polygons? We use an incremental.
Lecture 15: Raster Graphics and Scan Conversion
Rasterization Overview Raster Display Device. Scan Conversion / Rasterization: converting vector graphics into raster graphics (determining pixels in.
Computer Graphics CC416 Week 14 Filling Algorithms.
Computer Graphics Lecture 08 Taqdees A. Siddiqi Computer Graphics Filled Area Primitives I Lecture 08 Taqdees A. Siddiqi
Computer Graphics: Achromatic and Coloured Light.
1 of 32 Computer Graphics Color. 2 of 32 Basics Of Color elements of color:
COMPUTER GRAPHICS CS 482 – FALL 2016 CHAPTER 28 COLOR COLOR PERCEPTION CHROMATICITY COLOR MODELS COLOR INTERPOLATION.
OUTPUT PRIMITIVES CEng 477 Computer Graphics METU, 2004.
Color Models Light property Color models.
ITEC2110, Digital Media Chapter 2 Fundamentals of Digital Imaging
© 2016 Pearson Education, Inc., Hoboken, NJ. All rights reserved.
Half Toning Dithering RGB CMYK Models
Color Image Processing
Color Image Processing
Computer Graphics Filling.
COLOR space Mohiuddin Ahmad.
Introduction to Polygons
Polygons.
Chapter 6: Color Image Processing
Color Image Processing
Computer Graphics Filled Area Primitives II Lecture 09 Taqdees A
Fill Area Algorithms Jan
Colour Theory Fundamentals
COMS 161 Introduction to Computing
Agenda Polygon Terminology Types of polygons Inside Test
Color Image Processing
Slides taken from Scott Schaefer
Prepared by Narendra V G CSE MIT
Agenda Polygon Terminology Types of polygons Inside Test
Prof. Harriet Fell Fall 2011 Lecture 9 – September 26, 2011
Color Image Processing
Rasterization Week 6, Mon Feb 12
Color Model By : Mustafa Salam.
Color Models l Ultraviolet Infrared 10 Microwave 10
Primitive Drawing Algorithm
NOTE.
Primitive Drawing Algorithm
Presentation transcript:

Computer Graphics Filling & Color

Basics Of Color elements of color:

Basics of Color Physics: Perception Illumination Reflection Electromagnetic spectra Reflection Material properties Surface geometry and microgeometry Perception Physiology and neurophysiology Perceptual psychology

Electromagnetic Spectrum

How well do we see color? What color do we see the best? Yellow-green at 550 nm What color do we see the worst? Blue at 440 nm Flashback: Color tables (color maps) for color storage

Humans and Light when we view a source of light, our eyes respond to hue: the color we see (red, green, purple) dominant frequency saturation: how far is color from grey how far is the color from gray (pink is less saturated than red, sky blue is less saturated than royal blue) brightness: how bright is the color how bright are the lights illuminating the object?

Hue hue (or simply, "color") is dominant wavelength integration of energy for all visible wavelengths is proportional to intensity of color

Saturation or Purity of Light how washed out or how pure the color of the light appears contribution of dominant light vs. other frequencies producing white light

Intensity, Brightness intensity : radiant energy emitted per unit of time, per unit solid angle, and per unit projected area of the source (related to the luminance of the source) brightness : perceived intensity of light

Combining Colors Additive (RGB) Subtractive (CMYK) Shining colored lights on a white ball Subtractive (CMYK) Mixing paint colors and illuminating with white light

Colour Matching Experiment Mixing of 3 primaries Target colour overlap Adjust intensities to match the colour

RGB Color Space (Color Cube) Define colors with (r, g, b) amounts of red, green, and blue

CMY Color Model CMY (short for Cyan, Magenta, Yellow, and key) is a subtractive color model.

The CMY Color Model Cyan, magenta, and yellow are the complements of red, green, and blue We can use them as filters to subtract from white The space is the same as RGB except the origin is white instead of black This is useful for hardcopy devices like laser printers If you put cyan ink on the page, no red light is reflected

YIQ Color Space YIQ is the color model used for color TV in America. Y is brightness, I & Q are color Note: Y is the same as Color space XYZ Result: Use the Y alone and backwards compatibility with B/W TV! I and Q are hue and purity These days when you convert RGB image to B/W image, the green and blue components are thrown away and red is used to control shades of grey (usually)

Converting Color Spaces Y = 0.299 R + 0.587 G + 0.114 B I = R – Y Q = B – Y Converting between color models can also be expressed as such a matrix transform: Note the relative unimportance of blue in computing the Y

Converting Color Spaces

HSV Color Space A more intuitive color space H = Hue S = Saturation V = Value (or brightness) Saturation Value Hue

HSV Color Model Figure 15.16&15.17 from H&B H S V Color 0 1.0 1.0 Red 120 1.0 1.0 Green 240 1.0 1.0 Blue * 0.0 1.0 White * 0.0 0.5 Gray * * 0.0 Black 60 1.0 1.0 ? 270 0.5 1.0 ? 270 0.0 0.7 ? Figure 15.16&15.17 from H&B

Intuitive Color Spaces

Halftoning A technique used in newspaper printing Only two intensities are possible, blob of ink and no blob of ink But, the size of the blob can be varied Also, the dither patterns of small dots can be used

Halftoning

Halftoning – dot size

Spatial versus Intensity Resolution Halftone Approximation: Dither n ´ n pixels encode n2 + 1 intensity levels The distribution of intensities is randomized: dither noise, to avoid repeating visual artifacts

Dithering Halftoning for color images

Filling Polygons So we can figure out how to draw lines and circles How do we go about drawing polygons? We use an incremental algorithm known as the scan-line algorithm

Polygon Ordered set of vertices (points) Usually counter-clockwise Two consecutive vertices define an edge Left side of edge is inside Right side is outside Last vertex implicitly connected to first In 3D vertices are co-planar

Filling Polygons Three types of polygons Simple convex 2. simple concave 3. non-simple (self-intersection) Convex polygons have the property that intersecting lines crossing it either one (crossing a corner), two (crossing an edge, going through the polygon and going out the other edge), or an infinite number of times (if the intersecting line lies on an edge).

Convex Does a straight line connecting ANY two points that are inside the polygon intersect any edges of the polygon?

Concave The polygon edges may also touch each other, but they may not cross one another.

Complex Complex polygons are basically concave polygons that may have self-intersecting edges. The complexity arises while distinguishing which side is inside the polygon when filling it.

Some Problems 1. Which pixels should be filled in? 2. Which happened to the top pixels? To the rightmost pixels?

Flood Fill 4-fill Neighbor pixels are only up, down, left, or right from the current pixel 8-fill Neighbor pixels are up, down, left, right, or diagonal

4 vs 8 connected Define: 4-connected versus 8-connected, its about the neighbors

4 vs 8 connected  Fill Result: 4-connected versus 8-connected “seed pixel”

Flood Fill Algorithm: Draw all edges into some buffer Choose some “seed” position inside the area to be filled As long as you can “Flood out” from seed or colored pixels 4-Fill, 8-Fill

Flood Fill Algorithm Seed Position Edge “Color” Fill “Color” void boundaryFill4(int x, int y, int fill, int boundary) { int curr; curr = getPixel(x, y); if ((current != boundary) && (current != fill)) { setColor(fill); setPixel(x, y); boundaryFill4(x+1, y, fill, boundary); boundaryFill4(x-1, y, fill, boundary); boundaryFill4(x, y+1, fill, boundary); boundaryFill4(x, y-1, fill, boundary); } Fill “Color”

Scan-Line Polygon Example Polygon Vertices Maxima / Minima Edge Pixels Scan Line Fill

Scan Line Algorithms Create a list of vertex events (bucket sorted by y)

Initialize all of the edges

For each edge, the following information needs to be kept in a table: The minimum y value of the two vertices The maximum y value of the two vertices The x value associated with the minimum y value The slope of the edge

An Example (10, 10) 1 (10, 16) 2 (16, 20) 3 (28, 10) 4 (28, 16) 5 (22, 10)

Scan-Line Polygon Fill Algorithm 2 4 6 8 10 Scan Line 12 14 16

Scan-Line Polygon Fill Algorithm The basic scan-line algorithm is as follows: Find the intersections of the scan line with all edges of the polygon Sort the intersections by increasing x coordinate Fill in all pixels between pairs of intersections that lie interior to the polygon

Scanline Algorithms given vertices, fill in the pixels arbitrary polygons (non-simple, non-convex) build edge table for each scanline obtain list of intersections, i.e., AEL use parity test to determine in/out and fill in the pixels triangles split into two regions fill in between edges

Scan-Line Polygon Fill Algorithm (cont…)

Examples:

Solutions:

Scan Line Algorithms Create a list of the edges intersecting the first scanline Sort this list by the edge’s x value on the first scanline Call this the active edge list

1. Horizontal Edges

Polygon Fill B C Parity 0 = even 1 = odd Parity 1 D A E F

Polygon Fill 2 B C Parity 0 = even 1 = odd F D Parity 1 1 A E

2. Bottom and Left Edges vs. Top and Right Edges

Edge Tables edge table (ET) active edge table (AET) store edges sorted by y in linked list at ymin, store ymax, xmin, slope active edge table (AET) active: currently used for computation store active edges sorted by x update each scanline, store ET values + current_x for each scanline (from bottom to top) do EAT bookkeeping traverse EAT (from leftmost x to rightmost x) draw pixels if parity odd

Scanline Rasterization Special Handling Intersection is an edge end point, say: (p0, p1, p2) ?? (p0,p1,p1,p2), so we can still fill pairwise In fact, if we compute the intersection of the scanline with edge e1 and e2 separately, we will get the intersection point p1 twice. Keep both of the p1.

Scanline Rasterization Special Handling But what about this case: still (p0,p1,p1,p2)

Edge Table

Active Edge Table (AET) A list of edges active for current scanline, sorted in increasing x y = 9 y = 8

Edge Table Bookkeeping setup: sorting in y bucket sort, one bucket per pixel add: simple check of ET[current_y] delete edges if edge.ymax > current_y main loop: sorting in x for polygons that do not self-intersect, order of edges does not change between two scanlines so insertion sort while adding new edges suffices

Parity (Odd-Even) Rule Begin from a point outside the polygon, increasing the x value, counting the number of edges crossed so far, a pixel is inside the polygon if the number of edges crossed so far (parity) is odd, and outside if the number of edges crossed so far (parity) is even. This is known as the parity, or the odd-even, rule. It works for any kind of polygons. Parity starting from even even odd odd even odd even odd

Polygon Scan-conversion Algorithm Construct the Edge Table (ET); Active Edge Table (AET) = null; for y = Ymin to Ymax Merge-sort ET[y] into AET by x value Fill between pairs of x in AET for each edge in AET if edge.ymax = y remove edge from AET else edge.x = edge.x + dx/dy sort AET by x value end scan_fill

Rasterization Special Cases -Edge Shortening Trick: -Recall Odd-Parity Rule Problem: -Implement “Count Once” case with edge shortening: A A B B B B B B ' ' C C xA,yB’,1/mAB xC,yB’,1/mCB

Polygon Rasterization Ignore horizontal lines 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Ignore horizontal lines Sort edges by smaller y coordinate 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax For each scanline… Add edges where y = ymin Sorted by x Then by dx/dy 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax Plotting rules for when segments lie on pixels Plot lefts Don’t plot rights Plot bottoms Don’t plot tops 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 1 2/7 8 A 4/2 3 y = 1 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 1 2/7 2/7 8 A 3 4/2 B -3/1 C 0/3 5 y = 2 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 1 4/7 2/7 8 C 0/3 5 y = 3 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 1 6/7 2/7 8 C 0/3 5 y = 4 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 2 1/7 2/7 8 D 1/4 9 y = 5 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 2 3/7 2/7 8 F 4 -1/2 E 6 1/1 9 D 8 1/4 1/4 y = 6 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax G 2 5/7 2/7 8 F 3 1/2 -1/2 E 7 1/1 9 D 8 2/4 1/4 y = 7 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax E 8 1/1 9 D 8 3/4 1/4 y = 8 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Polygon Rasterization Edge x dx/dy ymax y = 9 Delete y = ymax edges Update x Add y = ymin edges For each pair x0,x1, plot from ceil(x0) to ceil(x1) – 1 9 8 D E 7 F 6 G Edge ymin A 1 G B 2 C D 5 E 6 F 5 4 C 3 B 2 A 1 1 2 3 4 5 6 7 8 9

Scan Line Algorithms For each scanline: Maintain active edge list (using vertex events) Increment edge’s x-intercepts, sort by x-intercepts Output spans between left and right edges delete insert replace

Penetrating Polygons False edges and new polygons! Compare z value & intersection when AET is calculated

Example Let’s apply the rules to scan line 8 below. We fill in the pixels from point a, pixel (2, 8), to the first pixel to the left of point b, pixel (4, 8), and from the first pixel to the right of point c, pixel (9, 8), to one pixel to the left of point d, pixel (12, 8). For scan line 3, vertex A counts once because it is the ymin vertex of edge FA, but the ymax vertex of edge AB; this causes odd parity, so we draw the span from there to one pixel to the left of the intersection with edge CB. odd even a b c d A B C D E F

Four Elaborations (cont.) D E F G H I J A B C D F G H I J E

Halftoning For 1-bit (B&W) displays, fill patterns with different fill densities can be used to vary the range of intensities of a polygon. The result is a tradeoff of resolution (addressability) for a greater range of intensities and is called halftoning. The pattern in this case should be designed to avoid being noticed. These fill patterns are chosen to minimize banding.