當影像中有雜訊時,使用直方圖均衡化來增強對比就會受雜訊的影響,從而影響到整體的結果。應對這個問題,可以考慮使用自適應直方圖均衡化來減少雜訊的影響,並增強對比度。
本文將比較直方圖均衡化與自適應直方圖均衡化的差異性。
[OpenCV基礎][Python]影像增強_直方圖均衡處理
在原圖色彩較鮮艷的地方,灰階在增加後,明顯的對比就較強烈,這樣就會造成這些對比增強過多的輪廓外型的特徵就會相對的比較不清楚,例如下圖右上的位置,柱子一些特徵都消失了。
相對的,自適應直方圖就沒受到雜訊的影響,進而影響到對比的增強
是不是自適應直方圖均衡化表現較為出色呢。
自適應直方圖均衡化 (CLAHE - Contrast Limited Adaptive Histogram Equalization)
自適應直方圖均衡化是一種改進的直方圖均衡化方法,它將影像分為小區域(稱為「塊」或「窗口」),對每個小區域分別進行直方圖均衡化。
為了避免雜訊放大,CLAHE 將對比度限制在一定範圍內。
這種方法有助於避免全局直方圖均衡化放大局部雜訊的問題,特別適合影像中亮度變化劇烈或含有雜訊的情況。
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 讀取影像,轉換為灰度圖
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 創建 CLAHE (限制對比度的門檻值設定為 2.0,塊大小為 8x8)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
# 應用 CLAHE 對影像進行自適應直方圖均衡化
clahe_image = clahe.apply(image)
# 畫出原始影像和自適應均衡化後的影像
plt.figure(figsize=(10, 6))
# 原始影像
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')
# CLAHE 均衡化後的影像
plt.subplot(1, 2, 2)
plt.imshow(clahe_image, cmap='gray')
plt.title('CLAHE Image')
plt.axis('off')
plt.tight_layout()
plt.show()
clipLimit
來限制對比度增強的程度,這樣可以避免雜訊被過度放大。假設今天是要看圖片中狗或者是福興下龍的圖案,若是圖片是曝光的狀態下,直方圖均衡的結果就會比CLAHE來的好。