Bird
Raised Fist0
Computer Visionml~20 mins

Blurring and smoothing (Gaussian, median, bilateral) in Computer Vision - ML Experiment: Train & Evaluate

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
Experiment - Blurring and smoothing (Gaussian, median, bilateral)
Problem:You want to reduce noise in images using blurring techniques. Currently, you apply Gaussian blur but notice that edges become too soft and important details are lost.
Current Metrics:Visual quality: Noise reduced but edges are blurry and details lost.
Issue:The Gaussian blur smooths the entire image uniformly, causing loss of sharp edges and details.
Your Task
Improve image smoothing to reduce noise while preserving edges better than Gaussian blur alone.
Use only Gaussian, median, and bilateral blurring methods.
Do not use any deep learning or complex denoising algorithms.
Process the same input image for fair comparison.
Hint 1
Hint 2
Hint 3
Solution
Computer Vision
import cv2
import numpy as np
from matplotlib import pyplot as plt

# Load noisy image
image = cv2.imread('noisy_image.jpg')
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Apply Gaussian blur
gaussian = cv2.GaussianBlur(image_rgb, (7,7), 1.5)

# Apply Median blur
median = cv2.medianBlur(image_rgb, 7)

# Apply Bilateral filter
bilateral = cv2.bilateralFilter(image_rgb, d=9, sigmaColor=75, sigmaSpace=75)

# Plot results
plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.title('Original')
plt.imshow(image_rgb)
plt.axis('off')

plt.subplot(2,2,2)
plt.title('Gaussian Blur')
plt.imshow(gaussian)
plt.axis('off')

plt.subplot(2,2,3)
plt.title('Median Blur')
plt.imshow(median)
plt.axis('off')

plt.subplot(2,2,4)
plt.title('Bilateral Filter')
plt.imshow(bilateral)
plt.axis('off')

plt.tight_layout()
plt.show()
Added median blur which replaces each pixel with the median of neighboring pixels, preserving edges better than Gaussian.
Added bilateral filter which smooths flat regions but keeps edges sharp by considering pixel intensity differences.
Compared all three methods visually on the same noisy image.
Results Interpretation

Before: Gaussian blur reduces noise but blurs edges and details.

After: Median blur removes noise and preserves edges better. Bilateral filter smooths noise while keeping edges sharpest among the three.

Different blurring methods affect images differently. Median and bilateral filters are better for noise removal when edge preservation is important.
Bonus Experiment
Try combining bilateral filter with a small Gaussian blur to see if noise can be reduced further without losing edges.
💡 Hint
Apply bilateral filter first, then a light Gaussian blur, and compare results visually.

Practice

(1/5)
1. Which filter is best for removing salt-and-pepper noise while preserving edges in an image?
easy
A. Bilateral filter
B. Median filter
C. Gaussian filter
D. Box filter

Solution

  1. Step 1: Understand salt-and-pepper noise characteristics

    Salt-and-pepper noise appears as random black and white pixels, which median filters handle well by replacing each pixel with the median of neighbors.
  2. Step 2: Compare filters for edge preservation

    Median filters remove noise without blurring edges, unlike Gaussian filters which blur edges, and bilateral filters which are more complex but less effective for salt-and-pepper noise.
  3. Final Answer:

    Median filter -> Option B
  4. Quick Check:

    Salt-and-pepper noise = Median filter [OK]
Hint: Median filter excels at salt-and-pepper noise removal [OK]
Common Mistakes:
  • Choosing Gaussian filter which blurs edges
  • Confusing bilateral filter with median filter
  • Using box filter which blurs noise and edges
2. Which of the following is the correct OpenCV function call to apply a Gaussian blur with a 5x5 kernel on an image stored in img?
easy
A. cv2.GaussianBlur(img, (5,5), 0)
B. cv2.medianBlur(img, 5)
C. cv2.blur(img, (5,5))
D. cv2.bilateralFilter(img, 5, 75, 75)

Solution

  1. Step 1: Identify Gaussian blur function syntax

    OpenCV's GaussianBlur requires the image, kernel size as a tuple, and sigma (0 means auto).
  2. Step 2: Match options to syntax

    cv2.GaussianBlur(img, (5,5), 0) matches the correct function and parameters for Gaussian blur with 5x5 kernel.
  3. Final Answer:

    cv2.GaussianBlur(img, (5,5), 0) -> Option A
  4. Quick Check:

    Gaussian blur syntax = cv2.GaussianBlur(img, (5,5), 0) [OK]
Hint: GaussianBlur uses tuple kernel size and sigma parameter [OK]
Common Mistakes:
  • Using medianBlur for Gaussian blur
  • Passing kernel size as single integer instead of tuple
  • Confusing bilateralFilter parameters
3. What will be the effect of applying a bilateral filter with parameters d=9, sigmaColor=75, sigmaSpace=75 on a noisy image?
medium
A. Sharpens edges and increases noise
B. Blurs the entire image uniformly
C. Removes only salt-and-pepper noise
D. Smooths noise while preserving edges

Solution

  1. Step 1: Understand bilateral filter parameters

    d controls neighborhood size; sigmaColor controls color similarity; sigmaSpace controls spatial closeness. Together they smooth noise but keep edges sharp.
  2. Step 2: Analyze filter effect on noisy image

    Bilateral filter smooths noise while preserving edges, unlike Gaussian which blurs edges or median which targets salt-and-pepper noise.
  3. Final Answer:

    Smooths noise while preserving edges -> Option D
  4. Quick Check:

    Bilateral filter = noise smoothing + edge preservation [OK]
Hint: Bilateral filter smooths noise but keeps edges sharp [OK]
Common Mistakes:
  • Thinking bilateral filter blurs edges
  • Confusing bilateral with median filter
  • Assuming it only removes salt-and-pepper noise
4. You applied a median filter with kernel size 3 on an image but the noise is still visible. What is the likely mistake?
medium
A. Median filter does not remove noise
B. Kernel size must be even number
C. Kernel size is too small to remove noise effectively
D. Median filter blurs edges too much

Solution

  1. Step 1: Understand median filter kernel size effect

    Small kernel sizes may not cover enough pixels to remove noise effectively.
  2. Step 2: Identify correct kernel size usage

    Median filter kernels must be odd-sized and larger kernels remove more noise but may blur details.
  3. Final Answer:

    Kernel size is too small to remove noise effectively -> Option C
  4. Quick Check:

    Increase kernel size for better noise removal [OK]
Hint: Use larger odd kernel sizes for stronger noise removal [OK]
Common Mistakes:
  • Using even kernel sizes (invalid)
  • Expecting median filter to blur edges heavily
  • Thinking median filter can't remove noise
5. You want to denoise a photo with both Gaussian noise and preserve sharp edges of objects. Which sequence of filters should you apply for best results?
hard
A. Apply Gaussian blur first, then bilateral filter
B. Apply median filter first, then Gaussian blur
C. Apply bilateral filter first, then median filter
D. Apply median filter only

Solution

  1. Step 1: Understand noise types and filter strengths

    Gaussian noise is best reduced by Gaussian blur; bilateral filter preserves edges while smoothing remaining noise.
  2. Step 2: Determine filter order for best effect

    Applying Gaussian blur first reduces Gaussian noise; then bilateral filter smooths while preserving edges, improving overall quality.
  3. Final Answer:

    Apply Gaussian blur first, then bilateral filter -> Option A
  4. Quick Check:

    Gaussian blur + bilateral filter = noise reduction + edge preservation [OK]
Hint: Use Gaussian blur then bilateral filter for noise + edges [OK]
Common Mistakes:
  • Applying median filter first which doesn't target Gaussian noise well
  • Using only one filter for mixed noise
  • Applying bilateral filter before Gaussian blur