Skip to content

Commit e61cf13

Browse files
author
Cristy
committed
use variance-style combined fuzz
1 parent fa4c28d commit e61cf13

File tree

3 files changed

+14
-29
lines changed

3 files changed

+14
-29
lines changed

magick/color-private.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ extern MagickPrivate MagickBooleanType
3434

3535
static inline double GetFuzzyColorDistance(const Image *p,const Image *q)
3636
{
37-
double
38-
fuzz;
39-
40-
fuzz=(double) MagickMax(MagickMax(p->fuzz,q->fuzz),(double)
41-
MagickSQ1_2);
42-
return(fuzz*fuzz);
37+
/*
38+
Variance-style combined fuzz.
39+
*/
40+
if (q == (const Image *) NULL)
41+
return(p->fuzz*p->fuzz);
42+
return(p->fuzz*p->fuzz+q->fuzz*q->fuzz);
4343
}
4444

4545
static inline MagickBooleanType IsColorEqual(const PixelPacket *p,

magick/color.c

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1681,8 +1681,7 @@ MagickExport MagickBooleanType IsColorSimilar(const Image *image,
16811681
distance,
16821682
scale;
16831683

1684-
fuzz=(double) MagickMax(image->fuzz,(MagickRealType) MagickSQ1_2);
1685-
fuzz*=fuzz;
1684+
fuzz=GetFuzzyColorDistance(image,(const Image *) NULL);
16861685
scale=1.0;
16871686
distance=0.0;
16881687
if (image->matte != MagickFalse)
@@ -1903,16 +1902,11 @@ MagickPrivate MagickBooleanType IsIntensitySimilar(const Image *image,
19031902
fuzz,
19041903
pixel;
19051904

1906-
MagickRealType
1907-
distance;
1908-
19091905
if (GetPixelIntensity(image,p) == GetPixelIntensity(image,q))
19101906
return(MagickTrue);
1911-
fuzz=(MagickRealType) MagickMax(image->fuzz,MagickSQ1_2);
1912-
fuzz*=fuzz;
1907+
fuzz=GetFuzzyColorDistance(image,(const Image *) NULL);
19131908
pixel=GetPixelIntensity(image,p)-GetPixelIntensity(image,q);
1914-
distance=pixel*pixel;
1915-
if (distance > fuzz)
1909+
if ((pixel*pixel) > fuzz)
19161910
return(MagickFalse);
19171911
return(MagickTrue);
19181912
}
@@ -1973,9 +1967,7 @@ MagickExport MagickBooleanType IsMagickColorSimilar(const MagickPixelPacket *p,
19731967

19741968
if ((p->fuzz == 0.0) && (q->fuzz == 0.0))
19751969
return(IsMagickColorEqual(p,q));
1976-
fuzz=(MagickRealType) MagickMax(MagickMax(p->fuzz,q->fuzz),(double)
1977-
MagickSQ1_2);
1978-
fuzz*=fuzz;
1970+
fuzz=p->fuzz*p->fuzz+q->fuzz*q->fuzz;
19791971
scale=1.0;
19801972
distance=0.0;
19811973
if ((p->matte != MagickFalse) || (q->matte != MagickFalse))
@@ -2080,18 +2072,13 @@ MagickExport MagickBooleanType IsOpacitySimilar(const Image *image,
20802072
fuzz,
20812073
pixel;
20822074

2083-
MagickRealType
2084-
distance;
2085-
20862075
if (image->matte == MagickFalse)
20872076
return(MagickTrue);
20882077
if (GetPixelOpacity(p) == GetPixelOpacity(q))
20892078
return(MagickTrue);
2090-
fuzz=MagickMax(image->fuzz,(double) MagickSQ1_2);
2091-
fuzz*=fuzz;
2079+
fuzz=GetFuzzyColorDistance(image,(const Image *) NULL);
20922080
pixel=(MagickRealType) GetPixelOpacity(p)-(MagickRealType) GetPixelOpacity(q);
2093-
distance=pixel*pixel;
2094-
if (distance > fuzz)
2081+
if ((pixel*pixel) > fuzz)
20952082
return(MagickFalse);
20962083
return(MagickTrue);
20972084
}

magick/compare.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -396,8 +396,7 @@ static MagickBooleanType GetAESimilarity(const Image *image,
396396
/*
397397
Compute the absolute difference in pixels between two images.
398398
*/
399-
fuzz=0.5*(image->fuzz,reconstruct_image->fuzz);
400-
fuzz*=fuzz;
399+
fuzz=GetFuzzyColorDistance(image,reconstruct_image);
401400
SetImageCompareBounds(image,reconstruct_image,&columns,&rows);
402401
image_view=AcquireVirtualCacheView(image,exception);
403402
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
@@ -542,8 +541,7 @@ static MagickBooleanType GetFUZZSimilarity(const Image *image,
542541
i,
543542
y;
544543

545-
fuzz=0.5*(image->fuzz,reconstruct_image->fuzz);
546-
fuzz*=fuzz;
544+
fuzz=GetFuzzyColorDistance(image,reconstruct_image);
547545
SetImageCompareBounds(image,reconstruct_image,&columns,&rows);
548546
image_view=AcquireVirtualCacheView(image,exception);
549547
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);

0 commit comments

Comments
 (0)