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