From 9d519c5323169e039f9291521a3204230c772547 Mon Sep 17 00:00:00 2001 From: cristy Date: Sun, 5 Apr 2015 21:49:04 +0000 Subject: [PATCH] --- MagickCore/enhance.c | 53 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index 37b7efae7..4eb173f95 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -1298,27 +1298,23 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image, MagickExport Image *EnhanceImage(const Image *image,ExceptionInfo *exception) { #define EnhanceImageTag "Enhance/Image" -#define Enhance(weight) \ - mean=(GetPixelRed(image,r)+pixel.red)/2.0; \ - distance=GetPixelRed(image,r)-pixel.red; \ - distance_squared=QuantumScale*(2.0*(QuantumRange+1.0)+mean)*distance* \ - distance; \ - mean=(GetPixelGreen(image,r)+pixel.green)/2.0; \ - distance=GetPixelGreen(image,r)-pixel.green; \ - distance_squared+=4.0*distance*distance; \ - mean=(GetPixelBlue(image,r)+pixel.blue)/2.0; \ - distance=GetPixelBlue(image,r)-pixel.blue; \ - distance_squared+=QuantumScale*(3.0*(QuantumRange+1.0)-1.0-mean)*distance* \ - distance; \ - mean=(GetPixelBlack(image,r)+pixel.black)/2.0; \ - distance=GetPixelBlack(image,r)-pixel.black; \ - distance_squared+=QuantumScale*(3.0*(QuantumRange+1.0)-1.0-mean)*distance* \ - distance; \ - mean=(GetPixelAlpha(image,r)+pixel.alpha)/2.0; \ - distance=GetPixelAlpha(image,r)-pixel.alpha; \ - distance_squared+=QuantumScale*(3.0*(QuantumRange+1.0)-1.0-mean)*distance* \ - distance; \ - if (distance_squared < ((double) QuantumRange*QuantumRange/25.0)) \ +#define EnhancePixel(weight) \ + mean=QuantumScale*((double) GetPixelRed(image,r)+pixel.red)/2.0; \ + distance=QuantumScale*((double) GetPixelRed(image,r)-pixel.red); \ + distance_squared=(4.0+mean)*distance*distance; \ + mean=QuantumScale*((double) GetPixelGreen(image,r)+pixel.green)/2.0; \ + distance=QuantumScale*((double) GetPixelGreen(image,r)-pixel.green); \ + distance_squared+=(7.0-mean)*distance*distance; \ + mean=QuantumScale*((double) GetPixelBlue(image,r)+pixel.blue)/2.0; \ + distance=QuantumScale*((double) GetPixelBlue(image,r)-pixel.blue); \ + distance_squared+=(5.0-mean)*distance*distance; \ + mean=QuantumScale*((double) GetPixelBlack(image,r)+pixel.black)/2.0; \ + distance=QuantumScale*((double) GetPixelBlack(image,r)-pixel.black); \ + distance_squared+=(5.0-mean)*distance*distance; \ + mean=QuantumScale*((double) GetPixelAlpha(image,r)+pixel.alpha)/2.0; \ + distance=QuantumScale*((double) GetPixelAlpha(image,r)-pixel.alpha); \ + distance_squared+=(5.0-mean)*distance*distance; \ + if (distance_squared < 0.069) \ { \ aggregate.red+=(weight)*GetPixelRed(image,r); \ aggregate.green+=(weight)*GetPixelGreen(image,r); \ @@ -1428,15 +1424,20 @@ MagickExport Image *EnhanceImage(const Image *image,ExceptionInfo *exception) total_weight=0.0; GetPixelInfoPixel(image,p+center,&pixel); r=p; - Enhance(5.0); Enhance(8.0); Enhance(10.0); Enhance(8.0); Enhance(5.0); + EnhancePixel(5.0); EnhancePixel(8.0); EnhancePixel(10.0); + EnhancePixel(8.0); EnhancePixel(5.0); r=p+GetPixelChannels(image)*(image->columns+4); - Enhance(8.0); Enhance(20.0); Enhance(40.0); Enhance(20.0); Enhance(8.0); + EnhancePixel(8.0); EnhancePixel(20.0); EnhancePixel(40.0); + EnhancePixel(20.0); EnhancePixel(8.0); r=p+2*GetPixelChannels(image)*(image->columns+4); - Enhance(10.0); Enhance(40.0); Enhance(80.0); Enhance(40.0); Enhance(10.0); + EnhancePixel(10.0); EnhancePixel(40.0); EnhancePixel(80.0); + EnhancePixel(40.0); EnhancePixel(10.0); r=p+3*GetPixelChannels(image)*(image->columns+4); - Enhance(8.0); Enhance(20.0); Enhance(40.0); Enhance(20.0); Enhance(8.0); + EnhancePixel(8.0); EnhancePixel(20.0); EnhancePixel(40.0); + EnhancePixel(20.0); EnhancePixel(8.0); r=p+4*GetPixelChannels(image)*(image->columns+4); - Enhance(5.0); Enhance(8.0); Enhance(10.0); Enhance(8.0); Enhance(5.0); + EnhancePixel(5.0); EnhancePixel(8.0); EnhancePixel(10.0); + EnhancePixel(8.0); EnhancePixel(5.0); pixel.red=((aggregate.red+total_weight/2.0)/total_weight); pixel.green=((aggregate.green+total_weight/2.0)/total_weight); pixel.blue=((aggregate.blue+total_weight/2.0)/total_weight); -- 2.40.0