我读过一篇博客Histogram Equalization for Image Enhancement,其中提供了将普通图像转换为 HDR 图像的 7 个步骤(如下)。据说可以使用 Open Computer Vision Library 或 OpenCV 轻松编写用于直方图均衡的 C/C++ 程序。该计划的主要步骤包括:
读取输入图像。多亏了 OpenCV,这几乎可以是任何图像格式。此输入图像包含
n
像素:n = height × width
从 RGB(奇怪地被 OpenCV 以蓝色、绿色、红色的顺序存储)转换为 HSV:色调、饱和度和值。
计算输入图像的直方图。这是一个 256 值数组,其中
H[x]
包含具有 value 的像素数x
。计算直方图的累积密度函数。这是一个 256 值数组,其中
cdf[x]
包含具有值x
或更少的像素数:cdf[x] = H[0] + H[1] + H[2] + ... + H[x]
循环遍历
n
整个图像中的像素并替换每个i
'th 点的值:V[i] <-- floor(255*(cdf[V[i]] - cdf[0])/(n - cdf[0]))
将图像从 HSV 转换回 RGB。
以所需的格式和文件名保存图像。
在第 3 步,我不明白H[x]
是什么?x
是指 R、G、B 还是 H、S 或 V 值?另外,在第 5 步,值的含义是什么i
?