Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

OpenCV Python Program: Blur รูปภาพ (Gaussian Blur)

OpenCV เป็นหนึ่งในไลบรารี่ที่ดีที่สุดสำหรับ Image Processing ใน Python รูปภาพมักมี Noise จากแหล่งที่มา (Camera Sensor) OpenCV มีเทคนิค Image Smoothing หรือ Blurring หลายแบบ หนึ่งในวิธีทั่วไปคือใช้ Gaussian Filter ขอบคมจะถูดลับในขณะที่ลด Blurring เกินไป

Syntax

cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

Parameters:

  • src: Input Image
  • dst: Output Image
  • ksize: Kernel Size (width, height) ต้องเป็นค่าคี่และบวก เช่น (3,3), (5,5), (13,13) หากเป็น (0,0) จะคำนวณจาก Sigma
  • sigmaX: Standard Deviation แนว X
  • sigmaY: Standard Deviation แนว Y (Default = sigmaX)
  • borderType: Border Mode เช่น cv2.BORDER_DEFAULT, cv2.BORDER_REPLICATE, cv2.BORDER_REFLECT

ตัวอย่างโค้ด

import cv2
import numpy as np

# อ่านรูป
src = cv2.imread('LionKing.jpeg', cv2.IMREAD_UNCHANGED)

# Gaussian Blur Kernel 3x3
dst = cv2.GaussianBlur(src, (3, 3), 0, borderType=cv2.BORDER_DEFAULT)

# แสดงรูปต้นฉบับและ Blur ติดกัน
cv2.imshow("Gaussian Blur", np.hstack((src, dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

ผลลัพธ์ Kernel 3x3

OpenCV Python Program: Blur รูปภาพ (Gaussian Blur)

รูปทั้งสองดูคล้ายกันมาก (Blur น้อย)

เพิ่ม Kernel Size เป็น 13x13

dst = cv2.GaussianBlur(src, (13, 13), 0, borderType=cv2.BORDER_DEFAULT)

ผลลัพธ์ Kernel 13x13

OpenCV Python Program: Blur รูปภาพ (Gaussian Blur)

ตอนนี้เห็นความแตกต่างชัดเจน: รูปขวา Blur มากขึ้น ขอบคมลดลง

Blur Methods อื่นๆ ใน OpenCV

MethodFunctionลักษณะ
Average Blurcv2.blur(src, ksize)เฉลี่ยค่า Pixel ใน Kernel
Gaussian Blurcv2.GaussianBlur()Weighted Average ตาม Gaussian Distribution (สมดุลที่สุด)
Median Blurcv2.medianBlur(src, ksize)ใช้ Median ดีสำหรับ Salt-and-Pepper Noise
Bilateral Filtercv2.bilateralFilter()Preserve Edges ขณะ Blur (ช้ากว่า)