首页 >后端开发 >php教程 >在使用PHP的图像中找到差异

在使用PHP的图像中找到差异

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-15 12:59:11259浏览

>本文探讨了一个有趣的问题:我们如何有效地确定两个图像是否显着差异? 对于PHP开发人员而言,图像调整大小的质量损失最小是一个普遍的挑战。本教程利用基本的数学原理来简化此任务。

Finding Differences in Images with PHP

解决方案取决于将基本数学概念应用于位图图像处理。 本教程的代码可在

> https://www.php.cn/link/47EB3187889A9A9A9A9A9A9A9B3CA9CA9CA3CA304中获得。

密钥概念:

>利用PHP和数学原理来检测实质图像的变化。
    使用像素级差计算的欧几里得距离公式。
  • 创建第三个位图以可视化这些差异。
  • 实施PHP类来管理图像加载,位图生成和比较。
  • 使用标准偏差来滤波次要变化,提高精度。
  • 识别和勾勒出更改边界以进行精确差异可视化。>
  • 位图处理:
  • 图像可以看作是具有不同颜色和对比度(由RGB或HSL值表示)或向量(由点和元数据定义)的像素网格。该教程重点介绍了更简单的位图方法。 以下代码片段演示了位图创建:
  • 此代码通过每个像素迭代,使用位移动和掩蔽提取RGB值。 每个RGB值范围从0到255(00000000到11111111)。

欧几里得距离:

比较位图涉及计算相应像素之间的距离。 欧几里得距离公式是此三维(RGB)比较的理想选择:

如果需要,此公式会延伸至更高的维度。
<code class="language-php">$image = imagecreatefrompng($path);
$width = imagesx($image);
$height = imagesy($image);

$map = [];

for ($y = 0; $y < $height; $y++) {
    $map[$y] = [];
    for ($x = 0; $x < $width; $x++) {
        $color = imagecolorat($image, $x, $y);
        $map[$y][$x] = [
            "r" => ($color >> 16) & 0xFF,
            "g" => ($color >> 8) & 0xFF,
            "b" => $color & 0xFF
        ];
    }
}</code>
>

图像差异计算:

php类简化了图像加载,位图创建和差异计算:

此类使用欧几里得距离来生成差异图。

<code class="language-php">$first = [$red = 100, $green = 125, $blue = 150];
$second = [$red = 125, $green = 150, $blue = 175];

$red = $second[0] - $first[0];
$red *= $red;
$green = $second[1] - $first[1];
$green *= $green;
$blue = $second[2] - $first[2];
$blue *= $blue;

$distance = sqrt($red + $green + $blue); // ≈ 43.30</code>
降低噪声的标准偏差:

>

要滤除较小的变化,应用标准偏差。这涉及计算标准偏差范围内的平均像素差和识别值,然后将其视为微不足道。 边界检测:

a

方法标识了矩形区域,其中包括重大变化,提供了精确的可视化。
<code class="language-php">class State { /* ... (Class definition as in the original text) ... */ }</code>

结论:

这种方法有效地确定了显着的图像差异。 欧几里得距离,标准偏转过滤和边界检测的组合为各种应用提供了强大的解决方案,包括自动测试和图像比较任务。 欢迎进一步的改进和替代方法。

>

常见问题(常见问题解答):

>

>原始文本的FAQ部分在很大程度上保持不变,并使用GD和Imagick提供了有关PHP图像比较技术的有价值信息,以解决图像格式处理,准确性,性能优化和限制等方面。

以上是在使用PHP的图像中找到差异的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn