Homework 25 — image manipulation
Due Wednesday November 28
Modules color.py and locate.py
- In classes 34 and 35 we investigated the power of patterns and made use of them to simplify image manipulation. In these classes we considered and developed modules
- Provides a pattern for photo manipulation and a collection of convenience fuctions to support blueing, color inversion, flipping, mirroring, mono coloring, greyscaling, sepia toning, and palette reduction.
- Provides functions to return the dimensions of two types of image manipulation — same size and clockwise rotation
- Provides functions for determining where is the source pixel for a pixel manipulation supported by
manip.py
- Provides functions for the pixel manipulations supported by
manip.py
- The task at hand is to implement module
color.py
functions:greyscale()
,sepia_tone()
andreduce_palette()
and modulelocate.py
functionccw()
.
Grayscaling — color.py
function grey( p )
- In converting an image to its grayscale equivalent the translation sacrifices pixel coloring for intensity. In the conversion, a pixel
p
equal to(r,g,b)
corresponds to a pixel(m,m,m)
wherem
is the integer cast of
.299r + .587g + .114b
The formula is known as the NTSC formula.
Sepia — color.py
function sepia( p )
- There is no one formula for defining a Sepia pixel conversation. The one used here comes from Microsoft.
- For pixel
(r,g,b)
, the Sepia conversion is(sr,sg,sb)
where
sr, sg, sb = int( min( i, 255 )), int( min( j, 255 )), int( min( k, 255 )),
where
i, j, k
are
i = .393r + .769g + .189b
j = .349r + .686g + .168b
k = .272r + .534g + .131b
Palette reduction — color.py
functions distance( p )
and simplify( p )
- Sometimes to save computer memory, software developers perform a palette reduction of colors used in image representation.
- Our reduction scheme will use an eight-color palette
- Black, White, Red, Green, Blue, Yellow, Magenta, and Cyan; that is,
(0,0,0), (255,255,255), (255,0,0), (0,255,0), (0,0,255), (255,255,0), (255,0,255),
and(0,255,255)
- In a palette reduction, a pixel
(r,g,b)
is replaced by the pixel in in the palette it is closest to. The distance between pixels(r1,g1,b1)
and(r2,g2,b2)
equals
abs(r1 - r2) + abs(g1 - g2) + abs(b1 - b2)
Clockwise rotation locate.py
function ccw( spot, w, h )
- In a clockwise rotation an image is rotated by 90 degrees.
© 2019 Jim Cohoon | Resources from previous semesters are available. |