/// <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); }