假设我有int[][] arrayA
和int[][] arrayB
。在该数组中的任何给定坐标处都存在RGB值。我想要做的是使用加权平均方法将arrayA
和array
2中的RGB值合并到一个新数组newArray
中。
所以我正在做的是从每个RGB值中提取红色,绿色和蓝色值,如下所示:
curColA=RGB //suppose RGB is just the RGB in any given point
int curRedA = (curCol >> 16) & 0xFF;
int curGreenA = (curCol >> 8) & 0xFF;
int curBlueA= curCol & 0xFF;
我对arrayB也这样做,现在我想合并它们。这是我遇到麻烦的地方。我只是做newRed=(curRedA+curRedB)/2
还是有其他方法可以做到这一点?
arrayA values: { { 0, 0x44, 0x5500, 0x660000 } };
arrayB values: { { 2, 4, 6, 8 } };
newArray expected values: { 0, 0x44, 6, 0x660000 } };
答案 0 :(得分:1)
加权平均值通常是这样的:
newRed = (curRedA * redWeight + curRedB * (1 - redWeight));
...其中redWeight
在[0,1]范围内,并表示'A'数组中朝向红色值的权重(或偏差)。它还表示偏向“B”阵列中红色值的反转。