转换为HSB值后计算直方图均衡

时间:2012-02-21 04:08:35

标签: java image-processing histogram

我正在尝试均衡彩色图像。我被告知将其转换为HSB,然后在亮度通道上执行均衡,然后再将其转换回RGB。

到目前为止,我已计算出频率,但我遇到了比例因子的问题。据我了解,颜色情况下的比例因子通常是图像的255 /(高度*宽度)。任何人都可以帮助在亮度的情况下做什么?感谢。

1 个答案:

答案 0 :(得分:3)

当你说你必须将RGB图像转换为HSB(或HSV)颜色空间以均衡彩色图像时,你是对的。

但是,我不明白比例因子是什么意思,所以我将描述算法:

  1. 将输入图像转换为HSB色彩空间。

  2. 使用B(亮度)通道计算每个像素值的频率。实际上,您正在计算图像的灰度级histogram。如果您的图像具有256个不同的亮度值,则可以将直方图存储在向量H[0..255]中,其中H[i]为您提供第i个亮度值的频率。要计算H[i]计算值为i的像素数,并除以图像中的像素数。如果您对H[i]的所有条目求和,则应获得值1.0

  3. 使用直方图H[i]计算新的向量CDF[i],其中:

    CDF[0] = H[0] and CDF[i] = CDF[i - 1] + H[i].

    实际上,CDF[i]向量会在输入图像上存储cumulative distribution function亮度值。

  4. 最后一步是更新图片的B频道:B'[x,y] = 255 * CDF[B[x,y]]其中B[x,y]是位置(x,y)和B'[x,y]处像素的B值是位置(x,y)处像素的新B值。同样,这假设您的图像具有256个不同的亮度值。