我读过一篇博客Histogram Equalization for Image Enhancement,它提供了将正常图像转换为HDR图像的7个步骤(下图)。 据说可以使用Open Computer Vision Library或OpenCV轻松编写用于直方图均衡的C / C ++程序。这个计划的主要步骤包括:
读取输入图像。由于OpenCV,这可以是大多数图像格式。此输入图像包含n
像素:n = height × width
从RGB转换(由OpenCV以蓝色,绿色,红色的顺序存储)转换为HSV:Hue,Saturation和Value。
计算输入图像的直方图。这是一个256值数组,其中H[x]
包含值为x
的像素数。
计算直方图的累积密度函数。这是一个256值数组,其中cdf[x]
包含值为x
或更少的像素数:
cdf[x] = H[0] + H[1] + H[2] + ... + H[x]
循环遍历整个图片中的n
像素,并替换每个i
点的值: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
的含义是什么?
答案 0 :(得分:2)
第一个问题:
H(x)是图像的直方图。
强度等级在[0,255]范围内的数字图像的直方图是离散函数h(r_k)= n_k,其中r_k是第k个强度值,n_k是图像中具有强度的像素数r_k。
来自:数字图像处理第三版Gonzalez / Woods第120页
第二个问题:我是什么?
我是在图片上循环的变量。