197

2つの画像の違いを確認するにはどうすればよいですか?元の画像があります。誰かが元の画像の正確な複製に書いています。次に、オリジナルを画像に書き込まれたものと比較し、画像形式での書き込みのみを抽出する必要があります。

例:家の写真があります。誰かがコピーを取り、「こんにちは!」と書きました。コピーに。どういうわけか2枚の写真を比較して家を外し、「こんにちは!」という言葉のイメージを残したいと思います。

これはImageMagickで可能ですか?画像間の統計的差異を取得する方法があることは知っていますが、それは私が探しているものではありません。

4

2 に答える 2

349

私自身のお気に入りは次の 2 つです。

 compare image1 image2 -compose src diff.png
 compare image1 image2 -compose src diff.pdf

上記の 2 つのコマンドの唯一の違い: 最初のコマンドは 2 つの画像の視覚的な違いを PNG ファイルとして表示し、2 つ目のコマンドは PDF として表示します。

結果の差分ファイルには、赤色が異なるすべてのピクセルが表示されます。変化していないものは白く見えます。

短くて甘い。

画像は同じタイプである必要はありません。JPEG、TIFF、PNG を混在させることもできます -- 1 つの条件の下で: 画像は同じサイズ (ピクセル単位の画像寸法) でなければなりません。出力形式は、出力ファイル名の拡張子によって決まります。

何らかの理由で、デフォルトの解像度 (72 dpi) よりも高い解像度が必要な場合は、適切な-densityパラメーターを追加するだけです。

 compare -density 300 image1 image2 -compose src diff.jpeg

図解例

上記のコマンドのバリエーションの結果のいくつかの図を次に示します。注: 比較した 2 つのファイルは PDF ファイルであるため、これらのファイルでも機能します (1 ページのファイルである限り)。


左:テキスト付きの       画像中央:元の画像      右:赤のピクセルの違い (=テキスト)。 赤の差分ピクセルのみ。 同一のピクセルは白

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
        diff-compose-default.pdf

これは、先ほど提案したコマンドと同じです。


左:テキスト付き      の画像中央:元の画像      右:「シーグリーン」ピクセルの違い。 Seagreen 差分ピクセルのみ。 同一のピクセルは白

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
       -highlight-color seagreen \
        diff-compose-default.pdf

このコマンドは、差分ピクセルをデフォルトの赤ではなく「海緑」にするパラメータを追加します。


左:テキスト付きの       画像中央:元の画像       右:青色の差分 (ただし、一部のコンテキスト背景あり) 青の差分ピクセルのみ。 明るくした背景としての比較画像の最初のl

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -highlight-color blue \
        diff-compose-default.pdf

このコマンドはパーツを削除します。結果は、2 つの差分イメージの最初の 1 つを明るい背景として保持-compose srcするデフォルトの動作です。compare(今回は差分ピクセルを青色で表示するパラメータを追加しました。)

于 2012-07-06T12:24:18.613 に答える
68

多くのアプリケーションでうまく機能しますが、特にほとんどcompareがグレースケールの画像を比較する場合は、別のアプローチを好む場合があることがわかりました。

convert '(' file1.png -flatten -grayscale Rec709Luminance ')' \
        '(' file2.png -flatten -grayscale Rec709Luminance ')' \
        '(' -clone 0-1 -compose darken -composite ')' \
        -channel RGB -combine diff.png

アイデアは次のとおりです。 と の両方をグレースケールに変換file1.pngfile2.pngます。次に、最初の画像を結果の画像の赤のチャンネルとして扱い、2 番目のチャンネルを緑のチャンネルとして扱います。青のチャネルは、darkencompose 演算子を使用してこれら 2 つから形成されます。これは、本質的に最小値を取ることを意味します。

したがって、両方の画像で白いものは白いままです。両方の画像で黒いものは黒いままです。最初の画像では白で、2 番目の画像では黒であるものが赤になり、2 番目の画像では白で最初の画像では黒であるものが緑になります。

その結果、適切に色分けされた画像が得られ、緑を最初の入力に、赤を 2 番目の入力に簡単に関連付けることができます。これを使用して、LaTeX からの出力とKaTeXからの出力を比較する例を次に示します(これを改善するためにいくつかのバグを修正する前に)。

ここに画像の説明を入力

を使用して何かが変更された場所compareを確認し、上記を使用してどのように変更されたかをより詳細に確認することで、アプローチを組み合わせることができます。

于 2015-11-12T14:12:19.017 に答える