Color Modes

マルチスペクトル画像

マルチスペクトル画像とは、可視光スペクトルだけでなく、電磁スペクトルの複数のバンドを使用してキャプチャされた画像を指します。これは、紫外線から赤外線まで、より広い波長範囲にわたってデータをキャプチャすることを意味します。

複数のスペクトルバンドにわたってデータをキャプチャすることにより、マルチスペクトル画像は、組成、温度、植生の健全性など、画像化されているオブジェクトまたはシーンに関する追加情報を提供できます。この情報は、農業、環境モニタリング、災害対応、軍事監視など、幅広いアプリケーションに使用できます。

マルチスペクトル画像は、多くの場合、衛星、ドローン、または航空機に搭載された特殊なセンサーを使用してキャプチャされます。その後、データは専用ソフトウェアを使用して処理され、各スペクトルバンドでキャプチャされた情報を表示する画像が作成されます。

全体として、マルチスペクトル画像は、周囲の世界を分析および理解するための強力なツールを提供し、可視光画像だけでは得られない洞察を得ることができます。

ImageMagickでのマルチスペクトルサポート

ImageMagickは、すべてのチャネルが元の画像と同じ寸法とピクセル数を持つマルチスペクトル画像をサポートしています。ただし、すべての画像形式がマルチスペクトル画像をサポートしているわけではありません。PSD、TIFF、MIFF、MPC、およびFTXTは、21個のメタチャネルを持つ最大31バンドのマルチスペクトル画像を完全にサポートしています。ImageMagickをconfigureスクリプト--enable-64bit-channel-masksオプションでビルドすると、最大52個のメタチャネルを持つ62バンドのマルチスペクトル画像を処理できます。

標準のRGB(A)またはCMYK(A)チャネルを超える画像チャネルを「メタ」チャネルと呼びます。「メタ」、「メタ1」、「メタ2」などとしてラベル付けします。メタチャネルは、読み取り、書き込み、操作(たとえば、サイズ変更、ガンマ調整など)が可能な他のチャネルと同じように扱われます。

マルチスペクトル画像の作成

通常、TIFFまたはPSD形式のマルチスペクトル画像から開始します。お持ちでない場合は、自分で作成できます。この例では、2つのメタチャネルを持つ単一のCMYKピクセルを作成します。これをmultiMeta.txtというファイルに入れます。

0,0: 10,20,30,40,50,60

それをTIFF画像形式に変換しましょう。

$ magick -size 1x1 -colorspace CMYK -define ftxt:format="\x,\y:\c\n" -define ftxt:hasalpha=false -define ftxt:nummeta=2 ftxt:multiMeta.txt multiMeta.tif

期待どおりに動作したことを確認しましょう。

$ identify -verbose multiMeta.tif
Image:
  Filename: multiMeta.tif
  Permissions: rw-------
  Format: TIFF (Tagged Image File Format)
  Mime type: image/tiff
  Class: DirectClass
  Geometry: 1x1+0+0
  Units: PixelsPerInch
  Colorspace: CMYK
  Type: ColorSeparation
  Endianness: LSB
  Depth: 16-bit
  Channels: 6.2
  Channel depth:
    Cyan: 16-bit
    Magenta: 16-bit
    Yellow: 16-bit
    Black: 16-bit
    Meta channel[0]: 16-bit
    Meta channel[1]: 16-bit
  Channel statistics:
    Pixels: 1
    Cyan:
      min: 10  (0.00015259)
      max: 10 (0.00015259)
      mean: 10 (0.00015259)
      median: 10 (0.00015259)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
    Magenta:
      min: 20  (0.00030518)
      max: 20 (0.00030518)
      mean: 20 (0.00030518)
      median: 20 (0.00030518)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
    Yellow:
      min: 30  (0.000457771)
      max: 30 (0.000457771)
      mean: 30 (0.000457771)
      median: 30 (0.000457771)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
    Black:
      min: 40  (0.000610361)
      max: 40 (0.000610361)
      mean: 40 (0.000610361)
      median: 40 (0.000610361)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
    Meta channel[0]:
      min: 50  (0.000762951)
      max: 50 (0.000762951)
      mean: 50 (0.000762951)
      median: 50 (0.000762951)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
    Meta channel[1]:
      min: 60  (0.000915541)
      max: 60 (0.000915541)
      mean: 60 (0.000915541)
      median: 60 (0.000915541)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 0
  Image statistics:
    Overall:
      min: 10  (0.00015259)
      max: 60 (0.000915541)
      mean: 35 (0.000534066)
      median: 35 (0.000534066)
      standard deviation: 0 (0)
      kurtosis: -1.79762
      skewness: 4.44476e-15
      entropy: 0
  Total ink density: 0.15259%
  Colors: 1
  Histogram:
             1: (10,20,30,40) #000A0014001E0028 cmyk(0.0389105,0.077821,0.116732,0.155642)
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Matte color: grey74
  Background color: white
  Border color: srgb(223,223,223)
  Transparent color: black
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 1x1+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: None
  Orientation: TopLeft
  Properties:
    date:create: 2023-03-12T11:38:42+00:00
    date:modify: 2023-03-12T11:38:42+00:00
    date:timestamp: 2023-03-12T11:38:56+00:00
    signature: c51848f16d296f7c95be14404cc582f49db6fd33f31b544a2ce10e440b3747b3
    tiff:alpha: unspecified
    tiff:endian: lsb
    tiff:photometric: separated
    tiff:rows-per-strip: 1
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 306B
  Number pixels: 1

2つのメタチャネルに関連付けられたチャネル深度と統計に注目してください。

マルチスペクトル画像の操作

メタチャネルは、読み取り、書き込み、操作(たとえば、サイズ変更、ガンマ調整など)が可能な他のチャネルと同じように扱われます。ここでは、最初のチャネルをメタチャネルの内容で置き換えます。

magick multiMeta.tif -channel-fx 'meta1=>cyan' multiMeta-1.tif

元のシアンチャネルの強度は10です。チャネルFX命令に従い、現在は50です。

また、この例では、2つのメタチャネルを作成します。

magick lena.png \( mandril3.jpg -colorspace gray \) -channel-fx '| gray=>meta' \( zelda1.jpg -colorspace gray \) -channel-fx '| gray=>meta1' meta.tif

この例では、2つのメタチャネルを1つのアルファチャネルにブレンドします。

magick in.tiff -alpha opaque \( +clone -set colorspace sRGB -channel-fx "meta0=>red meta1=>green" \) -channel A -fx "(v.r+v.g)/2" +channel out.tiff

マルチスペクトル画像の書き込み

TIFFやPSDなど、メタチャネルをサポートする形式に書き込むことで、マルチスペクトル画像を保持できます。マルチスペクトル画像をサポートしない他の画像形式に書き込むと、チャネルは保持されず、代わりに失われます(たとえば、PNG)。この例では、マルチスペクトル画像を読み取り、サイズ変更し、書き込みます。

magick multiMeta.tif -resize 50% resizedMeta.tif