]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 23 Feb 2015 21:57:13 +0000 (21:57 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 23 Feb 2015 21:57:13 +0000 (21:57 +0000)
MagickWand/mogrify.c
MagickWand/operation.c

index e785346ae0148240d0c1cc5b7bbffed223789c9c..70cba73417a74ff8f6b3b16f386db15a04ceb526 100644 (file)
@@ -1237,14 +1237,25 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
           }
         if (LocaleCompare("convolve",option+1) == 0)
           {
+            double
+              gamma;
+            
             KernelInfo
               *kernel_info;
+            
+            register ssize_t
+              j;
 
             (void) SyncImageSettings(mogrify_info,*image,exception);
             kernel_info=AcquireKernelInfo(argv[i+1],exception);
             if (kernel_info == (KernelInfo *) NULL)
               break;
-            /* kernel_info->bias=(*image)->bias; -- FUTURE: check this path! */
+            gamma=0.0;
+            for (j=0; j < (ssize_t) (kernel_info->width*kernel_info->height); j++)
+              gamma+=kernel_info->values[j];
+            gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
+            for (j=0; j < (ssize_t) (kernel_info->width*kernel_info->height); j++)
+              kernel_info->values[j]*=gamma;
             mogrify_image=MorphologyImage(*image,CorrelateMorphology,1,
               kernel_info,exception);
             kernel_info=DestroyKernelInfo(kernel_info);
index c288d546bc479ac242eddecbe237596d0f1bbb31..3f03263fe6e6c43c51bf842ed6aacd60ed9b8767 100644 (file)
@@ -2142,12 +2142,24 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
         }
       if (LocaleCompare("convolve",option+1) == 0)
         {
+          double
+            gamma;
+            
           KernelInfo
             *kernel_info;
+            
+          register ssize_t
+            j;
 
           kernel_info=AcquireKernelInfo(arg1,exception);
           if (kernel_info == (KernelInfo *) NULL)
             CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1);
+          gamma=0.0;
+          for (j=0; j < (ssize_t) (kernel_info->width*kernel_info->height); j++)
+            gamma+=kernel_info->values[j];
+          gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
+          for (j=0; j < (ssize_t) (kernel_info->width*kernel_info->height); j++)
+            kernel_info->values[j]*=gamma;
           new_image=MorphologyImage(_image,CorrelateMorphology,1,kernel_info,
             _exception);
           kernel_info=DestroyKernelInfo(kernel_info);