マルチスペクトル画像とは、可視光スペクトルだけでなく、電磁スペクトルの複数のバンドを使用してキャプチャされた画像を指します。これは、紫外線から赤外線まで、より広い波長範囲にわたってデータをキャプチャすることを意味します。
複数のスペクトルバンドにわたってデータをキャプチャすることにより、マルチスペクトル画像は、組成、温度、植生の健全性など、画像化されているオブジェクトまたはシーンに関する追加情報を提供できます。この情報は、農業、環境モニタリング、災害対応、軍事監視など、幅広いアプリケーションに使用できます。
マルチスペクトル画像は、多くの場合、衛星、ドローン、または航空機に搭載された特殊なセンサーを使用してキャプチャされます。その後、データは専用ソフトウェアを使用して処理され、各スペクトルバンドでキャプチャされた情報を表示する画像が作成されます。
全体として、マルチスペクトル画像は、周囲の世界を分析および理解するための強力なツールを提供し、可視光画像だけでは得られない洞察を得ることができます。
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