ImageMagickを使用して画像を「Diff」する 質問する

ImageMagickを使用して画像を「Diff」する 質問する

2 つの画像の違いを取得するにはどうすればよいでしょうか。元の画像があります。元の画像とまったく同じ複製に誰かが書き込みをしています。次に、元の画像と書き込みのある画像を比較し、書き込み部分だけを画像形式で抽出する必要があります。

例: 家の写真があります。誰かがその写真のコピーを取り、そのコピーに「Hello!」と書き込みました。私は、この 2 枚の写真を比較して、家を削除し、「Hello!」という文字の画像だけを残したいと思っています。

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

ベストアンサー1

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

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

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

結果の diff ファイルには、異なるすべてのピクセルが赤色で表示されます。変更されていないピクセルは白で表示されます。

短くて甘い。

画像は同じタイプである必要はありません。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」ピクセルの違い。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

このコマンドは-compose src部分を削除します。結果は、compare2 つの差分画像のうち最初の画像を明るい背景として保持するデフォルトの動作です。(今回は、差分ピクセルを青で表示するためのパラメータが追加されています。)

おすすめ記事