Course: Perception Robotics
Assessment: Individual report
Deadline: As announced on Canvas
Submission: One PDF report and one ZIP archive, submitted to Canvas
Tutorial: Open in Colab · Download notebook
Image Capture: Find an object with visible edges and surface texture on the PolyU Hung Hom campus. Take one photograph of the object.
Apply Filters:
Edge Detection:
Image Capture: On the PolyU Hung Hom campus, find a background with at least two colours. Hold a brightly coloured object in front of it and take one photograph showing both the object and background.
Color Segmentation:
cv2.inRange() function to create a binary mask that isolates the pixels within your defined color range.cv2.bitwise_and() to segment the object from the background.Image Capture: Find at least two circular objects on the PolyU Hung Hom campus. Photograph them where you find them. Use one or more photographs to show the objects.
Circle Detection: Apply the following steps to each photograph:
cv2.HoughCircles() function to detect circles in the image.dp, minDist, param1, param2, minRadius, and maxRadius. Count the correctly detected, missed, and falsely detected circles.cv2.findChessboardCorners() and cv2.cornerSubPix() from tutorial §2.3. Retake failed views until 15–20 images have all corners detected. List their filenames and show corner overlays for three images.cv2.calibrateCamera(). Report the 3 × 3 intrinsic matrix, distortion coefficients, processing resolution, and RMS reprojection error in pixels.cv2.undistort() to two photographs. Show each original and corrected image side by side, plus a close-up of the same checkerboard line near an image edge. Describe the observed changes and one problem encountered during capture or calibration.Determine your assigned PolyU campus location: Enter your 8-digit student ID on the Campus Draw website. Save your assignment receipt.
Collect your images: At your assigned location, take at least 12 photographs in normal photo mode while rotating through 360° horizontally from one fixed camera position. Keep the camera height, lens, and zoom fixed. Use 40–60% overlap between adjacent views, including the last and first views. Include your physical student ID card in one source photograph, with your name and student number readable and the campus scene visible. Do not add the card digitally or use the camera's panorama mode.
Image Stitching:
cv2.findHomography() with RANSAC. Show the inlier matches and report the homography matrix and inlier count.cv2.Stitcher_create(cv2.Stitcher_PANORAMA); see the OpenCV stitching guide.cv2.getPerspectiveTransform() and cv2.warpPerspective() to rectify both images. Choose the output aspect ratio from the object's width and height, and use the same output size for both images. Show the original images with labelled corners and the two corrected results. Include the source and destination coordinates, transformation matrices, and code.Based on the results from your work in the previous questions, provide clear and concise answers to the following.
Compare the results of the three filters you applied. Explain why the bilateral filter was more effective at preserving edges while reducing noise compared to the others.
What are the main advantages of using the HSV color space for color-based segmentation compared to the RGB color space?
Describe the challenges you faced while determining the correct HSV threshold values. For instance, how did the lighting in your photo affect the required ranges for Saturation (S) and Value (V)?
Why should the checkerboard be photographed at different positions and tilts? Refer to your captured images and explain why a low RMS reprojection error alone does not guarantee an accurate calibration.
How does RANSAC help estimate a homography when feature matches contain errors? Identify a region in your panorama that aligns well or poorly, and discuss how repeated building patterns or camera movement could affect the result.