Computer Graphics

103
1 Computer Graphics

Transcript of Computer Graphics

Page 1: Computer Graphics

1

Computer Graphics

Page 2: Computer Graphics

2

Computer Graphics involves display, manipulation and storage of pictures and experimental data for proper visualization using a computer.

Typical graphics system comprises of a host computer with support of fast processor, large memory, frame buffer and

• Display devices (color monitors),• Input devices (mouse, keyboard, joystick, touch screen, trackball)• Output devices (LCD panels, laser printers, color printers. Plotters etc.)• Interfacing devices such as, video I/O,TV interface etc.

Introduction

Page 3: Computer Graphics

3

Page 4: Computer Graphics

4

Page 5: Computer Graphics

5

Page 6: Computer Graphics

6

Classification of Computer Graphics by Object and Picture Type of Object

2D3DPictorial representationLine drawingGray scale imageColor imageLine drawing (or wire-frame)Line drawing, with various affects Shaded, color image with variouseffectsInteractive Graphics

Page 7: Computer Graphics

7

Computer Graphics is about animation (films)

Major driving force now

Page 8: Computer Graphics

8

Games are very important in Computer Graphics

Page 9: Computer Graphics

9

Medical Imaging is another driving force

Much financial support

Promotes linking of graphics with video, scans, etc.

Page 11: Computer Graphics

11

Scientific Visualisation

To view below and above our visual range

Page 12: Computer Graphics

12

History

Page 13: Computer Graphics

13

Ivan Sutherland (1963) - SKETCHPAD

• pop-up menus

• constraint-based drawing

• hierarchical modeling

Page 14: Computer Graphics

14

Display hardware• vector displays

– 1963 – modified oscilloscope

– 1974 – Evans and Sutherland Picture System

• raster displays

– 1975 – Evans and Sutherland frame buffer

– 1980s – cheap frame buffers bit-mapped personal computers

– 1990s – liquid-crystal displays laptops

– 2000s – micro-mirror projectors digital cinema

• other

– stereo, head-mounted displays

– autostereoscopic displays

– tactile, haptic, sound

Page 15: Computer Graphics

15

Input hardware• 2D

– light pen, tablet, mouse, joystick, track ball, touch panel, etc.

– 1970s & 80s - CCD analog image sensor + frame grabber

– 1990s & 2000’s - CMOS digital sensor + in-camera processing

[Nayar00]

high-X imaging (dynamic range, resolution, depth of field,…)

Page 16: Computer Graphics

16

• negative film = 130:1 (7 stops)• paper prints = 46:1• [Debevec97] = 250,000:1 (18 stops)

Page 17: Computer Graphics

17

Input hardware• 2D

– light pen, tablet, mouse, joystick, track ball, touch panel, etc.

– 1970s & 80s - CCD analog image sensor + frame grabber

– 1990s & 2000’s - CMOS digital sensor + in-camera processing high-X imaging (dynamic range, resolution, depth of field,…)

• 3D

– 3D trackers

– multiple cameras

– active rangefinders

• other

– data gloves

– voice

Page 18: Computer Graphics

18

Rendering

• 1960s - the visibility problem– Roberts (1963), Appel (1967) - hidden-line algorithms– Warnock (1969), Watkins (1970) - hidden-surface

algorithms– Sutherland (1974) - visibility = sorting

Page 19: Computer Graphics

19

• 1960s - the visibility problem

– Roberts (1963), Appel (1967) - hidden-line algorithms

– Warnock (1969), Watkins (1970) - hidden-surface algorithms

– Sutherland (1974) - visibility = sorting

• 1970s - raster graphics

– Gouraud (1971) - diffuse lighting

– Phong (1974) - specular lighting

– Blinn (1974) - curved surfaces, texture

– Catmull (1974) - Z-buffer hidden-surface algorithm

– Crow (1977) - anti-aliasing

Page 20: Computer Graphics

20

• 1960s - the visibility problem– Roberts (1963), Appel (1967) - hidden-line algorithms– Warnock (1969), Watkins (1970) - hidden-surface algorithms– Sutherland (1974) - visibility = sorting

• 1970s - raster graphics– Gouraud (1971) - diffuse lighting– Phong (1974) - specular lighting– Blinn (1974) - curved surfaces, texture– Catmull (1974) - Z-buffer hidden-surface algorithm– Crow (1977) - anti-aliasing

Page 21: Computer Graphics

21

• early 1980s - global illumination– Whitted (1980) - ray tracing– Goral, Torrance et al. (1984), Cohen (1985) -

radiosity– Kajiya (1986) - the rendering equation

Page 22: Computer Graphics

22

• early 1980s - global illumination– Whitted (1980) - ray tracing– Goral, Torrance et al. (1984), Cohen (1985) - radiosity– Kajiya (1986) - the rendering equation

• late 1980s - photorealism– Cook (1984) - shade trees– Perlin (1985) - shading languages– Hanrahan and Lawson (1990) - RenderMan

Page 23: Computer Graphics

23

• early 1990s - non-photorealistic rendering

– Drebin et al. (1988), Levoy (1988) - volume rendering– Haeberli (1990) - impressionistic paint programs– Salesin et al. (1994-) - automatic pen-and-ink

illustration– Meier (1996) - painterly rendering

Page 24: Computer Graphics

24

• early 1990s - non-photorealistic rendering– Drebin et al. (1988), Levoy (1988) - volume rendering– Haeberli (1990) - impressionistic paint programs– Salesin et al. (1994-) - automatic pen-and-ink

illustration– Meier (1996) - painterly rendering

Page 25: Computer Graphics

25

Basic raster graphics algorithms for drawing 2d primitives.

How do things end up on the screen?

Page 26: Computer Graphics

26

System Bus

CPUDisplay

ProcessorSystem Memory

Display Processor Memory

Frame Buffer

Video Controller

MonitorMonitor

Architecture Of A Graphics System

Page 27: Computer Graphics

27

Output Devices

• There are a range of output devices currently available:– Printers/plotters– Cathode ray tube displays– Plasma displays– LCD displays– 3 dimensional viewers– Virtual/augmented reality headsets

Page 28: Computer Graphics

28

Basic Cathode Ray Tube (CRT)

• Fire an electron beam at a phosphor coated screen

Page 29: Computer Graphics

29

Raster Scan Systems

Draw one line at a time

Page 30: Computer Graphics

30

Colour CRT

• An electron gun for each colour – red, green and blue

Page 31: Computer Graphics

31

Applying voltages to crossing pairs of conductors causes the gas (usually a mixture including neon) to break down into a glowing plasma of electrons and ions

Plasma-Panel Displays

Page 32: Computer Graphics

32

Liquid Crystal Displays

• Light passing through the liquid crystal is twisted so it gets through the polarizer

• A voltage is applied using the crisscrossing conductors to stop the twisting and turn pixels off

Page 33: Computer Graphics

33

Scan Conversion• A line segment in a scene is defined by

the coordinate positions of the line end-points

x

y

(2, 2)

(7, 5)

Page 34: Computer Graphics

34

• But what happens when we try to draw this on a pixel based display?

• How do we choose which pixels to turn on?

Page 35: Computer Graphics

35

• Considerations to keep in mind:– The line has to look good

• Avoid jaggies

– It has to be lightening fast!• How many lines need to be drawn in a typical

scene?• This is going to come back to bite us again and

again

Page 36: Computer Graphics

36

Line Equations

• Let’s quickly review the equations involved in drawing lines

x

y

y0

yend

xendx0

Slope-intercept line equation:

bxmy where:

0

0

xx

yym

end

end

00 xmyb

Page 37: Computer Graphics

37

• The slope of a line (m) is defined by its start and end coordinates

• The diagram below shows some examples of lines and their slopes

m = 0

m = -1/3

m = -1/2

m = -1

m = -2m = -4

m = ∞

m = 1/3

m = 1/2

m = 1

m = 2m = 4

m = 0

Page 38: Computer Graphics

38

• Find corresponding y coordinate for each unit x coordinate

example:

x

y

(2, 2)

(7, 5)

2 7

2

5

Page 39: Computer Graphics

39

1

2

3

4

5

0

1 2 3 4 5 60 7

Page 40: Computer Graphics

40

x

y

(2, 2)

(7, 5)

2 3 4 5 6 7

2

5

5

3

27

25

m5

42

5

32 b

• First work out m and b:

• Now for each x value work out the y value:

5

32

5

43

5

3)3( y

5

13

5

44

5

3)4( y

5

43

5

45

5

3)5( y

5

24

5

46

5

3)6( y

Page 41: Computer Graphics

41

Now just round off the results and turn on these pixels to draw our line

35

32)3( y

35

13)4( y

45

43)5( y

45

24)6( y

0 1 2 3 4 5 6 7 8

0

1

2

3

4

5

6

7

Page 42: Computer Graphics

42

However, this approach is just way too slow

In particular look out for:– The equation y = mx + b requires the multiplication of m by x– Rounding off the resulting y coordinates

We need a faster solution

In the previous example we chose to solve the parametric line equation to give us the y coordinate for each unit x coordinate

What if we had done it the other way around?

So this gives us:

• where: and

m

byx

0

0

xx

yym

end

end

00 xmyb

Page 43: Computer Graphics

43

Leaving out the details this gives us:

We can see easily that this line doesn’t lookvery good!

We choose which way to work out the line pixels based on the slope of the line

0 1 2 3 4 5 6 7 8

0

1

2

3

4

5

6

7

43

23)3( x 5

3

15)4( x

Page 44: Computer Graphics

44

If the slope of a line is between -1 and 1 then we work out the y coordinates for a line based on it’s unit x coordinates

Otherwise we do the opposite – x coordinates are computed based on unit y coordinates

m = 0

m = -1/3

m = -1/2

m = -1

m = -2m = -4

m = ∞

m = 1/3

m = 1/2

m = 1

m = 2m = 4

m = 0

Page 45: Computer Graphics

45

#include <stdio.h>#include <graphics.h>

void main(void){

int graphdriver = DETECT, graphmode, color, n, m;

initgraph(&graphdriver, &graphmode, "c:\\tc");/* detect and initialize graphics system */for(n=0; n<50; n++){ putpixel(250+n,350,BLUE); /* draw a horizontal line */}

for(m=0; m<5; m++){ for(n=0; n<5; n++) {

putpixel(250+n,250+m,RED); }}

}

Page 46: Computer Graphics

46

Initializes the graphics system

Declaration: void far initgraph(int far *graphdriver,int far *graphmode, char far *pathtodriver);

Remarks:To start the graphics system, you must first call initgraph.

initgraph initializes the graphics system by loading a graphics driver from disk (or validating a registered driver) then putting the system into graphics mode.

initgraph also resets all graphics settings (color, palette, current position, viewport, etc.) to their defaults, then resets graphresult to 0.

*graphdriver : Integer that specifies the graphics driver to be used. You can give graphdriver a value using a constant of the graphics_drivers enumeration type.

Page 47: Computer Graphics

47

*graphmode :Integer that specifies the initial graphics mode (unless *graphdriver = DETECT). If *graphdriver = DETECT, initgraph sets *graphmode to the highest resolution available for the detected driver. You can give *graphmode a value using a constant of the graphics_modes enumeration type.

pathtodriver : Specifies the directory path where initgraph looks fo graphics drivers (*.BGI) first. þ If they're not there, initgraph looks in the current directory. þ If pathtodriver is null, the driver files must be i the current directory.This is also the path settextstyle searches for the stroked character font files (*.CHR).

*graphdriver and *graphmode must be set to valid graphics_drivers andgraphics_mode values or you'll get unpredictable results. (The exception isgraphdriver = DETECT.)After a call to initgraph, *graphdriver is set to the current graphicsdriver, and *graphmode is set to the current graphics mode.Return Value:initgraph always sets the internal error code.On success, initgraph sets the code to 0 On error, initgraph sets *graphdriver to-2, -3, -4, or -5, and graphresul returns the same value.

Page 48: Computer Graphics

48

Towards the Ideal Line

• We can only do a discrete approximation

• Illuminate pixels as close to the true path as possible, consider bi-level display only– Pixels are either lit or not lit

Page 49: Computer Graphics

49

What is an ideal line

• Must appear straight and continuous– Only possible axis-aligned and 45o lines

• Must interpolate both defining end points• Must have uniform density and intensity

– Consistent within a line and over all lines– What about antialiasing?

• Must be efficient, drawn quickly– Lots of them are required!!!

Page 50: Computer Graphics

50

Simple Line

Based on slope-intercept algorithm from algebra:

y = mx + b

Simple approach:

increment x, solve for y

Floating point arithmetic required

Page 51: Computer Graphics

51

Does it Work?It seems to work okay for lines with a slope of 1 or less,

but doesn’t work well for lines with slope greater than 1 – lines become more discontinuous in appearance and we must add more than 1 pixel per column to make it work.

Solution? - use symmetry.

Page 52: Computer Graphics

52

Modify algorithm per octant

OR, increment along x-axis if dy<dx else increment along y-axis

Page 53: Computer Graphics

53

DDA algorithm

• DDA = Digital Differential Analyser– finite differences

• Treat line as parametric equation in t :

)()(

)()(

121

121

yytyty

xxtxtx

),(

),(

22

11

yx

yxStart point -End point -

Page 54: Computer Graphics

54

DDA Algorithm• Start at t = 0

• At each step, increment t by dt

• Choose appropriate value for dt

• Ensure no pixels are missed:– Implies: and

• Set dt to maximum of dx and dy

)()(

)()(

121

121

yytyty

xxtxtx

dt

dyyy

dt

dxxx

oldnew

oldnew

1dt

dx1

dt

dy

Page 55: Computer Graphics

55

DDA algorithm

line(int x1, int y1, int x2, int y2)

{float x,y;int dx = x2-x1, dy = y2-y1;int n = max(abs(dx),abs(dy));float dt = n, dxdt = dx/dt, dydt = dy/dt;

x = x1;y = y1;while( n-- ) {

point(round(x),round(y));x += dxdt;y += dydt;}

}

n - range of t.

Page 56: Computer Graphics

56

• Again the values calculated by the equations used by the DDA algorithm must be rounded to match pixel values

(xk, yk) (xk+1, yk+m)

(xk, round(yk))

(xk+1, round(yk+m))

(xk, yk) (xk+ 1/m, yk+1)

(round(xk), yk)

(round(xk+ 1/m), yk+1)

Page 57: Computer Graphics

57

DDA algorithm

• Still need a lot of floating point arithmetic.– 2 ‘round’s and 2 adds per pixel.

• Is there a simpler way ?

• Can we use only integer arithmetic ?– Easier to implement in hardware.

Page 58: Computer Graphics

58

Observation on lines.

while( n-- ) {draw(x,y);move right;if( below line )move up;}

Page 59: Computer Graphics

59

Testing for the side of a line.

• Need a test to determine which side of a line a pixel lies.

• Write the line in implicit form:

0),( cbyaxyxF

• Easy to prove F<0 for points above the line, F>0 for points below.

Page 60: Computer Graphics

60

Testing for the side of a line.

• Need to find coefficients a,b,c.• Recall explicit, slope-intercept form :

• So:

0),( cbyaxyxF

bxdx

dyybmxy so and

0..),( cydxxdyyxF

Page 61: Computer Graphics

61

Decision variable.

PreviousPixel(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Evaluate F at point M

Referred to as decision variable

)2

1,1( pp yxFd

M

NE

E

Page 62: Computer Graphics

62

Decision variable.

Evaluate d for next pixel, Depends on whether E or NE Is chosen :

If E chosen :

cybxayxFd ppppnew )2

1()2()

2

1,2(

But recall :

cybxa

yxFd

pp

ppold

)2

1()1(

)2

1,1(

So :

dyd

add

old

oldnew

M

E

NE

PreviousPixel

(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Page 63: Computer Graphics

63

Decision variable.

If NE was chosen :

cybxayxFd ppppnew )2

3()2()

2

3,2(

So :

dxdyd

badd

old

oldnew

M

E

NE

PreviousPixel

(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Page 64: Computer Graphics

64

Summary of mid-point algorithm

• Choose between 2 pixels at each step based upon the sign of a decision variable.

• Update the decision variable based upon which pixel is chosen.

• Start point is simply first endpoint (x1,y1).

• Need to calculate the initial value for d

Page 65: Computer Graphics

65

Initial value of d.

2

)2

1()1()

2

1,1(

11

1111

bacbyax

cybxayxFdstart

But (x1,y1) is a point on the line, so F(x1,y1) =0

2/dxdydstart

Conventional to multiply by 2 to remove fraction doesn’t effect sign.

2),( 11

bayxF

Start point is (x1,y1)

Page 66: Computer Graphics

66

Bresenham algorithm

void MidpointLine(int x1,y1,x2,y2)

{

int dx=x2-x1;

int dy=y2-y1;

int d=2*dy-dx;

int increE=2*dy;

int incrNE=2*(dy-dx);

x=x1;

y=y1;

WritePixel(x,y);

while (x < x2) {if (d<= 0) {

d+=incrE;x++

} else {d+=incrNE;x++;y++;

}WritePixel(x,y);

}}

Page 67: Computer Graphics

67

Bresenham was (not) the end!

2-step algorithm by Xiaolin Wu:

(see Graphics Gems 1, by Brian Wyvill)

Treat line drawing as an automaton , or finite state machine, ie. looking at next two pixels of a line, easy to see that only a finite set of possibilities exist.

The 2-step algorithm exploits symmetry by simultaneously drawing from both ends towards the midpoint.

Page 68: Computer Graphics

68

Two-step Algorithm

Possible positions of next two pixels dependent on slope – current pixel in blue:

Slope between 0 and ½

Slope between ½ and 1

Slope between 1 and 2

Slope greater than 2

Page 69: Computer Graphics

69

Circle drawing.• Can also use Bresenham to draw circles.

• Use 8-fold symmetry

Choices forNext pixel

M

E

SE

PreviousPixel

Choices forCurrent pixel

Page 70: Computer Graphics

70

Circle drawing.

• Implicit form for a circle is:

2 2 2) ( ) ( ) , (r y y x x y x fc c

)32(chosen is E If

)522(chosen is SE If

poldnew

ppoldnew

xdd

yxdd

Functions are linear equations in terms of (xp,yp)

–Termed point of evaluation

Page 71: Computer Graphics

71

Problems with Bresenham algorithm

• Pixels are drawn as a single line unequal line intensity with change in angle.

Pixel density = n pixels/mm

Pixel density = 2.n pixels/mm

Can draw lines in darker colours according to line direction.-Better solution : antialiasing !-(eg. Gupta-Sproull algorithm)

Page 72: Computer Graphics

72

Summary of line drawing so far.

• Explicit form of line– Inefficient, difficult to control.

• Parametric form of line.– Express line in terms of parameter t– DDA algorithm

• Implicit form of line– Only need to test for ‘side’ of line.– Bresenham algorithm.– Can also draw circles.

Page 73: Computer Graphics

73

Page 74: Computer Graphics

74

Page 75: Computer Graphics

75

Page 76: Computer Graphics

76

Page 77: Computer Graphics

77

Page 78: Computer Graphics

78

Page 79: Computer Graphics

79

Page 80: Computer Graphics

80

Circle Midpoint Algorithm

draw pixels in this octant(draw others using symmetry)

(0,R)

(0,-R)

(R,0)(-R,0)

222),( RyxyxF Implicit function for circle

0),( yxF

0),( yxF

0),( yxF

on circle

inside

outside

x+

y+

Page 81: Computer Graphics

81

Choosing the Next Pixel

M

(x, y) (x+1, y)

(x+1, y+1)

E

SE

0)2/1,1( yxF

0)2/1,1( yxF

choose E

choose SE

)2/1,1()( yxFMFddecision variable d

Page 82: Computer Graphics

82

Change of d when E is chosen

Mold

(x, y) (x+1, y)

(x+1, y+1)

E

SE

(x+2, y)

(x+2, y+1)

Mnew

32

)2/1()1(

)2/1()2(222

222

xddd

Ryxd

Ryxd

oldnew

old

new

Page 83: Computer Graphics

83

Change of d when SE is chosen

Mold

(x, y) (x+1, y)E

SE

(x+1, y+2) (x+2, y+2)

Mnew

522

)2/1()1(

)2/3()2(222

222

yxddd

Ryxd

Ryxd

oldnew

old

new

Page 84: Computer Graphics

84

Initial value of d

Rd

RRd

RFd

MFd

4/5

)2/1()1(

)2/1,1(

)(

0

2220

0

00

(0,-R)

M0

(1,-R)

(1,-R+1)

Page 85: Computer Graphics

85

Midpoint Circle Algox = 0;y = -R;d = 5/4 – R; /* real */setPixel(x,y);while (y > x) {

if (d > 0) { /* E chosen */d += 2*x + 3;x++;

} else { /* SE chosen */d += 2*(x+y) + 5;x++; y++;

}setPixel(x,y);

}

Page 86: Computer Graphics

86

New Decision Variable

• Our circle algorithm requires arithmetic with real numbers.• Let’s create a new decision variable h

h=d-1/4

• Substitute h+1/4 for d in the code.• Note h > -1/4 can be replaced with h > 0 since h will always have an

integer value.

Page 87: Computer Graphics

87

New Circle Algorithm

x = 0;y = -R;h = 1 – R; setPixel(x,y);while (y > x) {

if (h > 0) { /* E chosen */h += 2*x + 3;x++;

} else { /* SE chosen */h += 2*(x+y) + 5;x++; y++;

}setPixel(x,y);

}

Page 88: Computer Graphics

88

Second-Order Differences

• Note that d is incremented by a linear expression each time through the loop.– We can speed things up a bit by tracking how these linear

expressions change.– Not a huge improvement since multiplication by 2 is just a left-

shift by 1 (e.g. 2*x = x<<1).

Page 89: Computer Graphics

89

2nd Order Difference when E chosen

• When E chosen, we move from pixel (x,y) to (x+1,y).

2

3)1(2

32

oldnew

new

old

EE

xE

xE

2

5)1(2

5)(2

oldnew

new

old

SESE

yxSE

yxSE

Page 90: Computer Graphics

90

2nd Order Difference when SE chosen

• When SE chosen, we move from pixel (x,y) to (x+1,y+1).

2

3)1(2

32

oldnew

new

old

EE

xE

xE

4

5)11(2

5)(2

oldnew

new

old

SESE

yxSE

yxSE

Page 91: Computer Graphics

91

New and Improved Circle Algorithm

x = 0; y = -R;h = 1 – R; dE = 3; dSE = -2*R + 5;setPixel(x,y);while (y > x) {

if (h > 0) { /* E chosen */h += dE;dE += 2; dSE += 2;x++;

} else { /* SE chosen */h += dSE;dE += 2; dSE += 4;X++; y++;

}setPixel(x,y);

}

Page 92: Computer Graphics

92

Page 93: Computer Graphics

93

Page 94: Computer Graphics

94

Page 95: Computer Graphics

95

Page 96: Computer Graphics

96

Page 97: Computer Graphics

97

Page 98: Computer Graphics

98

Page 99: Computer Graphics

99

Page 100: Computer Graphics

100

Page 101: Computer Graphics

101

Page 102: Computer Graphics

102

Page 103: Computer Graphics

103