如何计算图像的平均值和标准值

时间:2018-07-20 07:54:42

标签: android image tensorflow neural-network mean

我正在创建可与Tensorflow一起使用的Android应用。为了提供图像,我需要按颜色将位图转换为浮点数数组。我发现执行此操作的以下代码:

float[] floatValues = new float[width * height * 3];
int[] intValues = new int[width * height];

bitmap.getPixels(intValues, 0, width, 0, 0, width, height);

for (int i = 0; i < intValues.length; ++i) {
    final int val = intValues[i];
    floatValues[i * 3 + 0] = ((val >> 16) & 0xFF) - imageMean) / imageStd;
    floatValues[i * 3 + 1] = ((val >> 8) & 0xFF) - imageMean) / imageStd;
    floatValues[i * 3 + 2] = (val & 0xFF) - imageMean) / imageStd;
}

我找不到如何计算imageMean或imageStd的方法,所以有人写道我也可以只使用

floatValues[i * 3 + 2] = (val & 0xFF) / 255

(3行中的每行)

但是它给出了错误的结果(与任何输入相同)。 Here我发现它每次都给出0。因此,我需要弄清楚如何计算平均值和标准值。我还听说每种颜色的这些值都不同。

任何帮助都受到赞赏。

P.S。我的图片尺寸为250x250,3个颜色通道。

1 个答案:

答案 0 :(得分:0)

尝试一下:floatValues [i * 3 + 2] =(val&0xFF)/ 255.0f,这是一种归一化。 我还编写了一个可与Tensorflow一起使用的Android应用。您可以参考我的项目:https://github.com/tz28/Chinese-number-gestures-recognition/blob/master/README.en-US.md 希望对您有帮助。