Exemple #1
0
        /// <summary>
        /// Convert from RGB to YCbCr color space (Rec 601-1 specification).
        /// </summary>
        ///
        /// <param name="rgb">Source color in <b>RGB</b> color space.</param>
        /// <param name="ycbcr">Destination color in <b>YCbCr</b> color space.</param>
        ///
        public static void FromRGB(RGB rgb, YCbCr ycbcr)
        {
            float r = (float)rgb.Red / 255;
            float g = (float)rgb.Green / 255;
            float b = (float)rgb.Blue / 255;

            ycbcr.Y  = (float)(0.2989 * r + 0.5866 * g + 0.1145 * b);
            ycbcr.Cb = (float)(-0.1687 * r - 0.3313 * g + 0.5000 * b);
            ycbcr.Cr = (float)(0.5000 * r - 0.4184 * g - 0.0816 * b);
        }
Exemple #2
0
    /// <summary>
    /// Convert from RGB to YCbCr color space (Rec 601-1 specification). 
    /// </summary>
    /// 
    /// <param name="rgb">Source color in <b>RGB</b> color space.</param>
    /// <param name="ycbcr">Destination color in <b>YCbCr</b> color space.</param>
    /// 
    public static void FromRGB(RGB rgb, YCbCr ycbcr)
    {
      float r = (float)rgb.Red / 255;
      float g = (float)rgb.Green / 255;
      float b = (float)rgb.Blue / 255;

      ycbcr.Y = (float)(0.2989 * r + 0.5866 * g + 0.1145 * b);
      ycbcr.Cb = (float)(-0.1687 * r - 0.3313 * g + 0.5000 * b);
      ycbcr.Cr = (float)(0.5000 * r - 0.4184 * g - 0.0816 * b);
    }
Exemple #3
0
        /// <summary>
        /// Convert from YCbCr to RGB color space.
        /// </summary>
        ///
        /// <param name="ycbcr">Source color in <b>YCbCr</b> color space.</param>
        /// <param name="rgb">Destination color in <b>RGB</b> color spacs.</param>
        ///
        public static void ToRGB(YCbCr ycbcr, RGB rgb)
        {
            // don't warry about zeros. compiler will remove them
            float r = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 0.0000 * ycbcr.Cb + 1.4022 * ycbcr.Cr)));
            float g = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y - 0.3456 * ycbcr.Cb - 0.7145 * ycbcr.Cr)));
            float b = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 1.7710 * ycbcr.Cb + 0.0000 * ycbcr.Cr)));

            rgb.Red   = (byte)(r * 255);
            rgb.Green = (byte)(g * 255);
            rgb.Blue  = (byte)(b * 255);
        }
Exemple #4
0
 /// <summary>
 /// Convert from RGB to YCbCr color space (Rec 601-1 specification).
 /// </summary>
 /// 
 /// <param name="rgb">Source color in <b>RGB</b> color space.</param>
 /// 
 /// <returns>Returns <see cref="YCbCr"/> instance, which represents converted color value.</returns>
 /// 
 public static YCbCr FromRGB(RGB rgb)
 {
   YCbCr ycbcr = new YCbCr();
   FromRGB(rgb, ycbcr);
   return ycbcr;
 }
Exemple #5
0
    /// <summary>
    /// Convert from YCbCr to RGB color space.
    /// </summary>
    /// 
    /// <param name="ycbcr">Source color in <b>YCbCr</b> color space.</param>
    /// <param name="rgb">Destination color in <b>RGB</b> color spacs.</param>
    /// 
    public static void ToRGB(YCbCr ycbcr, RGB rgb)
    {
      // don't warry about zeros. compiler will remove them
      float r = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 0.0000 * ycbcr.Cb + 1.4022 * ycbcr.Cr)));
      float g = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y - 0.3456 * ycbcr.Cb - 0.7145 * ycbcr.Cr)));
      float b = Math.Max(0.0f, Math.Min(1.0f, (float)(ycbcr.Y + 1.7710 * ycbcr.Cb + 0.0000 * ycbcr.Cr)));

      rgb.Red = (byte)(r * 255);
      rgb.Green = (byte)(g * 255);
      rgb.Blue = (byte)(b * 255);
    }