Assignment 2 for Image Processing | CMSC 426, Assignments of Computer Science

Material Type: Assignment; Professor: Jacobs; Class: Image Processing; Subject: Computer Science; University: University of Maryland; Term: Spring 2004;

Typology: Assignments

Pre 2010

Uploaded on 02/13/2009

koofers-user-ais-2
koofers-user-ais-2 🇺🇸

10 documents

1 / 2

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Problem Set 2
CMSC 426
Assigned: Feb. 5, 2004 Due: Feb. 12, 2004
1. In this problem you will need to write some code to rotate and translate 3D points,
and to project them into a 2D image. You will be provided with three functions
that will allow you to try your programs out: display_image_pts, ladder, and
movie_pts. This code will be available on the class web site. Your code should
have the name and inputs described below, so that it can work with my code. All
your code should be emailed to the class TA. In addition, you should turn in a
hardcopy of all your code, and a printout showing calls to your routines and the
results.
a. Write a function perspective_project. This should take as input a 3xn
matrix in which each column contains the (x,y,z) coordinates of a point in
3D. It should return a 2xn matrix containing the (x,y) coordinates of a
point in 2D, rendered with perspective projection. Assume the focal point
is at the origin, and the image plane is z=1, so the focal length is 1. Test
this by projecting the points (7, 3, 2) and (9, 5, 3), with the following call:
perspective_project([7,9; 3, 5; 2, 3]). Turn in the code and the results of
this function call.
b. Write a comparable function that performs weak perspective projection.
Test it by doing: weak_perspective_project([7,9; 3, 5; 2, 3]). Turn in the
code and the results of this function call.
c. Write a function that translates points in 3D. This should take as input a
3xn matrix representing the points, and a 3x1 column vector giving the x,y
and z components of the translation. Test this with:
translate_points([7,9; 3, 5; 2, 3], [1; -1; 2]). Turn in the code and the
results of this function call.
d. Execute the following command:
display_image_pts(perspective_project(translate_points(ladder, [1;0;-
7]))). Use the command print to save the resulting image to a file. Print it
out and turn it in.
e. Execute the following command:
display_image_pts(weak_perspective_project(translate_points(ladder,
[1;0;-7]))). Use the command print to save the resulting image to a file.
Print it out and turn it in.
f. Execute the following commands. Write one or two sentences explaining
what you see. Do these seem to be the same object, in all movies? What
is the difference between the first two movies and the second two movies?
movie_pts(ladder, [zeros(1,21); zeros(1,21); -4.8:-.2:-8.8],'p');
movie_pts(ladder, [0:.1:2; zeros(1,21); -4.8:-.2:-8.8],'p');
movie_pts(ladder, [zeros(1,21); zeros(1,21); -4.8:-.2:-8.8],'w');
movie_pts(ladder, [0:.1:2; zeros(1,21); -4.8:-.2:-8.8],'w');
pf2

Partial preview of the text

Download Assignment 2 for Image Processing | CMSC 426 and more Assignments Computer Science in PDF only on Docsity!

Problem Set 2

CMSC 426

Assigned: Feb. 5, 2004 Due: Feb. 12, 2004

  1. In this problem you will need to write some code to rotate and translate 3D points, and to project them into a 2D image. You will be provided with three functions that will allow you to try your programs out: display_image_pts, ladder, and movie_pts. This code will be available on the class web site. Your code should have the name and inputs described below, so that it can work with my code. All your code should be emailed to the class TA. In addition, you should turn in a hardcopy of all your code, and a printout showing calls to your routines and the results. a. Write a function perspective_project. This should take as input a 3xn matrix in which each column contains the (x,y,z) coordinates of a point in 3D. It should return a 2xn matrix containing the (x,y) coordinates of a point in 2D, rendered with perspective projection. Assume the focal point is at the origin, and the image plane is z=1, so the focal length is 1. Test this by projecting the points (7, 3, 2) and (9, 5, 3), with the following call: perspective_project ([7,9; 3, 5; 2, 3]). Turn in the code and the results of this function call. b. Write a comparable function that performs weak perspective projection. Test it by doing: weak_perspective_project([7,9; 3, 5; 2, 3]). Turn in the code and the results of this function call. c. Write a function that translates points in 3D. This should take as input a 3xn matrix representing the points, and a 3x1 column vector giving the x,y and z components of the translation. Test this with: translate_points([7,9; 3, 5; 2, 3], [1; -1; 2]). Turn in the code and the results of this function call. d. Execute the following command: display_image_pts ( perspective_project ( translate_points ( ladder, [1;0;- 7]))). Use the command print to save the resulting image to a file. Print it out and turn it in. e. Execute the following command: display_image_pts ( weak_perspective_project ( translate_points ( ladder , [1;0;-7]))). Use the command print to save the resulting image to a file. Print it out and turn it in. f. Execute the following commands. Write one or two sentences explaining what you see. Do these seem to be the same object, in all movies? What is the difference between the first two movies and the second two movies? movie_pts(ladder, [zeros(1,21); zeros(1,21); -4.8:-.2:-8.8],'p'); movie_pts(ladder, [0:.1:2; zeros(1,21); -4.8:-.2:-8.8],'p'); movie_pts(ladder, [zeros(1,21); zeros(1,21); -4.8:-.2:-8.8],'w'); movie_pts(ladder, [0:.1:2; zeros(1,21); -4.8:-.2:-8.8],'w');

g. Write a function rotate_points that will rotate a set of 3D point about the y axis by a given angle. That is, this function should leave the y components of the points unchanged, while rotating the x and z components. Hint: In class (see powerpoint notes) we have learned how to rotate a point in 2D. That is a rotation about the z axis. This can be modified to rotate about the y axis. Test this with the following commands: rotate_points([1;1;1], pi/4) rotate_points([1;1;1], pi/2) Turn in the code and the results of this function call. Try the commands: movie_pts(rotate_points(ladder, pi/10), [-2:-.1:-4; zeros(1,21); -4.8:-.2:- 8.8],'w'); movie_pts(rotate_points(ladder, pi/10), [-2:-.1:-4; zeros(1,21); -4.8:-.2:- 8.8],'p');

  1. Download an image of your choice from the internet. Print a copy of it. Apply a 5x5 averaging filter to it, and display and print the results. You should find the matlab functions imshow , imfilter , and fspecial to be helpful. Repeat this process with a 10x10 and a 20x20 averaging filter, display and printing the results. You should turn in a total of four images; the original image and the image smoothed by three different filters.