Image as array concept in NumPy - Time & Space Complexity
When working with images as arrays, it is important to understand how processing time grows as the image size increases.
We want to know how the time to handle an image changes when the image has more pixels.
Analyze the time complexity of the following code snippet.
import numpy as np
# Create a 2D grayscale image of size n x n
n = 1000
image = np.random.randint(0, 256, size=(n, n), dtype=np.uint8)
# Increase brightness by adding 50 to each pixel
bright_image = np.clip(image + 50, 0, 255)
This code creates a square grayscale image and increases the brightness of every pixel by 50.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Adding 50 to each pixel in the image array.
- How many times: Once for every pixel, so n x n times.
As the image size grows, the number of pixels grows with the square of n, so the work grows quickly.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 100 (10x10) |
| 100 | 10,000 (100x100) |
| 1000 | 1,000,000 (1000x1000) |
Pattern observation: Doubling the image width multiplies the work by four because the total pixels increase by n squared.
Time Complexity: O(n²)
This means the time to process the image grows with the total number of pixels, which is the square of the image width.
[X] Wrong: "Processing an image grows linearly with the image width n."
[OK] Correct: Because images have width and height, the total pixels are n x n, so the work grows with the area, not just one side.
Understanding how image size affects processing time helps you explain performance in real tasks like photo editing or computer vision.
"What if the image was colored with three channels (RGB)? How would the time complexity change?"
Practice
Solution
Step 1: Understand image representation in arrays
Images are stored as arrays where each element corresponds to a pixel's color information.Step 2: Identify what each element represents
Each element holds the color value (like red, green, or blue intensity) for that pixel.Final Answer:
A pixel's color value -> Option AQuick Check:
Pixel color = element value [OK]
- Confusing pixel values with image size
- Thinking array stores image format
- Assuming array length equals number of images
Solution
Step 1: Understand array shape for RGB image
An RGB image array shape is (height, width, 3) where 3 is for color channels.Step 2: Check correct NumPy syntax for shape
NumPy expects shape as a tuple inside zeros(), so (3, 3, 3) is correct.Final Answer:
np.zeros((3, 3, 3)) -> Option AQuick Check:
Shape tuple with 3 channels = np.zeros((3,3,3)) [OK]
- Passing shape as separate arguments instead of tuple
- Missing the third dimension for color channels
- Using list instead of tuple for shape
import numpy as np img = np.ones((4, 5, 3)) print(img.shape)
Solution
Step 1: Analyze the array creation
np.ones((4, 5, 3)) creates an array with shape (4, 5, 3).Step 2: Understand shape attribute output
Printing img.shape returns the tuple describing the array dimensions exactly as given.Final Answer:
(4, 5, 3) -> Option BQuick Check:
Shape matches input tuple (4,5,3) [OK]
- Mixing up width and height order
- Ignoring the color channel dimension
- Assuming shape returns total size
import numpy as np img = np.zeros(2, 2, 3) print(img.shape)
Solution
Step 1: Check np.zeros syntax
np.zeros expects a single shape argument as a tuple, but here three separate arguments are given.Step 2: Identify correct shape input
Shape should be passed as np.zeros((2, 2, 3)) with parentheses around the shape tuple.Final Answer:
Missing tuple for shape in np.zeros -> Option CQuick Check:
Shape must be tuple in np.zeros() [OK]
- Passing multiple arguments instead of one tuple
- Assuming np.zeros can't create 3D arrays
- Incorrect print syntax
import numpy as np
img = np.array([[[255, 0, 0], [0, 255, 0]],
[[0, 0, 255], [255, 255, 0]]])
How do you change the bottom-right pixel to white (255, 255, 255)?Solution
Step 1: Identify pixel position in array
Bottom-right pixel in a 2x2 array is at index [1, 1] (zero-based indexing).Step 2: Assign new RGB values correctly
Assign the list [255, 255, 255] to img[1, 1] to set it to white.Final Answer:
img[1, 1] = [255, 255, 255] -> Option DQuick Check:
Index [1,1] changes bottom-right pixel [OK]
- Using out-of-range indices like [2, 2]
- Trying to assign to a non-existing channel index
- Changing wrong pixel like top-left
Ready to prove it?
Pass the test and this pattern moves unknown
