2010-10-06 5 views
1

Disons que j'ai un int[][] arrayA et un int[][] arrayB. À n'importe quelle coordonnée donnée dans ce tableau se trouve une valeur RVB. Ce que je veux faire est de fusionner les valeurs RVB de arrayA et array 2 dans un nouveau tableau, newArray, en utilisant une méthode de moyenne pondérée.Array RGB manipulation

donc ce que je fais est d'extraire les valeurs de rouge, vert et bleu de chaque valeur RGB comme ceci:

 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; 

Je fais la même chose pour arrayB, et maintenant je veux les fusionner. Voici où j'ai des problèmes. Est-ce que je fais juste newRed=(curRedA+curRedB)/2 ou est-ce qu'il y a une autre manière de faire ceci?

arrayA values: { { 0, 0x44, 0x5500, 0x660000 } }; 
arrayB values: { { 2, 4, 6, 8 } }; 
newArray expected values: { 0, 0x44, 6, 0x660000 } }; 

Répondre

1

A pondérée moyenne se fait habituellement quelque chose comme:

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

... où redWeight est dans l'intervalle [0, 1], et représente le poids (ou polarisation) vers le rouge valeurs dans le tableau 'A'. Il représente également l'inverse du biais vers les valeurs rouges dans le tableau 'B'.

+0

Et qu'est-ce que redWeight est égal à? – Snowman

+0

@fprime - Je ne suis pas sûr. L'idée d'utiliser une moyenne pondérée ne semble pas correspondre à votre rendement attendu, comme je le comprends. – sje397