コード例 #1
0
        public TiffRgb24 ConvertToRgb24(byte y, byte cb, byte cr)
        {
            CodingRangeExpander expanderY  = _expanderY;
            CodingRangeExpander expanderCb = _expanderCb;
            CodingRangeExpander expanderCr = _expanderCr;
            YCbCrToRgbConverter converter  = _converterFrom;

            float y64  = expanderY.Expand(y);
            float cb64 = expanderCb.Expand(cb);
            float cr64 = expanderCr.Expand(cr);

            TiffRgb24 pixel = default; // TODO: SkipInit

            converter.Convert(y64, cb64, cr64, ref pixel);

            return(pixel);
        }
コード例 #2
0
        public YCbCrConverter(Rational[] referenceBlackAndWhite, Rational[] coefficients)
        {
            referenceBlackAndWhite ??= DefaultReferenceBlackWhite;
            coefficients ??= DefaultLuma;

            if (referenceBlackAndWhite.Length != 6)
            {
                TiffThrowHelper.ThrowImageFormatException("reference black and white array should have 6 entry's");
            }

            if (coefficients.Length != 3)
            {
                TiffThrowHelper.ThrowImageFormatException("luma coefficients array should have 6 entry's");
            }

            this.yExpander  = new CodingRangeExpander(referenceBlackAndWhite[0], referenceBlackAndWhite[1], 255);
            this.cbExpander = new CodingRangeExpander(referenceBlackAndWhite[2], referenceBlackAndWhite[3], 127);
            this.crExpander = new CodingRangeExpander(referenceBlackAndWhite[4], referenceBlackAndWhite[5], 127);
            this.converter  = new YCbCrToRgbConverter(coefficients[0], coefficients[1], coefficients[2]);
        }
 public void Rgb_ConvertToYCbCrAndBack_SameResult()
 {
     var rgb    = new RgbPixel(50, 150, 255);
     var yCbCr  = RgbToYCbCrConverter.Convert(rgb);
     var newRgb = YCbCrToRgbConverter.Convert(yCbCr);
 }