# Introduction to Computer Science – Chapter 9 - Department of ...

Τεχνίτη Νοημοσύνη και Ρομποτική

6 Νοε 2013 (πριν από 4 χρόνια και 6 μήνες)

87 εμφανίσεις

Introduction to Computer
Science

Chapter 9

CSc

2010

Spring 2011

Marco 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

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

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