ImageMagick で画像比較

ruby

2つの画像が、似てるのか、同じなのか、全く違うのかを調べることができます。

macOS Big Sur で動作確認済み

ImageMagick インストール

% brew install imagemagick

バージョン確認

% convert --version
Version: ImageMagick 7.0.10-48 Q16 x86_64 2020-12-10 https://imagemagick.org

比較1

% compare -metric PSNR castle2.png castle2.png /dev/null
inf%                       

比較2

% compare -metric PSNR castle3.png castle2.png /dev/null
9.31704%  

/dev/null をつけないとエラーになります。

inf は 100% 一致の場合。
それ以外だと、似てるほど数字が0%に近くなります。
数字が大きいということは、全然違う画像、ということ。

RMagick上で比較

ruby でやるときは、RMagick という ImageMagick のラッパーを使います。

以下で RMagick インストール

% brew install pkg-config
% sudo gem install rmagick

コードは以下のようになります。

require 'RMagick'

include Magick

img1 = ImageList.new("field.png")
img2 = ImageList.new("glass.png")

metric = Magick::PeakSignalToNoiseRatioErrorMetric
diff = img1.compare_channel(img2, metric)[1]

p diff # => 11.170329325888561

コメント

タイトルとURLをコピーしました