public void Descomprimir()
 {
     //lienzo de 512 x 512
     im     = new float[512, 512];
     tempIm = new float[512, 512];
     for (int i = 0; i < 512; i++)
     {
         for (int j = 0; j < 512; j++)
         {
             im[i, j] = 255;
         }
     }
     //
     for (int k = 0; k < repeticiones; k++)
     {
         for (int iDom = 0; iDom < iDomMax; iDom++)
         {
             for (int jDom = 0; jDom < jDomMax; jDom++)
             {
                 int funcIndex         = (iDom * jDomMax) + jDom;
                 funcionIterativa func = SFI[funcIndex];
                 dibujarBloqueDominio(iDom, jDom, func.iRan, func.jRan, func.tipo, func.q);
             }
         }
         tempIm = im;
     }
 }
 public void abrirImagenComprimida(BinaryReader reader)
 {
     // 4096 = iDomMax * jDomMax
     SFI = new funcionIterativa[4096];
     for (int i = 0; i < SFI.Length; i++)
     {
         uint x    = reader.ReadUInt32();
         int  iRan = (int)(x >> 27);
         int  jRan = (int)(x << 5 >> 27);
         tipoTransformacion type = (tipoTransformacion)(x << 10 >> 29);
         float q = (int)(x << 13 >> 23) - 255;
         SFI[i] = new funcionIterativa(iRan, jRan, type, q);
     }
 }