我的任务是开发一个应用程序来测量图像中颜色的强度。我正在研究如何去做。
强度是指色调的纯度。强度也称为色度或饱和度。色调的最高强度或纯度是它出现在光谱或色轮上的色调。 来源
图像将是 RGB,但我可以将其转换为 HSV 或任何其他颜色空间。
我不是在要求代码,而只是关于如何做到这一点的高级步骤。
我正在考虑为 Java 使用 OpenCV 库。
我的任务是开发一个应用程序来测量图像中颜色的强度。我正在研究如何去做。
强度是指色调的纯度。强度也称为色度或饱和度。色调的最高强度或纯度是它出现在光谱或色轮上的色调。 来源
图像将是 RGB,但我可以将其转换为 HSV 或任何其他颜色空间。
我不是在要求代码,而只是关于如何做到这一点的高级步骤。
我正在考虑为 Java 使用 OpenCV 库。
如果透明度为 1,强度是 RGB 值的幅度,因此您可以通过 rgb 值的总和获得亮度,1,1,1 是白色。0,0,0 为黑色。平均整个图像,你就有了它的强度。
它也是 HSV 的 V 值,所以你可以使用 rgb 或 hsv,映射每个像素的平均 v,你也有它的强度。
我认为对于相同的数字级别,蓝色、绿色和红色在眼睛看来是相同的亮度,但是如果眼睛以非线性方式感知到强度差异很小的三者,您可能会得到一些学术研究并绘制图表它的心理强度值取决于颜色。
您可以在此处找到从 RGB 空间到 HSV 的映射: https ://math.stackexchange.com/questions/556341/rgb-to-hsv-color-conversion-algorithm
其他空间可以参考视觉建模教材,即:Digital video quality, Stefan Winkler
感知到的色调和饱和度是另一回事。您不会发现检查 HSV 的组件那么容易。
首先是屏幕颜色传输输出的明显(通常不可观察)因素和您所在房间的环境(点亮的灯?中午?)。
其次,您可以观察到的上下文,即图像的上下文。可以模拟低级到中级的视觉机制来尝试估计感知色调。这也可以一直到高级别的,例如:相同的像素颜色红色可以出现在具有镜面反射的草莓上,就像在谋杀现场中发现的那样...... 是不是很诡异?!