A Media Computation Cookbook

A Media Computation Cookbook

A Media Computation Cookbook Manipulating Images and Sounds for Use in Alice Part 1: Image Manipulations Part 2: Advanced Image Manipulations, e.g., changing colors in an area Part 3: Chromakey for digital video effects Part 4: Manipulated Alice images Part 5: Sound manipulations Part 6: Manipulated sounds in Alice Questions being answered

here today How do we make it easier to build new things? How do we make it easy to write a program to access specific pictures? How do we change the size of a picture? How do grab part of a picture? How do you combine parts of pictures? How do we use programming to replace retyping code? How do we replace the background of a picture with something else?

How do we make it easier to build new things? Dont start from scratch! Use the old file and add more to it. When you start JES, open up the file that you used last time. If you end your file name with .py you can figure out which are Python files.

Type If more code into that file. you want, you can download my myfunctions.py from http://coweb.cc.gatech.edu/mediaComp-teac h/43 How do we make it easy to write a program to access

certain pictures? setMediaPath() Type this in the Command Area (black area at bottom of JES) and find the folder where you store your pictures. (Could be the Desktop, probably better to use a particular folder. I call mine mediasources.) makePicture(getMediaPath(IMG_0810 .JPG)) Will make a picture from that file in the

media path folder. How do we change the size of a picture? To copy a picture, get the color values from pixels in one picture, and set those color values in the pixels in the other picture. def copyPicture(picture): returnPicture =

makeEmptyPicture(getWidth(picture),getHeight(picture)) for pixel in getPixels(picture): color = getColor(pixel) setColor(getPixel(returnPicture,getX(pixel),getY(pixel)),returnPicture) return returnPicture To scale the picture smaller = scale(picture,0.5) How does it work? To get it to be only the size (in both horizontal and vertical)

directions, we need to lose some pixels. Easiest way: Skip a few. Every other pixel gets copied. Can generalize this for any size scaling. Code to scale def scale(picture,factor): newHeight = int(factor*getHeight(picture))+1 newWidth = int(factor*getWidth(picture))+1 returnPic = makeEmptyPicture(int(newWidth),int(newHeight)) sx = 0

for tx in range(0,newWidth): sy = 0 for ty in range(0,newHeight): if (int(sx) < getWidth(picture)) and (int(sy) < getHeight(picture)): sp = getPixel(picture,int(sx),int(sy)) tp = getPixel(returnPic,tx,ty) setColor(tp,getColor(sp)) sy = sy + (1/factor) sx = sx + (1/factor) return returnPic How do we grab part of a picture?

guys = makePicture(getMediaPath("IMG_0805.JPG")) james = copyPartPicture(guys,352,217,618,475) copyPartPicture(picture,startX,startY,endX,e ndY) Gives you a new picture inside the box defined by upper-left corner and lower-right corner. Code to grab part of a picture

def copyPartPicture(picture,x1,y1,x2,y2): returnPicture = makeEmptyPicture(x2-x1,y2-y1) targetx = 0 for srcx in range(x1,x2): targety = 0 for srcy in range(y1,y2): srcpixel = getPixel(picture,srcx,srcy) targetPixel = getPixel(returnPicture,targetx,targety) setColor(targetPixel,getColor(srcpixel)) targety = targety + 1 targetx = targetx + 1 return returnPicture

How do we combine parts of a picture? grayscale(betsy) clearRed(james) pastePicture(betsy,scale(james,0.3 5),0,0) pastePicture(canvas,partial,start X,startY) Pasting partial picture onto the canvas starting from (startX,startY) Code to paste a picture

def pastePicture(canvas,source,startx,starty): targetx = startx for x in range(0,getWidth(source)): targety = starty for y in range(0,getHeight(source)): srcpixel = getPixel(source,x,y) if (targetx < getWidth(canvas)) and (targety < getHeight(canvas)): targetPixel = getPixel(canvas,targetx,targety) setColor(targetPixel,getColor(srcpixel)) targety = targety + 1 targetx = targetx + 1

How do use programming to replace re-typing code? Building a collage of pictures: def makeACollage(): betsy = makePicture(getMediaPath("IMG_0802.JPG")) hunter = makePicture(getMediaPath("IMG_0808.JPG")) guys = makePicture(getMediaPath("IMG_0805.JPG")) james = copyPartPicture(guys,352,217,618,475) grayscale(betsy) clearRed(james)

pastePicture(betsy,scale(james,0.35),0,0) maxBlue(guys) pastePicture(betsy,scale(guys,0.35),450,340) negative(hunter) pastePicture(betsy,scale(hunter,0.35),0,340) writePictureTo(betsy,"C:/collage.jpg") Result: How do we replace the background of a picture with something Take a picture else?

with a background that is easy to test and isnt in the foreground. Two examples. Which one do you think will work? Code to chromakey for any background color def chromakey(picture,background,color,threshold=100.0): for pixel in getPixels(picture): pixelColor = getColor(pixel) if distance(color,pixelColor) < threshold: newColor = getColor(getPixel(background,getX(pixel),getY(pixel))) setColor(pixel,newColor) Trying to make the yellow background work >>> chromakey(yellowBarb, moon, makeColor(167,159,110)) >>> chromakey( yellowBarb, moon, makeColor(167,159,110),50) >>> writePictureTo(yellowBarb, "C:/yellowBarb-th100.jpg")

>>> writePictureTo( yellowBarb, "C:/yellowBarb-th50.jpg") Yellow is too close to Barbs skin tone to work. Using the general chromakey form for a blue background >>> chromakey(blueJenny,moon,makeColor(36,62,95)) Doing a specific version of Chromakey

Coming up with a test for being truly blue def chromakeyBlue(picture,background): for pixel in getPixels(picture): pixelColor = getColor(pixel) if getRed(pixel) Try it! Take your own picture and put it on a new background. Create a collage with various pieces of the pictures we have.

Recently Viewed Presentations

  • The Wharton Risk Management and Decision Processes Center

    The Wharton Risk Management and Decision Processes Center

    The Wharton Risk Management and Decision Processes CenterOver 25 years of leading research into catastrophe risk. Erwann Michel-Kerjan, Managing Director. [email protected] University of California, Washington D.C.
  • Fundamentals of Auditing

    Fundamentals of Auditing

    The financial statements have to comply with national legislative requirements and International Financial Reporting Standards (IFRSs). Accounting is the process of recording, classifying, summarizing and reporting financial information in a logical/systematic manner for the purpose of decision making.
  • CITY OF NEW O RLEANS 2014 Proposed Budget

    CITY OF NEW O RLEANS 2014 Proposed Budget

    "Unlike Patrol functions where a number of standards my be applied…there is currently no industry standard of the number of detectives required," recent staffing study report, Glendale, AZ Police Department. About 9.5% of all sworn personnel are on long term...
  • Types of Chemical Reactions - Miss Benzoni

    Types of Chemical Reactions - Miss Benzoni

    Replace the less active halogen with the more active one, then balance. Don't forget to write BrINClHOF as diatomics. KBr (aq) + Cl 2(aq) FeI. 3 ...
  • Sequencing Economic Reform: A Long Term View

    Sequencing Economic Reform: A Long Term View

    Rose: Sequencing Economic Reform. Chinese . Liberalization. China has dual-track reform strategy in three senses. Partial liberalization in factor markets to support SOEs leads to financial repression. 2. More reform in product than factor markets. Financial repression leads to formal...
  • General Session &quot;Half Time Report&quot; Driving Growth Weekend ...

    General Session "Half Time Report" Driving Growth Weekend ...

    Schedule regular monthly calls with State Officers, Diocesan Deputies, District Deputies. Call Grand Knights . close to achieving Star Council. Your phone call can be just the motivation they need! Keeping communication high at all levels is a key to...
  • Plans until the end of the year 5.

    Plans until the end of the year 5.

    Hydroelectric power- electricity made from the movement of water Hydro = water 2. Falling water is used to turn a propeller-like piece called a turbine, which then turns a metal shaft in an electric generator, which is the motor that...
  • &quot;In God we trust, all others bring data&quot;

    "In God we trust, all others bring data"

    Morgan, G.p.178 Data Decisions Influence School Careers: The Good, the Bad, and the Ugly On one hand, a steady stream of data showing gaps among groups may serve to: Create myths and reinforce faulty perceptions about students' capabilities Develop permanent...