几天来,我一直在执行一项涉及使用 PHP 进行图像比较的任务。我开始认为 PHP 不是执行此类任务的语言。
目标:
使用一个基础,将新的艺术线条与其进行比较,并返回它们之间的百分比差异。 我尝试了几种方法来解决这个问题:比较像素数的差异(这并不能真正解决线条艺术差异的目标),使所有重叠的像素变白,并找到没有透明度/颜色的像素白色并除以底部的不透明像素(似乎没有得到正确的数字)
这是一个例子:
-- -- -- -- -- -- -- -- 基础 -- -- -- -- -- -- -- -- -- -- -- -- 艺术线条 -- -- -- - - -- -- --
百分比差异应在 54% 左右。然而,我尝试过的所有方法都无法接近这一点。
我的问题是:可以/如何在 PHP 中完成此操作? 谢谢! 图片©Aywas.com
这是一个基本的尝试及其输出。您也许能够操纵输出数字来计算出阈值。图片 1 和 2 是线条艺术,图片 3 是调整为 200x200 的 Google 标题徽标。
(~5%)
输出:
$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);