ImageMagick Sharp 比较敏感

ImageMagick Sharp Compare too sensitive

我正在尝试比较两张图片。我复制了一份我正在使用的原始 jpeg,并在上面画了一条小线。

然后我运行下面的代码,使用原来的和改变的jpegs,并且非常红。

static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        MagickNET.SetTempDirectory(@"C:\scratch");
        MagickImage oldImage = new MagickImage(@"C:\Users\Craig\Pictures\orig.jpg");
        MagickImage newImage = new MagickImage(@"C:\Users\Craig\Pictures\changed.jpg");

        newImage.Crop(oldImage.BaseWidth, oldImage.BaseHeight);

        using (MagickImage diffImage = new MagickImage())
        {
            double diff = oldImage.Compare(newImage, ErrorMetric.Absolute, diffImage);
            Console.WriteLine($"Diff is {diff}...");
            diffImage.Write(@"C:\Users\Craig\Pictures\diff.jpg");
            Console.ReadKey();
        }

    }

我认为问题是,它太准确了,并且 jpeg 被修改了一点(有损?)。有没有办法让它平静下来,寻找更大的变化?因为如果你看图片,右下角,你可以看到我画的笑脸(只有嘴巴和眼睛)。可能是底部右边1.5cm,右边1.5cm。

我认为答案是 'Fuzz',但我不知道如何将其应用到我的代码中。

JPEG 是一种有损压缩,因此只需保存它就会更改值。您应该使用 PNG 或 TIFF 而不是 JPG 来执行此操作。尽管如此,您应该能够在 ImageMagick 命令行比较中使用 -fuzz。 compare -fuzz 20% -metric rmse image1 image2 diffimage

输入1:

输入2:

比较没有模糊:

compare -metric rmse lena.jpg lena2.jpg diffimage.png


与模糊比较:

compare -fuzz 20% -metric rmse lena.jpg lena2.jpg diffimage2.png


抱歉,我不知道其他 API 中的等效项。