]> granicus.if.org Git - imagemagick/commitdiff
Revert patch for non-square Fourier transform
authorCristy <urban-warrior@imagemagick.org>
Sat, 9 Apr 2016 21:50:42 +0000 (17:50 -0400)
committerCristy <urban-warrior@imagemagick.org>
Sat, 9 Apr 2016 21:50:42 +0000 (17:50 -0400)
MagickCore/fourier.c

index 9ab322343e1106fe119bfedc7f143db12171eb89..9ec7865905f022e6fe8fc67f518c3833bc7f5811 100644 (file)
@@ -197,8 +197,6 @@ MagickExport Image *ComplexImages(const Image *images,const ComplexOperator op,
       return(complex_images);
     }
   AppendImageToList(&complex_images,image);
-  complex_images->storage_class=DirectClass;
-  complex_images->depth=32UL;
   /*
     Apply complex mathematics to image pixels.
   */
@@ -542,11 +540,11 @@ static MagickBooleanType ForwardFourier(const FourierInfo *fourier_info,
       return(MagickFalse);
     }
   magnitude_pixels=(double *) GetVirtualMemoryBlob(magnitude_info);
-  (void) ResetMagickMemory(magnitude_pixels,0,fourier_info->height*
-    fourier_info->width*sizeof(*magnitude_pixels));
+  (void) ResetMagickMemory(magnitude_pixels,0,fourier_info->width*
+    fourier_info->height*sizeof(*magnitude_pixels));
   phase_pixels=(double *) GetVirtualMemoryBlob(phase_info);
-  (void) ResetMagickMemory(phase_pixels,0,fourier_info->height*
-    fourier_info->width*sizeof(*phase_pixels));
+  (void) ResetMagickMemory(phase_pixels,0,fourier_info->width*
+    fourier_info->height*sizeof(*phase_pixels));
   status=ForwardQuadrantSwap(fourier_info->width,fourier_info->height,
     magnitude,magnitude_pixels);
   if (status != MagickFalse)
@@ -718,7 +716,7 @@ static MagickBooleanType ForwardFourierTransform(FourierInfo *fourier_info,
       return(MagickFalse);
     }
   source_pixels=(double *) GetVirtualMemoryBlob(source_info);
-  ResetMagickMemory(source_pixels,0,fourier_info->height*fourier_info->width*
+  ResetMagickMemory(source_pixels,0,fourier_info->width*fourier_info->height*
     sizeof(*source_pixels));
   i=0L;
   image_view=AcquireVirtualCacheView(image,exception);
@@ -850,6 +848,13 @@ static MagickBooleanType ForwardFourierTransformChannel(const Image *image,
 
   fourier_info.width=image->columns;
   fourier_info.height=image->rows;
+  if ((image->columns != image->rows) || ((image->columns % 2) != 0) ||
+      ((image->rows % 2) != 0))
+    {
+      size_t extent=image->columns < image->rows ? image->rows : image->columns;
+      fourier_info.width=(extent & 0x01) == 1 ? extent+1UL : extent;
+    }
+  fourier_info.height=fourier_info.width;
   fourier_info.center=(ssize_t) (fourier_info.width/2L)+1L;
   fourier_info.channel=channel;
   fourier_info.modulus=modulus;
@@ -904,6 +909,14 @@ MagickExport Image *ForwardFourierTransformImage(const Image *image,
 
     width=image->columns;
     height=image->rows;
+    if ((image->columns != image->rows) || ((image->columns % 2) != 0) ||
+        ((image->rows % 2) != 0))
+      {
+        size_t extent=image->columns < image->rows ? image->rows :
+          image->columns;
+        width=(extent & 0x01) == 1 ? extent+1UL : extent;
+      }
+    height=width;
     magnitude_image=CloneImage(image,width,height,MagickTrue,exception);
     if (magnitude_image != (Image *) NULL)
       {
@@ -1419,6 +1432,15 @@ static MagickBooleanType InverseFourierTransformChannel(
 
   fourier_info.width=magnitude_image->columns;
   fourier_info.height=magnitude_image->rows;
+  if ((magnitude_image->columns != magnitude_image->rows) ||
+      ((magnitude_image->columns % 2) != 0) ||
+      ((magnitude_image->rows % 2) != 0))
+    {
+      size_t extent=magnitude_image->columns < magnitude_image->rows ?
+        magnitude_image->rows : magnitude_image->columns;
+      fourier_info.width=(extent & 0x01) == 1 ? extent+1UL : extent;
+    }
+  fourier_info.height=fourier_info.width;
   fourier_info.center=(ssize_t) (fourier_info.width/2L)+1L;
   fourier_info.channel=channel;
   fourier_info.modulus=modulus;