예제 #1
0
        public override void AutoAdjust(LightFilter filter, ColorMap <Vector3> map)
        {
            const int maxValue = 1023;
            var       h        = map.GetHistogram(maxValue);

            var wcenter  = h.FindWeightCenter(Vector3.Zero, Vector3.One);
            var wcenterf = (wcenter - filter.MinIn) / (filter.MaxIn - filter.MinIn);
            var contrast = Log(new Vector3(0.5f), wcenterf) + new Vector3(0.5f);

            //f.Contrast = f.Contrast.Average();

            //            h.Transform((index, value, comp) => (int)(1023 * Math.Pow(index / 1023f, _contrast[comp])));

            Vector3 max;
            Vector3 min;

            h.FindMinMax(out min, out max, 0.005f, 0.001f);

            //min = new Vector3(min.MinComponent());
            //max = new Vector3(max.MaxComponent());

            filter.Set(min, max, Vector3.Zero, Vector3.One, contrast);
        }