2012-03-06 9 views
2

私はImage Processing – Tint Color (Yet Another) Tutorialに従いましたが、コードの一部を理解できません。私は程度が音色の数に影響を与えるのは1つだけ知っています。それを私に説明してもらえますか?Androidで着色画像を処理する

以下は、私は理解していないコードである:基本的

   int index = y * width + x; 
       int r = (pix[index] >> 16) & 0xff; 
       int g = (pix[index] >> 8) & 0xff; 
       int b = pix[index] & 0xff; 
       RY = (70 * r - 59 * g - 11 * b)/100; 
       GY = (-30 * r + 41 * g - 11 * b)/100; 
       BY = (-30 * r - 59 * g + 89 * b)/100; 
       Y = (30 * r + 59 * g + 11 * b)/100; 
       RYY = (S * BY + C * RY)/256; 
       BYY = (C * BY - S * RY)/256; 
       GYY = (-51 * RYY - 19 * BYY)/100; 

答えて

1

、このコードのビットは、画像内のRBGチャネルのそれぞれの色を変えています。私はそれを1行ずつ打ち破ります。

  int r = (pix[index] >> 16) & 0xff; 
      int g = (pix[index] >> 8) & 0xff; 
      int b = pix[index] & 0xff; 

上記のコードのビットは、ネイティブの赤、青、緑の値を取得します。

  RY = (70 * r - 59 * g - 11 * b)/100; 
      GY = (-30 * r + 41 * g - 11 * b)/100; 
      BY = (-30 * r - 59 * g + 89 * b)/100; 

これらはバック後に供給が、RYは主に青ことにより、ほとんど赤色になり、及びGYは、緑と赤のブレンドであることに注意されます。 1つの重要な特徴は、3つの乗算器すべてが0になり、補正の中立性が維持されることです(画像は明るくなりません)。 GYはコード内の他の場所では使用されていないので、実際には問題ありません。

  Y = (30 * r + 59 * g + 11 * b)/100; 
      RYY = (S * BY + C * RY)/256; 
      BYY = (C * BY - S * RY)/256; 
      GYY = (-51 * RYY - 19 * BYY)/100; 

この場合も、目的の色合い効果を得るために式を適用するだけです。 SとCは、呼び出されたときに関数に渡される角度のSinとCosの値です。色合いは渡された角度の関数です。角度0では、角度が変更されると、画像は通常の色に最も近くなり、赤から青、青から赤、および緑の2つの組み合わせが主に赤に依存するように変化する傾向があります。

+1

本当にありがとうございます> Yoo