OpenCV 直方圖均衡

Ammar Ali 2022年5月17日
OpenCV 直方圖均衡

本教程將討論使用 OpenCV 的 equalizeHist() 函式查詢彩色影象的直方圖均衡。

使用 OpenCV 的 equalizeHist() 函式查詢彩色影象的直方圖均衡化

直方圖均衡用於增加影象的強度級別或對比度。直方圖均衡將使亮區更亮,暗區更暗。

灰度影象僅包含亮度值,因此我們可以直接將其傳遞給 equalizeHist() 函式以查詢影象的直方圖均衡化。

彩色影象大多在 RGB 顏色空間中,代表紅、綠、藍顏色的強度值,而不是亮度值。

所以我們不能直接在 equalizeHist() 函式中傳遞彩色影象來找到影象的直方圖均衡化。

我們必須將影象轉換為另一個顏色空間,其中有一個單獨的亮度值通道,如 HSVYCbCrYUV

改變影象的顏色空間後,我們可以通過 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 通道的直方圖均衡化。

我們還可以使用 HSVYCbCr 顏色空間來查詢直方圖均衡化。

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - OpenCV Image