Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python OpenCV làm mờ ảnh (Gaussian Blur)

OpenCV (cv2) là thư viện xử lý ảnh mạnh. Gaussian Blur làm mượt ảnh, giảm nhiễu, giữ cạnh tốt hơn blur trung bình.

Cú pháp cv2.GaussianBlur()

dst = cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])
  • src: Ảnh đầu vào.
  • ksize: Kích thước kernel (width, height) - phải là số lẻ dương (3,3), (5,5), (7,7)...
  • sigmaX: Độ lệch chuẩn theo trục X. Nếu 0, tính từ ksize.
  • sigmaY: Độ lệch chuẩn theo trục Y. Mặc định = sigmaX.
  • borderType: Xử lý biên (mặc định BORDER_DEFAULT).

Ví dụ cơ bản

import cv2
import numpy as np

src = cv2.imread('LionKing.jpeg', cv2.IMREAD_UNCHANGED)

# Kernel 3x3
dst = cv2.GaussianBlur(src, (3, 3), cv2.BORDER_DEFAULT)

# Hiển thị song song
cv2.imshow("Gaussian Blur", np.hstack((src, dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

Kết quả so sánh kernel size

KernelHiệu ứng
(3, 3)Làm mượt nhẹ, giữ chi tiết
(13, 13)Mờ rõ rệt, mất chi tiết nhỏ
(31, 31)Rất mờ, gần như khối màu

Chương trình Python OpenCV làm mờ ảnh (Gaussian Blur)

Các phương pháp blur khác trong OpenCV

HàmĐặc điểm
cv2.blur() / cv2.boxFilter()Average blur (box filter) - nhanh, nhưng tạo artifact vuông
cv2.GaussianBlur()Gaussian kernel - tự nhiên, giữ cạnh tốt
cv2.medianBlur()Median filter - tốt cho noise "salt & pepper"
cv2.bilateralFilter()Bilateral - giữ cạnh cực tốt, chậm hơn

Ví dụ so sánh nhiều loại blur

import cv2
import numpy as np

img = cv2.imread('noisy_image.jpg')

avg = cv2.blur(img, (5, 5))
gauss = cv2.GaussianBlur(img, (5, 5), 0)
median = cv2.medianBlur(img, 5)
bilateral = cv2.bilateralFilter(img, 9, 75, 75)

cv2.imshow('Original', img)
cv2.imshow('Average', avg)
cv2.imshow('Gaussian', gauss)
cv2.imshow('Median', median)
cv2.imshow('Bilateral', bilateral)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ứng dụng thực tế

  • Tiền xử lý trước edge detection (Canny), threshold.
  • Giảm noise sensor camera.
  • Tạo hiệu ứng depth of field (blur background).
  • Anonymize khuôn mặt/biển số (kết hợp detect + blur ROI).