Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

FIT5221 - Assignment 1
There are four tasks in this assignment:
- Harris corner detection (8 marks)
- Homography estimation (2 marks)
- RANSAC (6 marks)
- Image stitching (4 marks)
Available: Friday, March 13, 2026.
Submission due: 11.55 PM, Friday, April 3, 2026.
Instructions:
1. All code should be in Python (>=3.10.x). You should write appropriate comments to explain your implementations.
2. For tasks requiring self-implementation, you are generally only allowed to use numpy, scipy, skimage, matplotlib, and Python built-in libraries. Please read the Instructions and Requirements for each task carefully.
3. Late submission penalty: 5% marks per day or part thereof.
4. All submissions must be made through Moodle only.
5. Plagiarism cases will be dealt with following Monash policy.
6. AI & Generative AI tools MUST NOT BE USED in this assignment.
Submission:
Your submission contains two files:
1. A ZIP file named “A1_<YourMonashID>.zip” (e.g. A1_12345678.zip), including:
  • A Jupyter notebook named `StudentName_ID.ipynb`, that presents all your implementation, inputs, and outputs for each task. Please rename the Jupyter notebook accordingly. In the first cell of your notebook, you must specify your full name and student ID. The Jupyter notebook should include comments that explain your code.
  • All input images and all output/displayed images from your Jupyter notebook saved in image format (e.g., JPG, PNG).
2. A separate report in PDF format named `Report_StudentName_ID.pdf`, that describes your approaches. Please rename the report file accordingly. You must specify your full name and student ID at the beginning of the report. NOTE: this report must be a separate document. Do not submit the PDF export of your Jupyter notebook. For each task, your report may include (but not limited to):
  • Discussion of your implementation and parameter choices.
  • Discussion of your results.2
  • Any issues you encountered, comparisons, or analysis (if applicable).
  • Any additional information required by the task instructions.

Ensure that the notebook runs without errors. Using the same input image, it should produce the same results as reported. We will re-run your notebook on our computers.

For each task, the runtime of the code should be less than 5 minutes. 

Image stitching is a technique to combine multiple images with overlapping fields of view to produce a panorama photo.

There are four steps in the panorama stitching algorithm:
Step 1: Detect keypoints (e.g., DoG, Harris) and compute a local descriptor for each keypoint (e.g., SIFT, SURF) from the two input images.
Step 2: Match the descriptors between the two images.
Step 3: Use the RANSAC algorithm to estimate a homography matrix using the matches obtained from Step 2.
Step 4: Perform image warping using the homography matrix obtained from Step 3 to transform one of the two images, then generate the stitched image.

In this assignment, students are required to implement some specific steps of the image stitching process and use their implementations to generate a stitched image as the final output. The details of each task are provided below.

Task 1. Harris corner detection (8 marks)

Implement your own Harris corner detector. We provide a placeholder function my_harris_corner_detector(...) in the notebook. You need to complete the implementation inside this function with appropriate parameters.

Your function must implement all steps of the Harris corner detection algorithm from scratch and generate the required outputs for each input image.

You will then compare your function’s output with the corresponding output using skimage’s functions corner_peaks and corner_harris.

You must use the following images as inputs:
  • skimage.data.astronaut()
  • skimage.data.checkerboard()
  • All 6 provided images.
Instructions
1. my_harris_corner_detector(...) (7 marks)4
Implement the function my_harris_corner_detector(…). Using your implemented function, for each input image, you must:
  • Display the input image (either grayscale or RGB)
  • On the same image:
    • Display corners detected by your implementation using red ‘+’ markers.
    • Display corners detected by the function
corner_peaks(harris_response,…), where harris_response =
corner_harris(grayscale_input_image, …), using blue ‘o’ markers.
Both corner_peaks and corner_harris functions are from the skimage library.
  • Display the number of corners detected by your implementation.
  • Display the number of corners detected by corner_peaks(harris_response, …).
  • Display the number of overlapping corners between your implementation and the library implementation. Two corners are considered overlapping if the
Euclidean distance between their coordinates is less than or equal to a small threshold, e.g., 2-3 pixels.
  • Find a good set of parameters (e.g., alpha, corner response threshold, etc.) and justify your choices.
2. Report (1 mark):
Include all output images from your implementation in your report, they must be identical. Answer the following questions:
  • How do you decide the parameters?
  • What are your observations from the results?
  • Discuss any “interesting” implementation you made.
Requirements:
  • You are only allowed to use Numpy, SciPy, skimage (only for read/write images, convolution operations, and defining Gaussian filters), matplotlib, and Python built-in libraries for this task.
  • You MUST NOT USE corner_peaks and corner_harris from skimage library or similar functions from OpenCV. If you directly use the function from the library for any steps, you may not get full marks.
  • You MUST NOT COPY the implementations of the library.
Note:
  • Ensure that the notebook runs without errors. Using the same input image, it should produce the same results as reported. We will re-run your notebook on our computers.
  • For Step 5 of the Harris corner detector (i.e., non-maximum suppression (NMS)), you are allowed to use the library’s functions to find the maximum value within a window, but not the function for the whole NMS step.
  • There is a parameter min_distance in corner_peaks to remove the corners within min_distance. This is an additional step; you are not required to implement this.5
Task 2. Homography estimation (2 marks)
Implement a function to estimate a homography matrix from point correspondences. We provide a placeholder function my_homography_estimation(…) in the notebook. You need to complete the implementation inside this function with appropriate parameters.