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 Imagedst: Output Imageksize: Kernel Size (width, height) ต้องเป็นค่าคี่และบวก เช่น (3,3), (5,5), (13,13) หากเป็น (0,0) จะคำนวณจาก SigmasigmaX: Standard Deviation แนว XsigmaY: 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

รูปทั้งสองดูคล้ายกันมาก (Blur น้อย)
เพิ่ม Kernel Size เป็น 13x13
dst = cv2.GaussianBlur(src, (13, 13), 0, borderType=cv2.BORDER_DEFAULT)
ผลลัพธ์ Kernel 13x13

ตอนนี้เห็นความแตกต่างชัดเจน: รูปขวา Blur มากขึ้น ขอบคมลดลง
Blur Methods อื่นๆ ใน OpenCV
| Method | Function | ลักษณะ |
|---|---|---|
| Average Blur | cv2.blur(src, ksize) | เฉลี่ยค่า Pixel ใน Kernel |
| Gaussian Blur | cv2.GaussianBlur() | Weighted Average ตาม Gaussian Distribution (สมดุลที่สุด) |
| Median Blur | cv2.medianBlur(src, ksize) | ใช้ Median ดีสำหรับ Salt-and-Pepper Noise |
| Bilateral Filter | cv2.bilateralFilter() | Preserve Edges ขณะ Blur (ช้ากว่า) |