Download Lecture notes

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Waveform graphics wikipedia , lookup

Spatial anti-aliasing wikipedia , lookup

Tektronix 4010 wikipedia , lookup

Quaternions and spatial rotation wikipedia , lookup

Transcript
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
–
–
–
–
2/17/04
Alpha describes the opacity of a pixel
Compositing is always co  Fc f  Gcg
Different F and G lead to different operations
Alpha comes from blue-screening, hand generation, or computer generated
imagery
© University of Wisconsin, CS559 Spring 2004
Today
• Painterly rendering
• The Graphics Pipeline
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
2/17/04
© University of Wisconsin, CS559 Spring 2004
Algorithm 1
function paint(sourceImage,R1 ... Rn) // take source and several brush sizes
{
canvas := a new constant color image
// paint the canvas with decreasing sized brushes
for each brush radius Ri, 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 Ri)
// Paint a layer
paintLayer(canvas, referenceImage, Ri)
}
return canvas
}
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(Di,j for i,j in M) / grid2
if (areaError > T) then {
// find the largest error point
(x1,y1) := max Di,j in M
s :=makeStroke(R,x1,y1,referenceImage)
add s to S
}
}
paint all strokes in S on the canvas, in random order
}
2/17/04
© University of Wisconsin, CS559 Spring 2004
Results
Original
Biggest brush
Medium brush added
Finest brush added
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
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
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)
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
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
2/17/04
© University of Wisconsin, CS559 Spring 2004
Coordinate Systems (2)
• Different coordinate systems represent the same point in
different ways
y
v
(2,3)
y
v
u
(1,2)
u
x
x
• 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
2/17/04
© University of Wisconsin, CS559 Spring 2004
Transformations
• Transformations convert points between coordinate systems
y
v
(2,3)
u
x
2/17/04
u=x-1
v=y-1
x=u+1
y=v+1
© University of Wisconsin, CS559 Spring 2004
y
v
(1,2)
u
x
Transformations
(Alternate Interpretation)
• Transformations modify an object’s shape and location in
one coordinate system
(2,3)
y
x
x’=x-1
y’=y-1
y
(1,2)
x=x’+1
y=y’+1
• The previous interpretation is better for some problems,
this one is better for others
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
2D Affine Transformations
• An affine transformation is one that can be written in the
form:
x  a xx x  a xy y  bx
y   a yx x  a yy y  by
or
 x  a xx a xy   x  bx 
 y   a a   y   b 
   yx yy     y 
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
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
2/17/04
© University of Wisconsin, CS559 Spring 2004
2D Translation
• Moves an object
 x  ? ?  x  ?
 y  ? ?  y   ?
  
   
y
y
?
by
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
bx
x
2D Translation
• Moves an object
 x 1 0  x  bx 
 y  0 1  y   b 
  
   y 
y
y
by
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
bx
x
2D Scaling
• Resizes an object in each dimension
y
y
2/17/04
 x  ? ?  x  ?
 y  ? ?  y   ?
  
   
y
syy
x
x
sxx
© University of Wisconsin, CS559 Spring 2004
x
2D Scaling
• Resizes an object in each dimension
y
y
2/17/04
 x  s x
 y   0
  
0   x  0
 



s y   y  0
y
syy
x
x
sxx
© University of Wisconsin, CS559 Spring 2004
x
2D Rotation
• Rotate counter-clockwise about the origin by an angle 
y
 x  ? ?  x  ?
 y  ? ?  y   ?
  
   
y

x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
2D Rotation
• Rotate counter-clockwise about the origin by an angle 
y
 x  cos
 y   sin 
  
 sin    x  0
 



cos   y  0
y

x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
X-Axis Shear
• Shear along x axis (What is the matrix for y axis shear?)
y
 x  ? ?  x  ?
 y  ? ?  y   ?
  
   
y
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
X-Axis Shear
• Shear along x axis (What is the matrix for y axis shear?)
 x   1
 y   0
  
y
y
shx   x  0
 



1   y  0
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
Reflect About X Axis
 x  ? ?  x  ?
 y  ? ?  y   ?
  
   
x
• What is the matrix for reflect about Y axis?
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
Reflect About X Axis
 x   1
 y   0
  
0   x  0
 



 1  y  0
x
• What is the matrix for reflect about Y axis?
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
Rotating About An Arbitrary Point
• What happens when you apply a rotation transformation to
an object that is not at the origin?
y
x
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
y
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
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
2/17/04
© University of Wisconsin, CS559 Spring 2004
Rotating About An Arbitrary Point
y
y
x
y
x
y
x
2/17/04
© University of Wisconsin, CS559 Spring 2004
x
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
– xf=x”+a, yf=y”+b
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?
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
x  x  p
• Translation to Origin:
• Rotation: x  Rx  R( x  p)  Rx  Rp
• Translate back: x   x   p  Rx  Rp  p
• The translation component of the composite transformation
involves the rotation matrix. What a mess!
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!
 x a xx
 y  a
   yx
 1   0
2/17/04
a xy
a yy
0
bx   x 
by   y 
 
1   1 
© University of Wisconsin, CS559 Spring 2004
Basic Transformations
• Translation: 1 0 bx 
0 1 b 
y

0 0 1 
• Scaling:  s x
0

 0
2/17/04
0
sy
0
Rotation: cos 
 sin 

 0
0
0

1
© University of Wisconsin, CS559 Spring 2004
 sin 
cos 
0
0
0

1
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
2/17/04
© University of Wisconsin, CS559 Spring 2004