LoginSignup
2
3

More than 5 years have passed since last update.

ImageMagick 指定座標の画素値を取得する

Posted at

ImageMagickにて、画像中の指定座標位置の画素値を取得する方法を記述する。
画像処理を行った結果を定量的に解析するときなどに利用できる。

使用バージョン

  • ImageMagick 6.9.1-4 Q16

コマンド例
convert sample-640x480.png -crop 1x1+320+0 -format "%[fx:r * 255]" info:

概念

入力画像について、指定位置から1x1ピクセルの領域を切り出し、その内容を数値として整形して出力する。

指定位置からの切り出し

-cropオプションを使用する。
-crop 1x1+X+Yと指定することで、座標(X, Y)から1x1ピクセル領域を切り出す。

数値への整形

-formatオプションを使用する。
"%[fx:]"を用いて画素値を取得する。fx:の後ろに取り出したいカラーチャネルを指定する。
本例では、Redチャネルを指定している。
%[fx:]で取り出すと、画素値が0.0から1.0の間に正規化されるため、必要に応じて255を乗ずるなどの演算を施す。

出力

-formatで整形した情報をinfo:にて文字列として出力する。

その他

別の方法

%[fx:]の代わりに%[pixel:]を用いることも可能。このときは正規化されないため、%[fx:]のときのような演算は不要。
この場合、出力には当該画素の情報も共に出力される。
実行例:
convert sample-640x480.png -crop 1x1+320+0 -format "%[pixel:r]" info:
gray(127)

複数の入力

入力画像のファイル名にはワイルドカードを指定できる。
複数のファイルにわたって同じ座標の画素値を取り出すということもできる。
-format内で%fを使うとファイル名を出力できるので、どのファイルの出力か対応づけられる。

>convert sample*.png -crop 1x1+0+0 -format "(%f) -> %[fx:r * 255]\n" info:
(sample00.png) -> 0
(sample01.png) -> 23
(sample02.png) -> 46
(sample03.png) -> 70
(sample04.png) -> 93
(sample05.png) -> 116
(sample06.png) -> 139
(sample07.png) -> 162
(sample08.png) -> 185
(sample09.png) -> 209

使用した画像

sample-640x480.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3