Bird
Raised Fist0
Computer Visionml~20 mins

Image as numerical data (pixels, channels) in Computer Vision - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Image Data Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
1:30remaining
What is the shape of the image array after loading?
Consider a color image loaded as a NumPy array with shape (height, width, channels). If the image is 128 pixels high, 256 pixels wide, and has 3 color channels (RGB), what will be the shape of the array?
Computer Vision
import numpy as np
image = np.zeros((128, 256, 3))
print(image.shape)
A(128, 256, 3)
B(3, 128, 256)
C(256, 128, 3)
D(128, 3, 256)
Attempts:
2 left
💡 Hint
Remember the shape format is (height, width, channels) for most image arrays.
🧠 Conceptual
intermediate
1:00remaining
Why do images have multiple channels?
Why do color images have multiple channels instead of just one?
ABecause channels represent different image file formats.
BBecause multiple channels store different image resolutions.
CBecause channels are used to store image metadata.
DBecause each channel represents a different color component like Red, Green, and Blue.
Attempts:
2 left
💡 Hint
Think about how colors are combined on screens.
Hyperparameter
advanced
2:00remaining
Choosing the right input shape for a CNN
You want to train a convolutional neural network (CNN) on 64x64 RGB images. What should be the correct input shape for the model?
A(64, 64, 3)
B(3, 64, 64)
C(64, 3, 64)
D(64, 64)
Attempts:
2 left
💡 Hint
Most deep learning libraries expect images with height, width, and channels in that order.
Metrics
advanced
1:30remaining
Calculating total pixels in a batch of images
You have a batch of 32 grayscale images, each of size 28x28 pixels. How many total pixel values are there in the batch?
A784
B25088
C896
D1024
Attempts:
2 left
💡 Hint
Multiply the number of images by pixels per image.
🔧 Debug
expert
2:30remaining
Why does this image normalization code fail?
You try to normalize an image array with pixel values from 0 to 255 by dividing by 255. But the output array remains integers. Why?
Computer Vision
import numpy as np
image = np.array([[0, 128, 255]], dtype=np.uint8)
normalized = image / 255
print(normalized)
print(normalized.dtype)
ABecause dividing uint8 by int returns uint8, so decimals are lost.
BBecause the division operator does not work on NumPy arrays.
CBecause the image array needs to be converted to float before division.
DBecause 255 is treated as zero in this context.
Attempts:
2 left
💡 Hint
Check the data type before and after division.

Practice

(1/5)
1. What does each pixel in a color image usually represent?
easy
A. A single number representing brightness only
B. A sound wave frequency
C. A text label describing the image
D. A set of numbers for red, green, and blue colors

Solution

  1. Step 1: Understand pixel representation in color images

    Each pixel stores values for red, green, and blue channels to show color.
  2. Step 2: Compare options to pixel data

    Only A set of numbers for red, green, and blue colors correctly describes pixels as sets of RGB numbers.
  3. Final Answer:

    A set of numbers for red, green, and blue colors -> Option D
  4. Quick Check:

    Pixel = RGB values [OK]
Hint: Pixels hold RGB numbers, not text or sound [OK]
Common Mistakes:
  • Thinking pixels store text labels
  • Confusing pixel with brightness only
  • Assuming pixels represent sound
2. Which Python code correctly creates a 3x3 image with 3 color channels filled with zeros?
easy
A. image = np.zeros((3, 3, 3))
B. image = np.zeros(3, 3, 3)
C. image = np.zeros[3, 3, 3]
D. image = zeros((3, 3, 3))

Solution

  1. Step 1: Recall numpy zeros syntax

    np.zeros requires a single tuple argument for shape, like (3, 3, 3).
  2. Step 2: Check each option's syntax

    image = np.zeros((3, 3, 3)) uses correct tuple and function call syntax. Others have syntax errors or missing np.
  3. Final Answer:

    image = np.zeros((3, 3, 3)) -> Option A
  4. Quick Check:

    np.zeros((3,3,3)) creates 3x3 RGB image [OK]
Hint: Use np.zeros with shape tuple inside parentheses [OK]
Common Mistakes:
  • Passing multiple arguments instead of a tuple
  • Using square brackets instead of parentheses
  • Forgetting np. prefix
3. Given this code:
import numpy as np
image = np.array([[[255, 0, 0], [0, 255, 0]],
                  [[0, 0, 255], [255, 255, 0]]])
print(image.shape)

What is the output?
medium
A. (2, 3, 2)
B. (3, 2, 2)
C. (2, 2, 3)
D. (3, 3, 3)

Solution

  1. Step 1: Analyze the array structure

    The array has 2 rows, each with 2 pixels, each pixel has 3 color values (RGB).
  2. Step 2: Determine shape order

    Shape is (height=2, width=2, channels=3), so (2, 2, 3).
  3. Final Answer:

    (2, 2, 3) -> Option C
  4. Quick Check:

    Shape = (rows, cols, channels) = (2, 2, 3) [OK]
Hint: Shape is (height, width, channels) in that order [OK]
Common Mistakes:
  • Mixing up dimensions order
  • Counting channels as first dimension
  • Assuming square shape without checking
4. What is wrong with this code snippet for accessing the green channel of an image?
green_channel = image[:, :, 1:2]
medium
A. It returns a 3D array instead of 2D
B. It causes an index error
C. It accesses the red channel instead
D. It modifies the original image

Solution

  1. Step 1: Understand slicing with 1:2

    Slicing with 1:2 keeps the channel dimension, returning shape (height, width, 1).
  2. Step 2: Compare with expected 2D array

    To get a 2D array, use index 1 without slice, like image[:, :, 1].
  3. Final Answer:

    It returns a 3D array instead of 2D -> Option A
  4. Quick Check:

    Slicing with 1:2 keeps channel dim [OK]
Hint: Use single index, not slice, for 2D channel array [OK]
Common Mistakes:
  • Using slice returns extra dimension
  • Confusing channel indices
  • Assuming it changes original image
5. You have a grayscale image stored as a 2D array with shape (100, 100). You want to convert it to a 3-channel RGB image by repeating the grayscale values across all channels. Which code correctly does this?
hard
A. rgb_image = np.repeat(gray_image, 3)
B. rgb_image = np.stack([gray_image]*3, axis=2)
C. rgb_image = gray_image.reshape(100, 100, 3)
D. rgb_image = np.concatenate(gray_image, 3)

Solution

  1. Step 1: Understand the goal

    We want to create a 3D array where each pixel's grayscale value repeats in 3 channels.
  2. Step 2: Check each method

    rgb_image = np.stack([gray_image]*3, axis=2) stacks the grayscale image 3 times along new channel axis correctly. rgb_image = np.repeat(gray_image, 3) repeats flattening data, wrong shape. rgb_image = gray_image.reshape(100, 100, 3) reshapes without adding channels, causing error. rgb_image = np.concatenate(gray_image, 3) has wrong syntax.
  3. Final Answer:

    rgb_image = np.stack([gray_image]*3, axis=2) -> Option B
  4. Quick Check:

    Stack repeats grayscale across channels [OK]
Hint: Use np.stack with axis=2 to add channels [OK]
Common Mistakes:
  • Using np.repeat without axis
  • Reshaping without adding channel dimension
  • Wrong function syntax for concatenation