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