用于区分给定像素的颜色变化和亮度变化的算法

时间:2016-12-08 16:26:12

标签: android opencv

我在Android应用中使用OpenCV读取像素值,并确定该特定像素的屏幕上是否有新对象。现在,当我读取像素值时,如果帧中有新对象或者帧的整体亮度增加或减少,则RGB值可能不同。有人可以建议我一些可以用来区分它们的技术吗?

目前我比较RGB值的差异,如果R值增加或减少了更多的蓝色和绿色等等。这只是60-70%的准确度。

2 个答案:

答案 0 :(得分:0)

Color类有一个名为colorToHSV的静态方法,它将执行RGB - > HSV转换。 HSV是色调/饱和度/值,其中值是亮度的另一个术语。

签名是:public static void colorToHSV (int color, float[] hsv)

此处hsv[2]将是您要寻找的亮度值。

答案 1 :(得分:0)

我建议在图像上使用cvtcolor并将RGB图像转换为Lab / Luv / HSV。我以前曾经做过类似的项目,为了使它更精确(准确度达到93%),我们将所有可能的颜色保存到图像中并训练了分类器(SVM,NN等等;它们都很容易在OpenCV中实现)与“groundtruth”和我们使用Luv色彩空间。我知道你不想纠正这个改变。我只是提到它,因为我们用Luv获得了最高的准确度(超过了HSV和实验室)。 See here确保根据OpenCV将RGB转换为Lab而不是this,因为它不相同。 希望它有所帮助。