ホームページ > バックエンド開発 > PHPチュートリアル > PHPで画像の違いを見つける

PHPで画像の違いを見つける

Joseph Gordon-Levitt
リリース: 2025-02-15 12:59:11
オリジナル
241 人が閲覧しました

この記事では、魅力的な質問を調査します。2つの画像が大幅に異なるかどうかを効率的に判断するにはどうすればよいですか? PHP開発者にとって、最小限の品質損失でサイズ変更する画像は一般的な課題です。このチュートリアルは、このタスクを簡素化するために基本的な数学の原則を活用しています。

Finding Differences in Images with PHP ソリューションは、基本的な数学的概念をビットマップ画像処理に適用することにかかっています。 このチュートリアルのコードは、

https://www.php.cn/link/47eb3187889a93d645fd86b3ca9ca304

で入手できます

重要な概念:

PHPと数学の原則を利用して、実質的な画像の変更を検出します。 ピクセルレベルの差計算にユークリッド距離式を使用しています。
  • これらの違いを視覚化するための3番目のビットマップを作成します。
  • 画像の読み込み、ビットマップ生成、および比較を管理するためのPHPクラスの実装。
  • 標準偏差を使用して軽度の変動をフィルタリングし、精度を向上させます
  • 正確な違いの視覚化のための変更境界を特定して概説します。
  • ビットマップ処理:
  • 画像は、さまざまな色とコントラストレベル(RGBまたはHSL値で表される)のピクセルグリッドまたはベクトル(ポイントとメタデータで定義)として見ることができます。このチュートリアルは、よりシンプルなビットマップアプローチに焦点を当てています。 次のコードスニペットは、ビットマップの作成を示しています:
このコードは各ピクセルを繰り返し、ビットシフトとマスキングを使用してRGB値を抽出します。 各RGB値の範囲は0〜255(バイナリの00000000〜11111111)です。

euclidean距離:

ビットマップの比較には、対応するピクセル間の距離を計算することが含まれます。 ユークリッド距離式は、この3次元(RGB)の比較に最適です。

$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
        ];
    }
}
ログイン後にコピー
この式は、必要に応じて高次元に拡張されます

画像の違いの計算:

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
ログイン後にコピー
ノイズリダクションの標準偏差:

マイナーなバリエーションをフィルタリングするには、標準偏差が適用されます。これには、平均ピクセルの差を計算し、標準偏差範囲内で値を識別し、その後は重要でないと扱われます。 境界検出:

a
class State { /* ... (Class definition as in the original text) ... */ }
ログイン後にコピー
メソッドは、重要な視覚化を提供する重要な変化を網羅する長方形の領域を識別します。

結論:

このアプローチは、重要な画像の違いを効果的に識別します。 ユークリッド距離、標準偏差フィルタリング、および境界検出の組み合わせは、自動テストや画像比較タスクなど、さまざまなアプリケーションに堅牢なソリューションを提供します。 さらなる改善と代替方法を歓迎します。

よくある質問(FAQ):

元のテキストのFAQセクションは、ほとんど変化しておらず、GDとImagicICKを使用したPHP画像比較手法に関する貴重な情報を提供し、画像形式の処理、精度、パフォーマンスの最適化、制限などの側面に対処します。

以上がPHPで画像の違いを見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート