Finding Red Pixels – Part 1 Prof. Noah Snavely CS1114

Slides:



Advertisements
Similar presentations
Lab # 03- SS Basic Graphic Commands. Lab Objectives: To understand M-files principle. To plot multiple plots on a single graph. To use different parameters.
Advertisements

RAPTOR Syntax and Semantics By Lt Col Schorsch
Polygons and the convex hull Prof. Noah Snavely CS1114
CSSE463: Image Recognition Matt Boutell F-224 x8534
Markov chains Prof. Noah Snavely CS1114
CS 1114: Introduction to Computing Using MATLAB and Robotics Prof. Noah Snavely
Interpolation Prof. Noah Snavely CS1114
Linked lists Prof. Noah Snavely CS1114
Finding Red Pixels – Part 2 Prof. Noah Snavely CS1114
Announcements Kevin Matzen office hours – Tuesday 4-5pm, Thursday 2-3pm, Upson 317 TA: Yin Lou Course lab: Upson 317 – Card access will be setup soon Course.
CS 1114: Introduction to Computing Using MATLAB and Robotics Prof. Graeme Bailey (notes modified from Noah Snavely, Spring.
Robustness and speed Prof. Noah Snavely CS1114
R-1 University of Washington Computer Programming I Lecture 17: Multidimensional Arrays © 2000 UW CSE.
Lecture 3a: Feature detection and matching CS6670: Computer Vision Noah Snavely.
Linked lists and memory allocation Prof. Noah Snavely CS1114
CS 106 Introduction to Computer Science I 03 / 17 / 2008 Instructor: Michael Eckmann.
Robust fitting Prof. Noah Snavely CS1114
CS 1114: Introduction to Computing Using MATLAB and Robotics Prof. Noah Snavely CS1114
Computer Systems Nat 4.5 Computing Science Data Representation Lesson 4: Storing Graphics EXTENSION.
Chapter 5. Loops are common in most programming languages Plus side: Are very fast (in other languages) & easy to understand Negative side: Require a.
CS 102 Computers In Context (Multimedia)‏ 01 / 28 / 2009 Instructor: Michael Eckmann.
Introduction to MATLAB adapted from Dr. Rolf Lakaemper.
Image Processing & Perception Sec 9-11 Web Design.
Introduction to Programming in MATLAB Intro. MATLAB Peer Instruction Lecture Slides by Dr. Cynthia Lee, UCSD is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike.
Pictures Looping through pixels.. Lab Review (1) Objects  Instantiated from Class  Turtle myTut = new Turtle(myWorld);  new operator creates an instance.
Arrays 1 Multiple values per variable. Why arrays? Can you collect one value from the user? How about two? Twenty? Two hundred? How about… I need to collect.
Two –Dimensional Arrays Mrs. C. Furman Java Programming November 19, 2008.
CSC Computing with Images
Image segmentation Prof. Noah Snavely CS1114
CS 1699: Intro to Computer Vision Matlab Tutorial Prof. Adriana Kovashka University of Pittsburgh September 3, 2015.
Interpolation Prof. Noah Snavely CS1114
Why is computer vision difficult?
Finding Red Pixels Prof. Ramin Zabih
Introduction to MATLAB adapted from Dr. Rolf Lakaemper.
Medians and blobs Prof. Ramin Zabih
Hard problems in computer science Prof. Noah Snavely CS1114
Finding Red Pixels – Part 1 Prof. Noah Snavely CS1114
Clustering Prof. Ramin Zabih
Finding Red Pixels – Part 2 Prof. Noah Snavely CS1114
1 Computer Science 631 Multimedia Systems Prof. Ramin Zabih Computer Science Department CORNELL UNIVERSITY.
CS100R: Introduction to Computing Using MATLAB and Robotics Prof. Ramin Zabih
June 14, ‘99 COLORS IN MATLAB.
CIS 601 Fall 2003 Introduction to MATLAB Longin Jan Latecki Based on the lectures of Rolf Lakaemper and David Young.
Sorting and selection – Part 2 Prof. Noah Snavely CS1114
Compsci 101.2, Fall Plan for October 22 l Images, tuples, RGB color model  Image processing by understanding API  Image processing with tuples.
Improving Matlab Performance CS1114
CS 1114: Finding things Prof. Graeme Bailey (notes modified from Noah Snavely, Spring 2009)
ManipulatingPictures-part31 Manipulating Pictures, Arrays, and Loops part 3 Barb Ericson Georgia Institute of Technology Nov 2009.
CompSci 101 Introduction to Computer Science March 8, 2016 Prof. Rodger.
Recognizing objects Prof. Noah Snavely CS1114
Image Processing Objectives To understand pixel based image processing
Image Processing & Perception
Introduction to MATLAB
Image transformations
Image transformations
Each column represents another power of the base
Introduction to MATLAB
CS 2770: Computer Vision Linear Algebra and Matlab
CS 1674: Intro to Computer Vision Linear Algebra Review
Computer Vision Lecture 16: Texture II
Looping through pixels.
Numbers and their bases
CS 106A, Lecture 18 Practice with 1D and 2D Arrays
Digital Image Processing
Introduction to MATLAB
Simulation And Modeling
CS 1114: Introduction to Computing Using MATLAB and Robotics
Non-numeric Data Representation
Linked lists Prof. Noah Snavely CS1114
Bounding Boxes, Algorithm Speed
Presentation transcript:

Finding Red Pixels – Part 1 Prof. Noah Snavely CS1114

2 Administrivia  Activate your CSUG accounts  Assignment 1 will be out tomorrow, due Friday, Feb. 6 –Will be graded in demo sessions  Quiz 1 will be next Thursday  Evening guest lecture on Tuesday –Robert Kleinberg on graphs

3 Tracking a lightstick  We will spend the first part of CS1114 trying to track a red lightstick  On the way we will cover important CS themes –Fundamental algorithms –Good programming style –Computational problem solving

What can we do with computer vision? 4

Human vision 5 Question: How many people are in this image? Source: “80 million tiny images” by Torralba, et al.

Interpreting images 6 Q: Can a computer (or robot) understand this image? A: Yes and no (mostly no)

Human vision has its shortcomings… 7 Sinha and Poggio, Nature, 1996 Credit: Steve Seitz

Human vision has its shortcomings… 8 by Ted Adelson, slide credit Steve Seitz

Interpreting images 9 Q: Can a computer (or robot) find the lightstick? A: With your help, yes! * (300, 100)

What is an image? 10 “lightstick1.jpg”

What is an image?  A grid of numbers (intensity values)  Intensity values range between 0 (black) and 255 (white) 11 x y … … snoop 3D view

What is an image?  A grid of numbers (intensity values)  In Matlab, a matrix 12 [ … ; … ; … ; … ] { { x 100 matrix

Matrices in Matlab  1D matrix is often called a vector –Similar to arrays in other languages 13 A = [ ] Row vector (or 1 x 5 matrix) B = [ 10 ; 30 ; 40 ; 106 ; 123 ] Column vector (or 5 x 1 matrix) A(1) == 10 A(4) == 106

Matrices in Matlab 14 C = [ ; ; ] 3 x 5 matrix C(1,1) == ? C(2,4) == ? can also assign to a matrix entries C(1,1) = C(1,1) + 1

Image processing  We often want to modify an image by “doing something” to each pixel: 15 BlurBrighten

Brightening an image 16 Q: What does this mean in terms of matrix entries? [ ; ; ] A: Increase each element by some amount (say, 20)

Brightening an image (Take 1) 17 D = [ ] D(1) = D(1) + 20; D(2) = D(2) + 20; D(3) = D(3) + 20; D(4) = D(4) + 20; D(5) = D(5) + 20; D(6) = D(6) + 20; D(7) = D(7) + 20; D(8) = D(8) + 20; D(9) = D(8) + 20; D(10) = D(10) + 20; D(11) = D(11) + 20; D(12) = D(12) + 20; D(13) = D(13) + 20; D(14) = D(14) + 20; D(15) = D(15) + 20; x

18 Avoiding duplicate code  Programming languages are designed to make this easy –It’s a huge theme in language design –Many new programming techniques are justified by this Object-oriented programming, higher-order procedures, functional programming, etc.

Why is it a bad idea to duplicate code? 19  Hard to write  Hard to modify  Hard to get right  Hard to generalize  Programmer’s “intent” is obscured D(1) = D(1) + 20; D(2) = D(2) + 20; D(3) = D(3) + 20; D(4) = D(4) + 20; D(5) = D(5) + 20; D(6) = D(6) + 20; D(7) = D(7) + 20; D(8) = D(8) + 20; D(9) = D(8) + 20; D(10) = D(10) + 20; D(11) = D(11) + 20; D(12) = D(12) + 20;

20 Brightening an image (Take 2)  Using iteration for i = 1:12 D(i) = D(i) + 20; end D(1) = D(1) + 20; D(2) = D(2) + 20; D(3) = D(3) + 20; D(4) = D(4) + 20; D(5) = D(5) + 20; D(6) = D(6) + 20; D(7) = D(7) + 20; D(8) = D(8) + 20; D(9) = D(9) + 20; D(10) = D(10) + 20; D(11) = D(11) + 20; D(12) = D(12) + 20;  Much easier to understand and modify the code  Better expresses programmer’s “intent”

Many advantages to iteration  Can do things with iteration that you can’t do by just writing lots of statements  Example: increment every vector cell –Without knowing the length of the vector! len = length(D); % New Matlab function for i = 1:len D(i) = D(i) + 20; end 21

22 Introducing iteration into code  Programming often involves “clichés” –Patterns of code rewriting –I will loosely call these “design patterns”  Iteration is our first example

Brightening 2D images 23 C = [ ; ; ] 3 x 5 matrix for row = 1:3 for col = 1:5 C(row,col) = C(row,col) + 20; end Called a “nested” for loop

Brightening 2D images 24 for row = 1:3 for col = 1:5 C(row,col) = C(row,col) + 20 end  What if it’s not a 3x5 matrix? [nrows,ncols] = size(C) % New Matlab function for row = 1:nrows for col = 1:ncols C(row,col) = C(row,col) + 20 end

25 Using iteration to count nzeros = 0; [nrows,ncols] = size(D); for row = 1:nrows for col = 1:ncols if D(row,col) == 0 nzeros = nzeros + 1; end; D = [ ; ; ]

26 Using iteration to count nzeros = 0; [nrows,ncols] = size(D); for row = 1:nrows for col = 1:ncols if D(row,col) == 0 nzeros = nzeros + 1; end; If D is an image, what are we counting?

What about red pixels?  A grayscale image is a 2D array –Brightest = 255, darkest = 0 27

What about red pixels?  A color image is 3 different 2D arrays –For red/green/blue values (RGB) –We provide a way to create these 3 arrays  Why are there 3? 28 =

What about red pixels?  Example colors: red(1,1) == 255, green(1,1) == blue(1,1) == 0 red(2,1) == 100 == green(2,1) == blue(2,1) red(3,1) == 0 == green(3,1) == blue(3,1) red(3,1) == 255 == green(3,1), blue(3,1) == 0 29

For next time  Visit the lab, try out the rest of the Matlab tutorial  Make sure your CSUG account is activated 30