$29.99
CS 4476: Computer Vision
PS3
Instructions
1. The assignment must be done in Python3. No other programming languages are allowed.
2. Fill your answers in the answer sheet PPT provided and submit the file under the name: FirstName_LastName_PS3.pdf on Gradescope. Please do not modify the layout of the boxes provided in
the answer sheet and fit your answers within the space provided.
3. Please enter your code in the designated areas of the template Python files. Please do not add additional
functions/imports to the files. Points will be deducted for any changes to code/file names, use of static
paths and anything else that needs manual intervention to fix.
4. Please submit your code and output files in a zipped format, using the helper script zip_submission.py
with your GT username as a command line argument (using --gt_username), to Gradescope. Please
do not create subdirectories within the main directory. The .zip_dir_list.yml file contains the
required deliverable files, and zip_submission.py will fail if all the deliverables are not present in the
root directory. Feel free to comment and uncomment them as you complete your solutions.
5. For the implementation questions, make sure your code is bug-free and works out of the box. Please
be sure to submit all main and helper functions. Be sure to not include absolute paths. Points will be
deducted if your code does not run out of the box.
6. If plots are required, you must include them in your Gradescope report and your code must display
them when run. Points will be deducted for not following this protocol.
7. Ensure that you follow the instructions very carefully. Check the TODOs carefully and paste the
images at the appropriate slides in the report.
Setup
Note that we will be using a new conda environment for this project! If you run into import module errors,
try pip install -e . again, and if that still doesn’t work, you may have to create a fresh environment.
1. Install Miniconda. It doesn’t matter whether you use Python 2 or 3 because we will create our own
environment that uses 3 anyways.
2. Open the terminal
(a) On Windows: open the installed Conda prompt to run the command.
(b) On MacOS: open a terminal window to run the command
(c) On Linux: open a terminal window to run the command
1
3. Navigate to the folder "proj3_configs" where you have the conda configuration files.
4. Create the conda environment for this project
(a) On Windows: conda env create -f proj3_env_win.yml
(b) On MacOS: conda env create -f proj3_env_mac.yml
(c) On Linux: conda env create -f proj3_env_linux.yml
5. Activate the newly created environment: use the command conda activate cs4476_proj3
6. Install the project files as a module in this conda environment using pip install -e . (Do not
forget the .). Run this command on the folder where setup.py file exists.
Run the notebook using jupyter notebook ./proj3_code/proj3.ipynb.
At this point, you should see the jupyter notebook in your web browser. Follow all the instructions in
the notebook for both the code + report portions of this project.
Submission Instructions
Recheck you pass all local unit tests by entering the proj3_unit_tests directory and running the command
pytest ./. This command will run all the unit tests once more, and you need to add a screenshot to the
report. Ensure that the conda environment proj3 is being used.
• Submit the code as zip on Gradescope at PS3 - Code.
• Submit the report as PDF on Gradescope at PS3 - Report.
There is no submission to be done on Canvas.
Rubric
Code: The score for each part is provided below. Please refer to the submission results on Gradescope for
a detailed breakdown.
Part 1: Projection Matrix on provided images 28
Part 3: Fundamental Matrix 20
Part 4: RANSAC 20
EC1: Fundamental Matrix decomposition 10
Total 68 (+10)
Report: The report is worth 32 points. Please refer to the pptx template where we have detailed the
points associated with each question.
Deliverables
The following code deliverables will be uploaded as a zip file on Gradescope.
1. proj3_code/fundamental_matrix.py
(a) point_line_distance()
(b) signed_point_line_errors()
2
2. proj3_code/least_squares_fundamental_matrix.py
(a) optimize()
3. proj3_code/projection_matrix.py
(a) objective_func()
(b) projection()
(c) estimate_camera_matrix()
(d) decompose_camera_matrix()
(e) calculate_camera_center()
4. proj3_code/ransac.py
(a) calculate_num_ransac_iterations()
(b) find_inliers()
(c) ransac_fundamental_matrix()
5. proj3_code/recover_rot_translation.py
(a) recover_E_from_F()
(b) recover_rot_translation_from_E()
6. proj3_code/proj3.ipynb
7. proj3_code/get_points.py
8. proj3_code/two_view_data.py
9. proj3_code/utils.py
Do not create this zip manually. You are supposed to use the command python zip_submission.py
–-gt_username <username> for this.
The second thing to upload is the PDF export of the report on gradescope.
This iteration of the assignment is developed by Shashank Srikanth, Wantian Zhao, and Judy Hoffman.
This assignment was developed and maintained by Shashank Srikanth, Wantian Zhao, Ayush Baid, Haoxin Ma, Jacob Knaup,
Jing Wu, Julia Chen, Stefan Stojanov, Frank Dellaert, James Hays, and Judy Hoffman based on the similar assignment by
Aaron Bobick.
3