Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

hsagae
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away