0

我读过一篇博客Histogram Equalization for Image Enhancement,其中提供了将普通图像转换为 HDR 图像的 7 个步骤(如下)。据说可以使用 Open Computer Vision Library 或 OpenCV 轻松编写用于直方图均衡的 C/C++ 程序。该计划的主要步骤包括:

  1. 读取输入图像。多亏了 OpenCV,这几乎可以是任何图像格式。此输入图像包含n像素:n = height × width

  2. 从 RGB(奇怪地被 OpenCV 以蓝色、绿色、红色的顺序存储)转换为 HSV:色调、饱和度和值。

  3. 计算输入图像的直方图。这是一个 256 值数组,其中H[x]包含具有 value 的像素数x

  4. 计算直方图的累积密度函数。这是一个 256 值数组,其中cdf[x]包含具有值x或更少的像素数: cdf[x] = H[0] + H[1] + H[2] + ... + H[x]

  5. 循环遍历n整个图像中的像素并替换每个i'th 点的值:V[i] <-- floor(255*(cdf[V[i]] - cdf[0])/(n - cdf[0]))

  6. 将图像从 HSV 转换回 RGB。

  7. 以所需的格式和文件名保存图像。

在第 3 步,我不明白H[x]是什么?x是指 R、G、B 还是 H、S 或 V 值?另外,在第 5 步,值的含义是什么i

4

1 回答 1

2

第一个问题:

H(x) 是图像的直方图。

强度水平在 [0, 255] 范围内的数字图像的直方图是离散函数 h(r_k) = n_k,其中 r_k 是第 k 个强度值,n_k 是图像中强度为 r_k 的像素数。

来自:Gonzalez / Woods 的数字图像处理第三版,第 120 页

第二个问题:我是什么?

i 是在图片上循环的变量。

于 2012-06-20T08:22:59.057 回答