Bird
Raised Fist0
Computer Visionml~5 mins

Edge detection (Canny) in Computer Vision

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
Introduction

Edge detection helps find the outlines of objects in images. The Canny method is a popular way to do this clearly and accurately.

To find shapes or boundaries in photos for object recognition.
To prepare images for further analysis like counting items or measuring sizes.
To detect road lanes in self-driving car cameras.
To highlight important features in medical images like X-rays.
To improve image quality by focusing on edges for artistic effects.
Syntax
Computer Vision
edges = cv2.Canny(image, threshold1, threshold2)

image: The input image, usually in grayscale.

threshold1 and threshold2: Values to decide which edges are strong or weak.

Examples
Detect edges with lower threshold 50 and upper threshold 150 on a grayscale image.
Computer Vision
edges = cv2.Canny(gray_image, 50, 150)
Use higher thresholds to detect only stronger edges.
Computer Vision
edges = cv2.Canny(image, 100, 200)
Sample Model

This code creates a black image with a white square. Then it finds edges using Canny. Finally, it counts and prints how many edge pixels were found.

Computer Vision
import cv2
import numpy as np

# Create a simple black image with a white square
image = np.zeros((100, 100), dtype=np.uint8)
cv2.rectangle(image, (30, 30), (70, 70), 255, -1)

# Apply Canny edge detection
edges = cv2.Canny(image, 50, 150)

# Count how many edge pixels were detected
edge_count = np.sum(edges > 0)

print(f"Number of edge pixels detected: {edge_count}")
OutputSuccess
Important Notes

Use grayscale images for Canny; color images should be converted first.

Choosing thresholds affects how many edges you get: lower values detect more edges but can include noise.

Canny uses steps like smoothing, gradient calculation, and edge tracking for good results.

Summary

Canny edge detection finds clear edges by using two threshold values.

It works best on grayscale images and helps highlight object boundaries.

Adjust thresholds to balance between detecting real edges and ignoring noise.

Practice

(1/5)
1. What is the main purpose of the Canny edge detection algorithm in computer vision?
easy
A. To resize images without losing quality
B. To colorize black and white images
C. To blur an image for noise reduction
D. To find clear edges in an image by detecting boundaries

Solution

  1. Step 1: Understand the goal of edge detection

    Edge detection aims to find where objects start and end by detecting sharp changes in brightness.
  2. Step 2: Recognize Canny's role

    Canny edge detection specifically finds clear edges by using gradients and thresholds to highlight boundaries.
  3. Final Answer:

    To find clear edges in an image by detecting boundaries -> Option D
  4. Quick Check:

    Edge detection = finding boundaries [OK]
Hint: Edges show object borders clearly in images [OK]
Common Mistakes:
  • Confusing edge detection with image coloring
  • Thinking Canny blurs images
  • Assuming it resizes images
2. Which of the following is the correct way to call the Canny edge detector function in OpenCV (Python)?
easy
A. cv2.Canny(image, threshold1, threshold2)
B. cv2.canny(image, threshold1, threshold2)
C. cv2.Canny(image, threshold2, threshold1)
D. cv2.Canny(image)

Solution

  1. Step 1: Recall OpenCV function naming

    OpenCV functions are case-sensitive; the correct function is Canny with uppercase C.
  2. Step 2: Check required parameters

    The function requires the image and two threshold values in order: low threshold first, then high threshold.
  3. Final Answer:

    cv2.Canny(image, threshold1, threshold2) -> Option A
  4. Quick Check:

    Correct function name and parameter order = A [OK]
Hint: Function names are case-sensitive; check parameter order [OK]
Common Mistakes:
  • Using lowercase 'canny' instead of 'Canny'
  • Swapping threshold1 and threshold2
  • Omitting required threshold parameters
3. Given the following Python code snippet using OpenCV, what will be the shape of the output image after applying Canny edge detection?
import cv2
image = cv2.imread('photo.jpg')
edges = cv2.Canny(image, 100, 200)
print(edges.shape)
medium
A. (height, width)
B. (height, width, 3)
C. (width, height)
D. (height, width, 1)

Solution

  1. Step 1: Understand input image shape

    Original image read by cv2.imread is usually (height, width, 3) for color images.
  2. Step 2: Check output of cv2.Canny

    Canny outputs a single-channel (grayscale) edge map, so shape is (height, width) without color channels.
  3. Final Answer:

    (height, width) -> Option A
  4. Quick Check:

    Canny output is grayscale edges = (height, width) [OK]
Hint: Canny output is single-channel grayscale image [OK]
Common Mistakes:
  • Assuming output keeps 3 color channels
  • Confusing width and height order
  • Expecting a 3D shape for edges
4. You run Canny edge detection with thresholds 50 and 150 but get too many noisy edges. Which fix below correctly reduces noise in the output?
medium
A. Use a color image instead of grayscale
B. Decrease both thresholds to lower values
C. Increase both thresholds to higher values
D. Remove Gaussian blur before Canny

Solution

  1. Step 1: Understand threshold effect on noise

    Lower thresholds detect more edges including noise; higher thresholds reduce noise by ignoring weak edges.
  2. Step 2: Choose correct adjustment

    Increasing thresholds filters out weak noisy edges, improving edge quality.
  3. Final Answer:

    Increase both thresholds to higher values -> Option C
  4. Quick Check:

    Higher thresholds reduce noise in edges [OK]
Hint: Higher thresholds filter out weak noisy edges [OK]
Common Mistakes:
  • Lowering thresholds increases noise
  • Using color images directly confuses Canny
  • Skipping blur preprocessing increases noise
5. You want to detect edges on a noisy grayscale image using Canny. Which sequence of steps will best improve edge detection results?
hard
A. Apply median blur, then Canny with low thresholds, then erode edges
B. Apply Gaussian blur, then Canny with tuned thresholds, then dilate edges
C. Apply Canny directly with default thresholds, then convert to color
D. Resize image larger, then apply Canny with high thresholds, then invert edges

Solution

  1. Step 1: Preprocess noisy image with Gaussian blur

    Gaussian blur smooths noise while preserving edges, improving Canny input.
  2. Step 2: Apply Canny with tuned thresholds

    Adjust thresholds to balance edge detection and noise filtering.
  3. Step 3: Use dilation to strengthen edges

    Dilation thickens edges, making them clearer for further processing.
  4. Final Answer:

    Apply Gaussian blur, then Canny with tuned thresholds, then dilate edges -> Option B
  5. Quick Check:

    Blur + tuned thresholds + dilation = best edge detection [OK]
Hint: Blur first, tune thresholds, then enhance edges [OK]
Common Mistakes:
  • Using low thresholds increases noise
  • Skipping blur causes noisy edges
  • Converting to color after Canny is useless