2010-10-06 3 views
1

Допустим, у меня есть int[][] arrayA и int[][] arrayB. В любой заданной координате в этом массиве находится значение RGB. То, что я хочу сделать, - объединить значения RGB от arrayA и array 2 в новый массив, newArray, используя средневзвешенный метод.Массив RGB манипуляции

Так что я делаю извлечения красного, зеленого и синего значения из каждого значения 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 } }; 

ответ

1

средневзвешенное обычно делается что-то вроде:

newRed = (curRedA * redWeight + curRedB * (1 - redWeight)); 

... где redWeight находится в диапазоне [0, 1], и представляет собой массу (или смещение) в сторону красного значения в массиве «A». Он также представляет собой инверсию смещения к красным значениям в массиве «B».

+0

И что красный вес равен? – Snowman

+0

@fprime - Я не уверен. Идея использования средневзвешенного значения, похоже, не соответствует вашему ожидаемому результату, как я его понимаю. – sje397

Смежные вопросы