2024-08-15|閱讀時間 ‧ 約 24 分鐘

[OpenCV][Python]局部二值化(Local Thresholding)

局部二值化(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決定如何計算閾值:

  • cv.ADAPTIVE_THRESH_MEAN_C:閾值是鄰近區域的平均值減去常數C。
  • cv.ADAPTIVE_THRESH_GAUSSIAN_C:閾值是鄰域值的高斯加權和減去常數C。

11: 決定鄰域區域的大小

2是從鄰域像素的平均值或加權和中減去的常數



其他篇二值化相關文章

[OpenCV基礎][Python]二值化影像


參考文獻


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.