diff --git a/MagickCore/compare.c b/MagickCore/compare.c index 6e23f720fa..5a6396605b 100644 --- a/MagickCore/compare.c +++ b/MagickCore/compare.c @@ -1772,11 +1772,9 @@ static MagickBooleanType GetStructuralSimilarityDistortion(const Image *image, ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distortion[l]*=area; - distortion[l]=1.0-distortion[l]; } distortion[CompositePixelChannel]*=area; distortion[CompositePixelChannel]/=(double) GetImageChannels(image); - distortion[CompositePixelChannel]=1.0-distortion[CompositePixelChannel]; kernel_info=DestroyKernelInfo(kernel_info); return(status); } @@ -4119,7 +4117,6 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reconstruct, case NormalizedCrossCorrelationErrorMetric: case PeakSignalToNoiseRatioErrorMetric: case PhaseCorrelationErrorMetric: - case StructuralDissimilarityErrorMetric: { if (similarity > channel_info.similarity) update=MagickTrue; @@ -4153,7 +4150,6 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reconstruct, case NormalizedCrossCorrelationErrorMetric: case PeakSignalToNoiseRatioErrorMetric: case PhaseCorrelationErrorMetric: - case StructuralDissimilarityErrorMetric: { SetPixelChannel(similarity_image,channel,ClampToQuantum((double) QuantumRange*similarity),q); @@ -4178,7 +4174,6 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reconstruct, case NormalizedCrossCorrelationErrorMetric: case PeakSignalToNoiseRatioErrorMetric: case PhaseCorrelationErrorMetric: - case StructuralDissimilarityErrorMetric: { if (similarity_threshold != DefaultSimilarityThreshold) if (channel_info.similarity >= similarity_threshold) diff --git a/MagickWand/compare.c b/MagickWand/compare.c index 6aa6f4a87d..67474e3717 100644 --- a/MagickWand/compare.c +++ b/MagickWand/compare.c @@ -1244,7 +1244,6 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, case NormalizedCrossCorrelationErrorMetric: case PeakSignalToNoiseRatioErrorMetric: case PhaseCorrelationErrorMetric: - case StructuralDissimilarityErrorMetric: { similarity_metric=1.0-similarity_metric; break; @@ -1275,6 +1274,11 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, scale=(double) columns*rows; break; } + case StructuralDissimilarityErrorMetric: + { + distortion=MagickMax(distortion,0.0); + break; + } case DotProductCorrelationErrorMetric: case PhaseCorrelationErrorMetric: {