PHP .png 线稿比较

问题描述 投票:0回答:2

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

目标:

使用一个基础,将新的艺术线条与其进行比较,并返回它们之间的百分比差异。 我尝试了几种方法来解决这个问题:比较像素数的差异(这并不能真正解决线条艺术差异的目标),使所有重叠的像素变白,并找到没有透明度/颜色的像素白色并除以底部的不透明像素(似乎没有得到正确的数字)

这是一个例子:

Baseenter image description here

-- -- -- -- -- -- -- -- 基础 -- -- -- -- -- -- -- -- -- -- -- -- 艺术线条 -- -- -- - - -- -- --

百分比差异应在 54% 左右。然而,我尝试过的所有方法都无法接近这一点。


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

图片©Aywas.com

php gd
2个回答
0
投票
compareimagechannels()

,仅使用黑色通道?

编辑:

这是一个基本的尝试及其输出。您也许能够操纵输出数字来计算出阈值。图片 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);



0
投票
https://github.com/sapientpro/image-comparator

库。该软件包建立在感知哈希之上,并提供有效比较多个图像的功能。 Array ( [0] => Imagick Object ( ) [1] => 1512.25385625 ) Array ( [0] => Imagick Object ( ) [1] => 24353.6380375 )

	
© www.soinside.com 2019 - 2024. All rights reserved.