correct SSIM metric

This commit is contained in:
Cristy
2025-05-17 16:42:18 -04:00
parent 045f3bbd87
commit dea8871059
2 changed files with 5 additions and 6 deletions
-5
View File
@@ -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)
+5 -1
View File
@@ -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:
{