Ejemplo n.º 1
0
 private TiffYCbCrConverter16(TiffRational[] luma, TiffRational[] referenceBlackWhite)
 {
     _expanderY     = new CodingRangeExpander(referenceBlackWhite[0], referenceBlackWhite[1], ushort.MaxValue);
     _expanderCb    = new CodingRangeExpander(referenceBlackWhite[2], referenceBlackWhite[3], ushort.MaxValue / 2);
     _expanderCr    = new CodingRangeExpander(referenceBlackWhite[4], referenceBlackWhite[5], ushort.MaxValue / 2);
     _converterFrom = new YCbCrToRgbConverter(luma[0], luma[1], luma[2]);
 }
Ejemplo n.º 2
0
        public void ConvertToRgba32(ReadOnlySpan <byte> ycbcr, Span <TiffRgba32> destination, int count)
        {
            CodingRangeExpander expanderY  = _expanderY;
            CodingRangeExpander expanderCb = _expanderCb;
            CodingRangeExpander expanderCr = _expanderCr;
            YCbCrToRgbConverter converter  = _converterFrom;

            ref byte       sourceRef      = ref MemoryMarshal.GetReference(ycbcr);
Ejemplo n.º 3
0
        private TiffYCbCrConverter8(TiffRational[] luma, TiffRational[] referenceBlackWhite)
        {
            _expanderY     = new CodingRangeExpander(referenceBlackWhite[0], referenceBlackWhite[1], 255);
            _expanderCb    = new CodingRangeExpander(referenceBlackWhite[2], referenceBlackWhite[3], 127);
            _expanderCr    = new CodingRangeExpander(referenceBlackWhite[4], referenceBlackWhite[5], 127);
            _converterFrom = new YCbCrToRgbConverter(luma[0], luma[1], luma[2]);

            _shrinkerY   = new CodingRangeShrinker(referenceBlackWhite[0], referenceBlackWhite[1], 255);
            _shrinkerCb  = new CodingRangeShrinker(referenceBlackWhite[2], referenceBlackWhite[3], 127);
            _shrinkerCr  = new CodingRangeShrinker(referenceBlackWhite[4], referenceBlackWhite[5], 127);
            _converterTo = new RgbToYCbCrConverter(luma[0], luma[1], luma[2]);
        }
Ejemplo n.º 4
0
        public TiffRgba32 ConvertToRgba32(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);

            TiffRgba32 pixel = default; // TODO: SkipInit

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

            return(pixel);
        }
Ejemplo n.º 5
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]);
        }