Image stitching for mapping in Drone Programming - Time & Space Complexity
When stitching images for mapping, the program compares many small parts of images to join them correctly.
We want to know how the time needed grows as we add more images to stitch.
Analyze the time complexity of the following code snippet.
for i in range(len(images)):
for j in range(i + 1, len(images)):
match_points = find_matching_points(images[i], images[j])
if match_points:
stitched_image = stitch(images[i], images[j], match_points)
images[i] = stitched_image
images.pop(j)
break
This code tries to stitch each image with every other image by finding matching points and combining them.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Nested loops comparing pairs of images.
- How many times: The outer loop runs once per image, the inner loop compares with remaining images.
As the number of images grows, the number of comparisons grows quickly because each image is compared with many others.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 45 comparisons |
| 100 | About 4,950 comparisons |
| 1000 | About 499,500 comparisons |
Pattern observation: The number of comparisons grows roughly like the square of the number of images.
Time Complexity: O(n²)
This means if you double the number of images, the work to stitch them grows about four times.
[X] Wrong: "The stitching time grows just a little when adding more images because each image is processed once."
[OK] Correct: Each image is compared with many others, so the total comparisons increase much faster than the number of images.
Understanding how the stitching time grows helps you explain how your code handles many images efficiently, a useful skill in real projects.
"What if we used a method to only compare images that are close in location? How would the time complexity change?"
Practice
Solution
Step 1: Understand image stitching concept
Image stitching is about joining many photos to create a bigger picture.Step 2: Identify the main use in drone programming
It helps create large maps from many drone images for better area coverage.Final Answer:
To combine multiple drone photos into one large map -> Option AQuick Check:
Image stitching = combine photos [OK]
- Confusing image stitching with drone control
- Thinking it improves battery life
- Mixing it with live video streaming
Solution
Step 1: Identify stitching method names
Side by side stitching joins images horizontally or vertically.Step 2: Match method to stitching task
Only 'side_by_side' matches the stitching method; others relate to flight or battery.Final Answer:
stitch(images, method='side_by_side') -> Option AQuick Check:
Method 'side_by_side' = stitching images side by side [OK]
- Using unrelated methods like 'fly_path' or 'battery_save'
- Confusing stitching method with drone flight commands
- Misspelling method names
images = ['img1.jpg', 'img2.jpg', 'img3.jpg'] stitched_map = stitch(images, method='overlap') print(len(stitched_map))
What will be the output if
stitched_map is a combined image with 3 parts?Solution
Step 1: Understand the stitch function output
Stitching combines images into one big image, so the result is a single image object.Step 2: Check what len() returns on the stitched image
Most image objects do not support len(), so calling len() will cause an error.Final Answer:
Error -> Option DQuick Check:
len() on image object causes error [OK]
- Assuming length equals number of input images
- Expecting len() to work on image object
- Confusing list length with image object length
images = ['a.jpg', 'b.jpg'] stitched = stitch(images, method='overlap') stitched.show()
What is the likely cause of the error?
Solution
Step 1: Check input type for stitch function
Stitch usually needs image data, not just file names as strings.Step 2: Identify error cause
Passing file names without loading images causes errors when stitching or showing.Final Answer:
The stitch function requires images to be loaded, not file names -> Option CQuick Check:
Input must be loaded images, not file names [OK]
- Assuming method 'overlap' is invalid
- Thinking show() method is missing
- Ignoring that images list is not empty
Solution
Step 1: Understand the overlap condition
Only images with at least 30% overlap should be included in stitching.Step 2: Choose the best way to apply this condition
Filtering images before stitching ensures only suitable images are combined.Final Answer:
Filter images by overlap percentage before stitching using a function -> Option BQuick Check:
Filter first, then stitch = correct approach [OK]
- Stitching all images then cropping
- Ignoring overlap and stitching side by side
- Manual stitching without overlap checks
Ready to prove it?
Pass the test and this pattern moves unknown
