PHP .png Lineart比较

时间:2011-07-14 22:09:36

标签: php gd

现在几天,我一直坚持使用PHP进行图像比较的任务。我开始认为PHP不是执行此类任务的语言。

目标:

使用基础,比较新的艺术线条,并返回它们之间的百分比差异。 我尝试了几种方法:比较像素数量的差异(这并没有真正解决线条艺术差异的目标),使所有像素重叠,白色,找到没有透明度的像素/颜色白色并由基座中的非透明像素划分(似乎没有得到正确的数字)

以下是一个例子:

Base enter image description here

- - - - - - - - 基地 - - - - - - - - - - - Line-Art - - - - - - - -

百分比差异应为54%左右。但是,我尝试过的方法都没有关闭(~5%)

我的问题是:可以/如何在PHP中完成? 谢谢!

图片©Aywas.com

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ImageMagick函数compareimagechannels(),仅使用黑色通道吗?

编辑:这是基本尝试及其输出。您可以操纵输出数字来计算阈值。图像1和2是线条图,图像3是Google标题徽标,大小调整为200x200。

$img1 = new Imagick('image1.png');
$img2 = new Imagick('image2.png');
$img3 = new Imagick('image3.png');

$diff12 = $img1->compareImageChannels($img2,
             Imagick::CHANNEL_ALL, Imagick::METRIC_MEANABSOLUTEERROR);
$diff13 = $img1->compareImageChannels($img3,
             Imagick::CHANNEL_ALL, Imagick::METRIC_MEANABSOLUTEERROR);

print_r($diff12);
print_r($diff13);

输出:

Array
(
    [0] => Imagick Object
        (
        )

    [1] => 1512.25385625
)
Array
(
    [0] => Imagick Object
        (
        )

    [1] => 24353.6380375
)