局部二值化(Local Thresholding)是一種影像處理技術,用來根據局部區域的像素值動態地將影像轉換為二值影像。這在處理光照不均勻的影像時特別有用。
與常見的兩種二值化(Otsu's
與固定閥值
)方法做比較。
import cv2
import numpy as np
# 讀取灰階影像
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 使用高斯濾波來去除噪聲
blurred = cv2.GaussianBlur(image, (5, 5), 0)
# 使用局部二值化 (Adaptive Thresholding)
thresh = cv2.adaptiveThreshold(
blurred,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
11,
2
)
# 顯示結果
cv2.imshow('Original Image', image)
cv2.imshow('Adaptive Threshold', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.adaptiveThreshold
:blurred
: 需要進行二值化的影像。
255
: 二值化後白色部分的值。
AdaptiveMethod決定如何計算閾值:
11
: 決定鄰域區域的大小
2
是從鄰域像素的平均值或加權和中減去的常數