我有两个相同场景的bmp文件,我想确定一个是否比另一个更亮。 同样地,我有一组具有不同对比度的bmps和另一组具有不同饱和度的bmps。 如何比较这些图像的亮度,对比度和饱和度?这些测试图像由传感器制造商提供的工具保存。 我正在使用gcc 4.5。
答案 0 :(得分:2)
要比较两个图像的亮度,需要比较像素的灰度值(是,逐个)。在RGB颜色空间中,亮度(灰度值)是R,G和B的平均值,因此您有brightness = (R+G+B) / 3
比较对比度,特别是饱和度将证明并不那么容易,首先你可以看一下HSL and HSV,但总的来说我建议你买一本关于图像处理主题的好书。
答案 1 :(得分:1)
(R + G + B)/ 3的答案实际上甚至不是亮度的近似值(至少从我们今天所知的情况来看)!
<强> [亮度] 强> 你真正应该做的是转换为另一个色标,并使用包含亮度的色标的那个通道比较亮度。看这里!!!
Formula to determine brightness of RGB color
这里有一个很好的答案,谈论转换或RGB到亮度等...
<强> [对比度] 强> 对比度是在整个可能像素值范围内像素值的扩展的函数。通过将所有像素的直方图(其中x轴表示像素值,y轴表示该值的多少像素)放在一起来理解对比度,并分析直方图以了解是否存在良好的分布整个范围,或不。比较对比可以通过多种方式进行,但可能是一个很好的起点,可以找到每个图像的像素值中心点(直方图数据的平均值),也可能是一些直方图宽度参数(可以说宽度约为中心点并且足够大以包含所有像素的90%),并比较两个图像的中心和宽度参数。这只是一个起点。
<强> [饱和度] 强> 要比较饱和度,可以将图像转换为HSL颜色空间。 HSL中的S代表饱和度。比较此色彩空间内的饱和度就像比较上面概述的亮度一样!!!