Presentation is loading. Please wait.

Presentation is loading. Please wait.

2/17/04© University of Wisconsin, CS559 Spring 2004 Last Time Resampling –Ideal reconstruction –You can only ideally reconstruct band-limited functions.

Similar presentations


Presentation on theme: "2/17/04© University of Wisconsin, CS559 Spring 2004 Last Time Resampling –Ideal reconstruction –You can only ideally reconstruct band-limited functions."— Presentation transcript:

1 2/17/04© University of Wisconsin, CS559 Spring 2004 Last Time Resampling –Ideal reconstruction –You can only ideally reconstruct band-limited functions Otherwise high frequencies alias as lower frequencies when reconstructed –Point samples images should be reconstructed with sinc filters, but we don’t do this –Two ways to avoid aliasing: smooth (band-limit) the original image before sampling, or reconstruct with a filter close to a sinc Compositing –Alpha describes the opacity of a pixel –Compositing is always –Different F and G lead to different operations –Alpha comes from blue-screening, hand generation, or computer generated imagery

2 2/17/04© University of Wisconsin, CS559 Spring 2004 Today Painterly rendering The Graphics Pipeline

3 2/17/04© University of Wisconsin, CS559 Spring 2004 Painterly Filters Many methods have been proposed to make a photo look like a painting Today we look at one: Painterly-rendering with brushes of multiple sizes Basic ideas: –Build painting one layer at a time, from biggest to smallest brushes –At each layer, add detail missing from previous layer

4 2/17/04© University of Wisconsin, CS559 Spring 2004 Algorithm 1 function paint(sourceImage,R 1... R n ) // take source and several brush sizes { canvas := a new constant color image // paint the canvas with decreasing sized brushes for each brush radius R i, from largest to smallest do { // Apply Gaussian smoothing with a filter of size const * radius // Brush is intended to catch features at this scale referenceImage = sourceImage * G(fs R i ) // Paint a layer paintLayer(canvas, referenceImage, Ri) } return canvas }

5 2/17/04© University of Wisconsin, CS559 Spring 2004 Algorithm 2 procedure paintLayer(canvas,referenceImage, R) // Add a layer of strokes { S := a new set of strokes, initially empty D := difference(canvas,referenceImage) // euclidean distance at every pixel for x=0 to imageWidth stepsize grid do // step in size that depends on brush radius for y=0 to imageHeight stepsize grid do { // sum the error near (x,y) M := the region (x-grid/2..x+grid/2, y-grid/2..y+grid/2) areaError := sum(D i,j for i,j in M) / grid 2 if (areaError > T) then { // find the largest error point (x1,y1) := max D i,j in M s :=makeStroke(R,x1,y1,referenceImage) add s to S } paint all strokes in S on the canvas, in random order }

6 2/17/04© University of Wisconsin, CS559 Spring 2004 Results OriginalBiggest brush Medium brush addedFinest brush added

7 2/17/04© University of Wisconsin, CS559 Spring 2004 Point Style Uses round brushes We provide a routine to “paint” round brush strokes into an image for the project

8 2/17/04© University of Wisconsin, CS559 Spring 2004 Where to now… We are now done with images We will spend several weeks on the mechanics of 3D graphics –Coordinate systems and Viewing –Clipping –Drawing lines and polygons –Lighting and shading We will finish the semester with modeling and some additional topics

9 2/17/04© University of Wisconsin, CS559 Spring 2004 Graphics Toolkits Graphics toolkits typically take care of the details of producing images from geometry Input (via API functions): –Where the objects are located and what they look like –Where the camera is and how it behaves –Parameters for controlling the rendering Functions (via API): –Perform well defined operations based on the input environment Output: Pixel data in a framebuffer – an image in a special part of memory –Data can be put on the screen –Data can be read back for processing (part of toolkit)

10 2/17/04© University of Wisconsin, CS559 Spring 2004 OpenGL OpenGL is an open standard graphics toolkit –Derived from SGI’s GL toolkit Provides a range of functions for modeling, rendering and manipulating the framebuffer What makes a good toolkit? Alternatives: Direct3D, Java3D - more complex and less well supported

11 2/17/04© University of Wisconsin, CS559 Spring 2004 Coordinate Systems The use of coordinate systems is fundamental to computer graphics Coordinate systems are used to describe the locations of points in space Multiple coordinate systems make graphics algorithms easier to understand and implement

12 2/17/04© University of Wisconsin, CS559 Spring 2004 Coordinate Systems (2) Different coordinate systems represent the same point in different ways Some operations are easier in one coordinate system than in another –For instance, it’s easier to determine how far away something is if one axis of your coordinate system points away from you x y (2,3) u v x y (1,2) u v

13 2/17/04© University of Wisconsin, CS559 Spring 2004 Transformations Transformations convert points between coordinate systems x y (2,3) v x y (1,2) u v u u=x-1 v=y-1 x=u+1 y=v+1

14 2/17/04© University of Wisconsin, CS559 Spring 2004 Transformations (Alternate Interpretation) Transformations modify an object’s shape and location in one coordinate system The previous interpretation is better for some problems, this one is better for others x y (2,3) (1,2) x y x’=x-1 y’=y-1 x=x’+1 y=y’+1

15 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Affine Transformations An affine transformation is one that can be written in the form:

16 2/17/04© University of Wisconsin, CS559 Spring 2004 Why Affine Transformations? Affine transformations are linear –Transforming all the individual points on a line gives the same set of points as transforming the endpoints and joining them –Interpolation is the same in either space: Find the halfway point in one space, and transform it. Will get the same result if the endpoints are transformed and then find the halfway point

17 2/17/04© University of Wisconsin, CS559 Spring 2004 Composition of Affine Transforms Any affine transformation can be composed as a sequence of simple transformations: –Translation –Scaling (possibly with negative values) –Rotation See Shirley 1.3.6

18 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Translation Moves an object x y x y bxbx byby

19 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Translation Moves an object x y x y bxbx byby

20 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Scaling Resizes an object in each dimension x y x y x y sxxsxx syysyy

21 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Scaling Resizes an object in each dimension x y x y x y sxxsxx syysyy

22 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Rotation Rotate counter-clockwise about the origin by an angle  x y x y 

23 2/17/04© University of Wisconsin, CS559 Spring 2004 2D Rotation Rotate counter-clockwise about the origin by an angle  x y x y 

24 2/17/04© University of Wisconsin, CS559 Spring 2004 X-Axis Shear Shear along x axis (What is the matrix for y axis shear?) x y x y

25 2/17/04© University of Wisconsin, CS559 Spring 2004 X-Axis Shear Shear along x axis (What is the matrix for y axis shear?) x y x y

26 2/17/04© University of Wisconsin, CS559 Spring 2004 Reflect About X Axis What is the matrix for reflect about Y axis? x x

27 2/17/04© University of Wisconsin, CS559 Spring 2004 Reflect About X Axis What is the matrix for reflect about Y axis? x x

28 2/17/04© University of Wisconsin, CS559 Spring 2004 Rotating About An Arbitrary Point What happens when you apply a rotation transformation to an object that is not at the origin? x y ?

29 2/17/04© University of Wisconsin, CS559 Spring 2004 Rotating About An Arbitrary Point What happens when you apply a rotation transformation to an object that is not at the origin? –It translates as well x y x

30 2/17/04© University of Wisconsin, CS559 Spring 2004 How Do We Fix it? How do we rotate an about an arbitrary point? –Hint: we know how to rotate about the origin of a coordinate system

31 2/17/04© University of Wisconsin, CS559 Spring 2004 Rotating About An Arbitrary Point x y x y x y x y

32 2/17/04© University of Wisconsin, CS559 Spring 2004 Rotate About Arbitrary Point Say you wish to rotate about the point (a,b) You know how to rotate about (0,0) Translate so that (a,b) is at (0,0) –x’=x–a, y’=y–b Rotate –x”=(x-a)cos  -(y-b)sin , y”=(x-a)sin  +(y-b)cos  Translate back again –x f =x”+a, y f =y”+b

33 2/17/04© University of Wisconsin, CS559 Spring 2004 Scaling an Object not at the Origin What also happens if you apply the scaling transformation to an object not at the origin? Based on the rotating about a point composition, what should you do to resize an object about its own center?

34 2/17/04© University of Wisconsin, CS559 Spring 2004 Back to Rotation About a Pt Say R is the rotation matrix to apply, and p is the point about which to rotate Translation to Origin: Rotation: Translate back: The translation component of the composite transformation involves the rotation matrix. What a mess!

35 2/17/04© University of Wisconsin, CS559 Spring 2004 Homogeneous Coordinates Use three numbers to represent a point (x,y)=(wx,wy,w) for any constant w  0 Typically, (x,y) becomes (x,y,1) Translation can now be done with matrix multiplication!

36 2/17/04© University of Wisconsin, CS559 Spring 2004 Basic Transformations Translation: Rotation: Scaling:

37 2/17/04© University of Wisconsin, CS559 Spring 2004 Homogeneous Transform Advantages Unified view of transformation as matrix multiplication –Easier in hardware and software To compose transformations, simply multiply matrices –Order matters: AB is generally not the same as BA Allows for non-affine transformations: –Perspective projections! –Bends, tapers, many others


Download ppt "2/17/04© University of Wisconsin, CS559 Spring 2004 Last Time Resampling –Ideal reconstruction –You can only ideally reconstruct band-limited functions."

Similar presentations


Ads by Google