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」ピクセルの違い。
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
部分を削除します。結果は、compare
2 つの差分画像のうち最初の画像を明るい背景として保持するデフォルトの動作です。(今回は、差分ピクセルを青で表示するためのパラメータが追加されています。)