Edge detection helps find the borders of objects in images. It makes it easier to see shapes and details.
To find the outline of objects in a photo.
To detect changes in texture or color in an image.
To prepare images for counting or measuring objects.
To highlight important features in medical images.
To improve image recognition in computer vision tasks.
Syntax
MATLAB
BW = edge(I, method)
% I is the input image (grayscale or RGB).
% method is the edge detection technique, like 'Sobel', 'Canny', 'Prewitt', 'Roberts', or'Log'.
% BW is the output binary image showing edges.
The input image I should be grayscale for best results.
The output BW is a logical matrix where edges are marked as true (1).
Examples
Detect edges using the Sobel method, which finds edges by looking at gradients.
MATLAB
BW = edge(I, 'Sobel')
Use the Canny method for more precise edge detection with noise reduction.
MATLAB
BW = edge(I, 'Canny')
Detect edges using the Prewitt method, similar to Sobel but simpler.
MATLAB
BW = edge(I, 'Prewitt')
Sample Program
This program loads a grayscale image, detects edges using the Canny method, and shows both the original and edge images side by side.
MATLAB
% Read a sample image
I = imread('cameraman.tif');
% Detect edges using the Canny method
BW = edge(I, 'Canny');
% Show original and edge images side by side
figure;
subplot(1,2,1); imshow(I); title('Original Image');
subplot(1,2,2); imshow(BW); title('Edges Detected (Canny)');
OutputSuccess
Important Notes
Edge detection works best on clear images with good contrast.
Try different methods to see which detects edges best for your image.
Edge detection results are binary images highlighting where edges are found.
Summary
Edge detection finds object borders in images.
Use the edge function with different methods like 'Sobel' or 'Canny'.
Visualize edges to understand image structure better.
Practice
(1/5)
1. What is the primary purpose of the edge function in MATLAB?
easy
A. To detect boundaries or edges in images
B. To convert images from color to grayscale
C. To increase the brightness of an image
D. To resize images to a smaller dimension
Solution
Step 1: Understand the function's role
The edge function is designed to find edges or boundaries in images, which helps highlight shapes.
Step 2: Compare with other options
Options A, B, and C describe different image processing tasks, not edge detection.
Final Answer:
To detect boundaries or edges in images -> Option A
Quick Check:
Edge detection = detect boundaries [OK]
Hint: Edge function finds boundaries in images fast [OK]
Common Mistakes:
Confusing edge detection with color conversion
Thinking edge increases brightness
Mixing edge detection with resizing
2. Which of the following is the correct syntax to detect edges using the Sobel method on a grayscale image I in MATLAB?
easy
A. edges = edge(I, Sobel);
B. edges = edge('Sobel', I);
C. edges = edge(I, 'Sobel');
D. edges = edge(I, "sobel");
Solution
Step 1: Recall the edge function syntax
The correct syntax is edge(image, 'method'), where method is a string like 'Sobel'.
Step 2: Check each option
edges = edge(I, 'Sobel'); matches the correct syntax. edges = edge('Sobel', I); reverses arguments. edges = edge(I, Sobel); misses quotes around 'Sobel'. edges = edge(I, "sobel"); uses double quotes which MATLAB does not accept for method names.
Final Answer:
edges = edge(I, 'Sobel'); -> Option C
Quick Check:
edge(image, 'method') syntax [OK]
Hint: Use single quotes for method names in edge function [OK]
Common Mistakes:
Swapping argument order
Omitting quotes around method
Using double quotes instead of single quotes
3. Given the code below, what will be the size of the output variable BW?
I = imread('cameraman.tif');
BW = edge(I, 'Canny');
medium
A. Smaller size than I, numeric matrix
B. Larger size than I, logical matrix
C. Same size as I, numeric matrix
D. Same size as I, logical matrix
Solution
Step 1: Understand input and output of edge function
The input I is a grayscale image matrix. The edge function returns a logical matrix of the same size indicating edge pixels.
Step 2: Confirm output type and size
The output BW is a logical matrix with the same dimensions as I, marking edges as true.
Final Answer:
Same size as I, logical matrix -> Option D
Quick Check:
edge output = logical matrix same size [OK]
Hint: Edge output matches input size, logical type [OK]
Common Mistakes:
Expecting numeric instead of logical output
Assuming output size changes
Confusing output type with input type
4. Identify the error in the following MATLAB code for edge detection:
A. The image must be converted to grayscale before edge detection
B. The 'Canny' method is not supported for color images
C. imshow cannot display logical images
D. imread cannot read PNG images
Solution
Step 1: Check input image type for edge function
The edge function requires a grayscale image. Here, RGB is a color image.
Step 2: Identify missing conversion
Before calling edge, the image should be converted using rgb2gray. Options B, C, and D are incorrect because 'Canny' works on grayscale, imshow can display logical images, and imread supports PNG.
Final Answer:
The image must be converted to grayscale before edge detection -> Option A
Quick Check:
Convert color to grayscale before edge [OK]
Hint: Always convert RGB to grayscale before edge detection [OK]
Common Mistakes:
Skipping rgb2gray conversion
Assuming edge works on color images
Misunderstanding imshow capabilities
5. You want to detect edges in a noisy grayscale image I using MATLAB. Which approach will best reduce noise impact while detecting edges?
hard
A. Directly use edge(I, 'Sobel') without preprocessing
B. Apply Gaussian smoothing with imgaussfilt before using edge(I, 'Canny')
C. Convert image to binary using imbinarize before edge detection
D. Use edge(I, 'Prewitt') with default parameters
Solution
Step 1: Understand noise effect on edge detection
Noisy images cause false edges. Smoothing reduces noise before edge detection.
Step 2: Evaluate options for noise reduction
Apply Gaussian smoothing with imgaussfilt before using edge(I, 'Canny') applies Gaussian smoothing which blurs noise, improving edge detection with Canny. Options B, C, and D do not reduce noise effectively before edge detection.
Final Answer:
Apply Gaussian smoothing with imgaussfilt before using edge(I, 'Canny') -> Option B
Quick Check:
Smooth noisy image before edge detection [OK]
Hint: Smooth noisy images before edge detection [OK]
Common Mistakes:
Skipping noise reduction step
Using edge detection directly on noisy images
Confusing binarization with noise removal
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.