OpenCV 直方圖均衡
Ammar Ali
2022年5月17日
本教程將討論使用 OpenCV 的 equalizeHist()
函式查詢彩色影象的直方圖均衡。
使用 OpenCV 的 equalizeHist()
函式查詢彩色影象的直方圖均衡化
直方圖均衡用於增加影象的強度級別或對比度。直方圖均衡將使亮區更亮,暗區更暗。
灰度影象僅包含亮度值,因此我們可以直接將其傳遞給 equalizeHist()
函式以查詢影象的直方圖均衡化。
彩色影象大多在 RGB 顏色空間中,代表紅、綠、藍顏色的強度值,而不是亮度值。
所以我們不能直接在 equalizeHist()
函式中傳遞彩色影象來找到影象的直方圖均衡化。
我們必須將影象轉換為另一個顏色空間,其中有一個單獨的亮度值通道,如 HSV
、YCbCr
和 YUV
。
改變影象的顏色空間後,我們可以通過 equalizeHist()
函式中包含亮度值的通道來查詢給定影象的直方圖均衡化。
為了得到想要的結果,我們必須用 equalizeHist()
函式的輸出替換亮度值通道。之後,我們可以將影象轉換回原始色彩空間。
我們可以使用 OpenCV 的 cvtColor()
函式更改影象的顏色空間。
例如,讓我們找到彩色影象的直方圖均衡化。
請參閱下面的程式碼。
import cv2
import numpy as np
img = cv2.imread('test.png')
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
img_output = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)
cv2.imshow('input image', img)
cv2.imshow('output Image', img_output)
cv2.waitKey(0)
輸出:
在上面的程式碼中,我們只找到了 YUV 顏色空間影象的 Y 通道的直方圖均衡化。
我們還可以使用 HSV
和 YCbCr
顏色空間來查詢直方圖均衡化。
Author: Ammar Ali