introduction to computer science – chapter 9 csc 2010 spring 2011 marco valero
TRANSCRIPT
Introduction to Computer Science – Chapter 9CSc 2010Spring 2011Marco Valero
Overview
• Review image basics
• Making pictures
• Image processing
• Shrinking and enlarging
• Blurring and sharpening
• Negative and embossing
• Robot vision
Image basics
• We used takePicture and show to
respectively take and show pictures already
• We’ve also seen savePicture as a means to
save a snapshot to disk
• makePicture(<filename>) will load a picture
from disk and return a picture object
▫myPic = makePicture(pickAFile())
Image basics
•Height and width can be retrieved from a
picture
▫getHeight(<pic>) and getWidth(<pic>)
•show(<pic>,<title>)
▫We can call show(myPic, ‘my title’) to
create a window with a title
Making pictures
• Rather than taking pictures, we can create our
own
▫width = height = 100
▫newPic = makePicture(width, height, black)
• RGB
▫Each is a byte, 0-255
• We can loop through each pixel just like a matrix
and change the value
Image processing
• We can think of the bitmap as a matrix then any
transformation from one picture to another is a
matrix transformation
• 500x500 pixel bitmap
▫250k pixels
▫ If 10 operations per transformation that’s 2.5 mil
ops!
• Image processing is intensive
Shrinking & enlarging
•If we wanted to shrink a given n x n image
by a factor of f
▫Result size is n/f x n/f
▫Bitmap[x*f, y*f] -> NewBitmap[x, y]
•Enlarging is the inverse
▫Result size is n*f x n*f
▫Bitmap[x/f, y/f] -> NewBitmap[x, y]
Blurring & sharpening
• Pixel transformation as a result of its local
neighbors’ values
• Blurring is done by setting a pixels value to the
averages of its neighbors
▫V = sum([getRed(up),getRed(left),…]) / 5
• Sharpening is done by subtracting the sum of its
neighbors
▫V = 5*getRed(self) – sum([neighborvalues])
Negative & embossing
•To create a negative of an image we
simply subtract 255 from the current
value
▫V = 255 – getRed(pixel)
•Creating an embossed effect is done by
subtracting a neighbors value from a pixel
▫V = getRed(pixel) – getRed(neighbor)
Robot vision
•Are computers good at recognizing
objects?
•Are _we_ good at recognizing objects?
•What would a simple tracking code look
like?
Robot vision
•What if we only focused on the object?
▫We can use high contrast filter
▫What are the issues with this?
•Blob filtering
▫takePicture(‘blob’)
▫Compare to older program