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