2010-10-06 79 views
1

可以說我有一個int[][] arrayA和一個int[][] arrayB。在這個數組中的任何給定座標都有一個RGB值。我想要做的是將arrayAarray 2的RGB值合併成一個新的數組,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

什麼是redWeight等於? – Snowman 2010-10-06 06:13:38

+0

@fprime - 我不確定。按照我理解的方式,使用加權平均值的想法似乎不符合您的預期輸出。 – sje397 2010-10-06 06:20:29