Chapter 5 Using Classes and Objects in Media Computing

Slides:



Advertisements
Similar presentations
Chapter 8 Improving the User Interface
Advertisements

Using Multimedia on the Web Enhancing a Web Site with Sound, Video, and Applets.
CNIT 132 – Week 9 Multimedia. Working with Multimedia Bandwidth is a measure of the amount of data that can be sent through a communication pipeline each.
1 Various Methods of Populating Arrays Randomly generated integers.
Computer Science 111 Fundamentals of Programming I More Digital Image Processing.
Chapter 3 Syntax, Errors, and Debugging
Chapter 2 First Java Programs
Chapter 10 Introduction to Arrays
Objectives Define photo editing software
Digital Imaging and Image Analysis
Motivation Application driven -- VoD, Information on Demand (WWW), education, telemedicine, videoconference, videophone Storage capacity Large capacity.
Capturing and optimising digital images for research Gilles Couzin.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Chapter 4: The Building Blocks: Binary Numbers, Boolean Logic, and Gates Invitation to Computer Science, Java Version, Third Edition.
Connecting with Computer Science, 2e
Fundamentals of Python: From First Programs Through Data Structures
C++ for Engineers and Scientists Third Edition
Computer Science 111 Fundamentals of Programming I Introduction to Digital Image Processing.
1 A Balanced Introduction to Computer Science, 2/E David Reed, Creighton University ©2008 Pearson Prentice Hall ISBN Chapter 12 Data.
Vector vs. Bitmap SciVis V
V Obtained from a summer workshop in Guildford County July, 2014
Connecting with Computer Science 2 Objectives Learn why numbering systems are important to understand Refresh your knowledge of powers of numbers Learn.
Bitmapped Images. Bitmap Images Today’s Objectives Identify characteristics of bitmap images Resolution, bit depth, color mode, pixels Determine the most.
TERMS TO KNOW. Programming Language A vocabulary and set of grammatical rules for instructing a computer to perform specific tasks. Each language has.
Java Programming, 2E Introductory Concepts and Techniques Chapter 2 Creating a Java Application and Applet.
1 Bitmap Graphics It is represented by a dot pattern in which each dot is called a pixel. Each pixel can be in any one of the colors available and the.
Chapter 7: Arrays. In this chapter, you will learn about: One-dimensional arrays Array initialization Declaring and processing two-dimensional arrays.
CSCI-235 Micro-Computers in Science Hardware Part II.
TOPIC 4 INTRODUCTION TO MEDIA COMPUTATION: DIGITAL PICTURES Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Tutorial 26 – CheckWriter Application Introducing Graphics.
Vector vs. Bitmap
COSC 1P02 Intro. to Computer Science 6.1 Cosc 1P02 Week 6 Lecture slides "To succeed, jump as quickly at opportunities as you do at conclusions." --Benjamin.
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 5 Working with Images Starting Out with Games & Graphics in.
Tutorial 7 Working with Multimedia
Tutorial 7 Designing a Multimedia Web Site
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 7 The Game Loop and Animation Starting Out with Games & Graphics.
COSC 1P02 Introduction to Computer Science 7.1 Cosc 1P02 Week 7 Lecture slides "There are two ways of constructing a software design; one way is to make.
September 5, 2013Computer Vision Lecture 2: Digital Images 1 Computer Vision A simple two-stage model of computer vision: Image processing Scene analysis.
Graphics. Graphic is the important media used to show the appearance of integrative media applications. According to DBP dictionary, graphics mean drawing.
CSC1401. Learning Goals Understand at a conceptual level What is media computation? How does color vision work? How can you make colors with red, green,
Computer Science 111 Fundamentals of Programming I Introduction to Digital Image Processing.
1 Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
Adobe Photoshop CS5 – Illustrated Unit A: Getting Started with Photoshop CS5.
CSCI-100 Introduction to Computing Hardware Part II.
Creating a Java Application and Applet
TOPIC 4 INTRODUCTION TO MEDIA COMPUTATION: DIGITAL PICTURES Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach.
Copyright © Curt Hill Further Picture Manipulation Considering position.
HOW SCANNERS WORK A scanner is a device that uses a light source to electronically convert an image into binary data (0s and 1s). This binary data can.
Scanner Scanner Introduction: Scanner is an input device. It reads the graphical images or line art or text from the source and converts.
Adobe Photoshop CS4 – Illustrated Unit A: Getting Started with Photoshop CS4.
Guilford County SciVis V104.03
Chapter 9 Introduction to Arrays Fundamentals of Java.
1 Sections 5.1 – 5.2 Digital Image Processing Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
1 Section 5.4 Digital Sound Processing Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Understanding Images. Pixels pixels Every image is made up of very small squares called pixels, and each pixel represents a color or shade. Pixels within.
Photoshop CS6 – Nelson Unit 3: Photoshop CS6. Objectives Define photo editing software Start Photoshop and view the workspace Use the Zoom tool and the.
ITEC2110, Digital Media Chapter 2 Fundamentals of Digital Imaging 1 GGC -- ITEC Digital Media.
Getting Started with Adobe Photoshop CS6
Pixels, Colors and Shapes
Chapter 3 Syntax, Errors, and Debugging
Vector vs. Bitmap.
Chapter 2 First Java Programs
Fundamentals of Programming I Introduction to Digital Image Processing
Variables and Arithmetic Operations
DREAMWEAVER MX 2004 Chapter 3 Working with Tables
© 2016 Pearson Education, Inc., Hoboken, NJ. All rights reserved.
Fundamentals of Programming I Introduction to Digital Image Processing
Object Oriented Programming in java
Presentation transcript:

Chapter 5 Using Classes and Objects in Media Computing Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne

Objectives Use the concepts of object-based programming—classes, objects, and methods—to solve a problem. Write a loop to visit a sequence of data values. Write a nested loop to visit positions in a two-dimensional grid of data values. 2 2

Objectives (continued) Develop algorithms to perform simple transformations of images, such as the conversion of color to gray scale. Develop algorithms to perform simple transformations of sound clips, such as adjusting a sound clip’s volume. 3 3

Vocabulary accessors application programming interface (API) aspect ratio default constructor edge detection enhanced for loop mutators object instantiation object recognition row-major traversal 4 4

Vocabulary (continued) sampling rate screen coordinate system sound clip splicing 5 5

Introduction Objects give programmers access to complex behavior. Objects can manipulate digitally encoded images and sounds. Until 20 years ago, computers mostly processed numbers and text. Now, computers are multimedia platforms, including digital music players and cameras. 6 6

Introduction to Digital Image Processing Digital image processing includes: Capturing images with scanners and cameras. Representation and storage or images in efficient file formats. Construction of algorithms used in image-manipulation programs. Adobe Photoshop 7 7

Introduction to Digital Image Processing (continued) The Essential Properties of Images: When an image is loaded in a program, the bits map into a rectangle of colored dots (pixels). The coordinates of the grid range from: (0,0) at the upper right corner to (Width -1, Height -1) at the lower-right corner. Width and height are the dimensions in pixels. X-coordinates increase positively to the right, y-coordinates increase positively to the bottom. 8 8

Introduction to Digital Image Processing (continued) The Essential Properties of Images (cont): An image consists of a width, height, and a set of pixels. Each pixel is accessible by its (x,y) coordinates. A pixel contains integer values that represent color in terms if red, green, and blue (RGB). 9 9

Introduction to Digital Image Processing (continued) The Essential Properties of Images (cont): The pixel at the upper-left corner is at (0,0) and has RGB components 206, 224, and 122. An image with a width of 300 pixels and a height of 225 pixels 10 10

Introduction to Digital Image Processing (continued) Image-Manipulation Operations: Transfer images to and from files and storage in RAM. After loading into RAM, can retrieve or modify a pixel at any grid position. 11 11

Introduction to Digital Image Processing (continued) Image-Manipulation Operations (cont): These operations allow the program to: Rotate an image. Convert color to gray scale or apply color filtering. Highlight, blur, or sharpen all or part of an image. Control brightness and perform edge detection. Enlarge or reduce size and apply color inversion. Morph an image into another image. 12 12

The images Package The images package defines classes that allow the programmer to: Load an image from a file. View the image in a window. Examine and manipulate an image’s pixels. Update the window with changes. Save the image back to a file. 13 13

The images Package (continued) The APImage and Pixel Classes: The two most important classes in the images package. APImage methods include: Creating an image from a file, or a blank image. Returning image’s height and width. Saving the image. 14 14

The images Package (continued) The APImage and Pixel Classes (cont): The Pixel class represents a pixel. An object of this class contains three integer values to represent RGB. Methods include: Creating a pixel and specifying RGB values. Returning and resetting the red, green, or blue values. Returning a copy of the pixel. Returning a string representation of the pixel (RGB values). 15 15

The images Package (continued) The Structure of a Simple Image-Processing Program: A program that loads an image (smokey.jpg) from its file and draws it in a window: 16 16

The images Package (continued) The Structure of a Simple Image-Processing Program (cont): The first statement imports the relevant class, APImage, from the images package. The second statement uses object instantiation to make a new object available to the program and instantiates the class. The third statement runs the draw method on the object to display it in a window. 17 17

The images Package (continued) Working with Large Images: Java might raise an error if there is not enough RAM to hold an image. Heap space: the area of RAM reserved for Java objects. To prevent a crash, adjust the heap space for data memory using the Xmx command-line option. 18 18

The images Package (continued) Interfaces, Object Instantiation, and Object-Based Programming: Object-based programming uses existing classes, objects, and methods to solve problems. To use an object, the programmer must know its interface (the set of methods it recognizes). 19 19

The images Package (continued) Interfaces, Object Instantiation, and Object-Based Programming (cont): An interface contains the headers of methods and supporting comments about their use. Including methods’ names, types of parameters they expect, and types of values they return, if any. No information about how methods work. Application programming interface (API): the set of interfaces in a package or language. 20 20

The images Package (continued) Interfaces, Object Instantiation, and Object-Based Programming (cont): Mutators: methods that do not return a value. Used to modify the internal contents of an object. setPixel and setRed Accesors: methods that return values. Allow users to examine part of an object’s contents. toString( ) returns a strong representation of the data contained in an object. 21 21

The images Package (continued) Interfaces, Object Instantiation, and Object-Based Programming (cont): Constructors have no return type. A constructor is called when a new object of a given class is created or instantiated. Some constructors can receive information in the form of parameters from the caller. Default constructor has no parameters. When used, the object’s internal state is given reasonable default values. 22 22

The images Package (continued) Examining the Attributes of an Image or a Pixel: getWidth and getHeight return the width and height of an image. Code to print an image’s strong representation: 23 23

The images Package (continued) Examining the Attributes of an Image or a Pixel (cont): When a variable that refers to an object is passed as a parameter to System.out.print or println, the method automatically calls that object’s toString method to obtain its string representation. A simpler way to print the string representation of the image: 24 24

The images Package (continued) Examining the Attributes of an Image or a Pixel (cont): The method getPixel returns the Pixel object at the given coordinates. Code to print the information for the pixel at position (0,0): The method getPixel returns a Pixel object, which is fed to the println method, then calls the toString method of the Pixel class, which returns the pixel’s string representation. 25 25

The images Package (continued) Modifying the Attributes of an Image or a Pixel: You can use the setPixel method to replace an RGB value at a given position in an image. Code draws a new 150 by 150 black image, then redraws the image with red pixels along a horizontal line at the middle of an image. 26 26

The images Package (continued) Modifying the Attributes of an Image or a Pixel (cont): 27

The images Package (continued) Drawing a red line segment through an image. 28 28

The images Package (continued) Using an Enhanced for Loop to Visit Pixels: An enhanced for loop or for-each loop: Assumes you want to visit each element in the data structure for some purpose. On each pass, the loop variable picks up the next available element in the data structure. 29 29

The images Package (continued) Converting an Image to Black and White: For each pixel: Algorithm computes average of the RGB values. Resets RGB values to black (0) if the average is closer to 0, or 255 (white) if it’s closer to 255. 30 30

Image-Processing Algorithms Visiting All of the Pixels by Their Positions: Linear loop structure: visit each element in a sequence or count a sequence using a single loop control variable. Nested loop structure: each data value in a two-dimensional pixel grid is accessed using the form (<column>, <row>). 31 31

Image-Processing Algorithms (continued) Visiting All of the Pixels by Their Positions (cont): A nested loop structure must consist of an outer and an inner loop. Each loop has a different control variable that iterates over a different coordinate. Row-major traversal: goes across the row in a grid, prints the coordinate at each column in the row, then moves to the next row. 32 32

Image-Processing Algorithms (continued) Visiting All of the Pixels by Their Positions (cont): Example: print pairs of coordinates in 3x5 grid. 33 33

Image-Processing Algorithms (continued) Copying an Image: Use the clone method. Build and return a new image with the same attributes as the old one. With an empty string as the filename so the two are independent. 34 34

Image-Processing Algorithms (continued) Edge Detection: Edge detection performs the inverse function on a color image: Removes the full colors to uncover the outlines of the objects in an image. Plays a critical role in object recognition, which detects images in objects. Detects edges by looking an luminance of pixels (average of RGB values). If a pixel’s luminance differs significantly from its neighbors, it is an edge and the pixel is set to black. 35 35

Image-Processing Algorithms (continued) Edge detection: the original image, a luminance threshold of 10, and a luminance threshold of 20. 36 36

Image-Processing Algorithms (continued) Reducing the Image Size: The size and quality of an image displayed on a monitor or printed depends on: The image’s width and height in pixels. The display medium’s resolution. Monitor resolution is measured in pixels per inch (PPI). When resolution is increased, images are smaller. When resolution is decreased, images are larger and the quality degrades. 37 37

Image-Processing Algorithms (continued) Reducing the Image Size (cont): You can set the resolution of an image when you capture it with a scanner or digital camera. Reducing an image’s size can improve its performance: Faster loading on a Web page. Less space occupied in storage. If height and with are reduced by N, the number of color values is reduced by N2. 38 38

Image-Processing Algorithms (continued) Reducing the Image Size (cont): Size reduction preserves an image’s aspect ratio (width to height). A simple way to shrink an image is to create a new image whose width and height are a fraction of the original. Reducing throws away some of the pixel information. The human eye cannot normally detect the loss. 39 39

Image-Processing Algorithms (continued) Enlarging the Image Size: You have to add pixels to increase size. Approximate the color values that would be there if the image was taken at a higher resolution. Blending the new and old pixels is a complex process. The human eye can detect the loss in quality. 40 40

Image-Processing Algorithms (continued) Using the images Package Without a Drawing Window: Programs do not have to display an image in a window. Can load, transform, and resave an image. Run from a terminal command prompt. The save method overwrites the current file with the changes. saveAs creates a new file. 41 41

Introduction to Digital Sound Processing Sounds are prepared for computer processing using an analog-to-digital converter. Samples a sound thousands of times per second. Each analog input is assigned an integer. The set of samples is called a sound clip. The greater the number of samples, the more precise the representation of the original sound. 42 42

Introduction to Digital Sound Processing (continued) Digital sound and images are different: Sample values are arranged in a linear sequence, not a grid. Sound samples are atomic. Each records a sound’s volume at a given moment. A sequence of sound samples approximates the waveform of the analog sound information. Positive values above horizontal axis, negative below. 43 43

Introduction to Digital Sound Processing (continued) Digital sounds’ simple format make their algorithms easier to design. Programs that compose or edit music: Increase or decrease the volume. Dampen hiss or remove static. Remove or insert segments of other sounds. Blend sounds, add echoes, or repeat (loop) a sound. 44 44

Introduction to Digital Sound Processing (continued) Basic Sound-Manipulation Operations: File formats: WAVE, AU, AIFF, MP3. Sampling rate: number of samples per second. A high rate leads to a better sound and larger file. Sample size: value in bits represent the range of possible integer sample values (amplitudes). Number of channels: stereo (two), mono (one). Modern DVDs supports six-channel sound. 45 45

The sounds Package Supports two interrelated capabilities: A GUI in which sound clips can be manipulated. Record new clips, open clip files, save sound clips in files, and play a loaded clip. Methods for writing programs that manipulate sound clips and display the GUI. APSoundClip: represents sound as a list of Sample objects. Sample: A single 16-bit signed integer. 46 46

The sounds Package (continued) Using the sounds package: Example: import the APSoundClip class, create a new, empty sound clip object with the variable clip, and display the clip’s window with waveform and commands. 47 47

The sounds Package (continued) A sound clip’s waveform after recording 48 48

The sounds Package (continued) Adjusting a Sound Clip’s Volume: Volume is reflected in the amplitude (height and depth) of its waveform at a given point. To increase or decrease volume, increase or decrease the size of the sample value. Algorithm resets the value of each sample by multiplying its old value by a given factor. Greater than 1, volume increases, and vice versa. 49 49

The sounds Package (continued) Adjusting a Sound Clip’s Volume (cont): Must address the possibility that samples fall out of the legitimate range. Use the maximum of the product and the minimum possible sample if the sample is negative. Use the minimum of the product and the maximum possible sample if the sample is not negative. 50 50

The sounds Package (continued) Splicing Sound Clips: Spicing places one clip after another to form a new sound. New clip represents the concatenation of two other clips, similar to concatenating strings. A loop visits each sample in a clip and copies its value to the appropriate sample and position in the new sound clip. 51 51

The sounds Package (continued) Composing Sound Clips: Blending two sound clips to form a new sound clip so that they play simultaneously. Must account for unequal length for clips. 52 52

The sounds Package (continued) Echoing Sound Clips: An effect where an earlier part of a clip is heard concurrently with the sound at the present. Algorithm retrieves samples that occur earlier in the clip and blend with sounds that occur later. An obvious echo has delay between sample pairs. The inputs are a sound clip and an integer delay. The resulting sample is a new clip. 53 53

Summary In this chapter, you learned: Object-based programming uses classes, objects, and methods to solve problems. A class specifies a set of attributes and methods for the objects of that class. A new object is obtained by instantiating its class. An object’s attributes receive their initial values during instantiation. 54 54

Summary (continued) The behavior of an object depends on its current contents and on the methods that manipulate this state. The set of a class’s methods is called its interface. The interface is what a programmer needs to know to use objects of a class. The information in an interface usually includes the method headers and documentation about arguments, return values, and changes of state. 55 55

Summary (continued) A class usually includes a toString method that returns a string representation of an object of the class. This string might include information about the object’s current contents. Java’s print and println methods automatically call this method when they receive an object as a parameter. 56 56

Summary (continued) Digital images are captured by sampling analog information from a light source, using a device such as a digital camera or a flatbed scanner. Each sampled color value is mapped to a discrete color value among those supported by the given color system. 57 57

Summary (continued) During the display of an image file, each color value is mapped onto a pixel in a two dimensional grid. The positions in this grid correspond to the screen coordinate system, in which the upper-left corner is at (0, 0) and the lower-right corner is at (width – 1, height – 1). An enhanced for loop structure is used to visit each pixel in an image. 58 58

Summary (continued) A nested loop structure is used to visit each position in a two-dimensional grid. In a row-major traversal, the outer loop of this structure moves down the rows using the y-coordinate, and the inner loop moves across the columns using the x-coordinate. Each column in a row is visited before moving to the next row. A column-major traversal reverses these settings. 59 59

Summary (continued) Image-manipulation algorithms either transform pixels at given positions or create a new image using the pixel information of a source image. Examples of the former type of operation are conversion to black and white and conversion to gray scale. Blurring, edge detection, and altering the image size are examples of the second type of operation. 60 60

Summary (continued) Digital sound clips are captured by sampling analog information from a sound source, using a device such as a microphone. Each sampled sound value is mapped to a discrete sound value among those supported by the given sound system. 61 61

Summary (continued) Sound-manipulation algorithms either transform samples at given positions or create a new sound clip using the sample information of a source clip. An example of the former type of operation is adjusting the volume. Echoing and composing sound clips size are examples of the second type of operation. 62 62