Example #1
0
        /// <summary>
        /// Perform a morph of the data
        /// </summary>
        /// <returns>The bitmap morphed</returns>
        public Bitmap Morph()
        {
            mDef[2, 2].X /= 1.021f;
            mDef[2, 2].Y /= 1.021f;
            mDef[2, 3].X /= 1.021f;
            mDef[2, 3].Y /= 1.021f;
            mDef[3, 2].X /= 1.021f;


            Bitmap bmpret = new Bitmap(src.Width, src.Height);

            int wi = src.Width;
            int he = src.Height;

            float xinc = (float)mDef.GetUpperBound(1) / wi;
            float yinc = (float)mDef.GetUpperBound(0) / he;

            float y = 0.0f;

            for (int j = 0; j < src.Height; j++)
            {
                float x = 0.0f;
                for (int i = 0; i < src.Width; i++)
                {
                    PointF np  = Interp(x, y, mDef);
                    Color  lci = Interp(np.X * wi, np.Y * he, src);
                    bmpret.SetPixel(i, j, lci);
                    x += xinc;
                }
                y += yinc;
            }

#if muent
            float mut = IPUtil.Entropy(
                IPUtil.getFBiHistogram(src, src),
                IPUtil.getFHistogram(src),
                IPUtil.getFHistogram(src)
                );

            Console.WriteLine("MUENtr " + mut);

            mut = IPUtil.Entropy(
                IPUtil.getFBiHistogram(src, bmpret),
                IPUtil.getFHistogram(src),
                IPUtil.getFHistogram(bmpret)
                );

            Console.WriteLine("MUENtr " + mut);
#endif

            return(bmpret);
        }