假设我有一个 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 } };
最佳答案
加权平均值通常采用如下方式:
newRed = (curRedA * redWeight + curRedB * (1 - redWeight));
...其中 redWeight
在 [0, 1] 范围内,表示“A”数组中红色值的权重(或偏差)。它还表示“B”数组中红色值的偏差的倒数。
关于java - 数组 RGB 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869810/