$24
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
3. Navigate to the folder where you have the project
1
4. Create the conda environment for this project
(a) On Windows: conda env create -f proj2_env_win.yml
(b) On MacOS: conda env create -f proj2_env_mac.yml
(c) On Linux: conda env create -f proj2_env_linux.yml
5. Activate the newly created environment
(a) On Windows: use the command conda activate proj2
(b) On MacOS: use the command source activate proj2
(c) On Linux: use the command source activate proj2
6. Install the project files as a module in this conda environment using pip install -e . (Do not forget the .).
Run the notebook using jupyter notebook ./proj2_code/proj2.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 proj2_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 proj2 is being used.
• Submit the code as zip on Gradescope at PS2 - Code.
• Submit the report as PDF on Gradescope at PS2 - 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. proj2_code/fundamental_matrix.py
(a) point_line_distance()
2
(b) signed_point_line_errors()
2. proj2_code/least_squares_fundamental_matrix.py
(a) optimize()
3. proj2_code/projection_matrix.py
(a) objective_func()
(b) projection()
(c) estimate_camera_matrix()
(d) decompose_camera_matrix()
(e) calculate_camera_center()
4. proj2_code/ransac.py
(a) calculate_num_ransac_iterations()
(b) find_inliers()
(c) ransac_fundamental_matrix()
5. proj2_code/recover_rot_translation.py
(a) recover_E_from_F()
(b) recover_rot_translation_from_E()
6. proj2_code/proj2.ipynb
7. proj2_code/get_points.py
8. proj2_code/two_view_data.py
9. proj2_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 Ayush Baid and Judy Hoffman.
This assignment was developed and maintained by 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