多光谱图像指的是使用电磁频谱的多个波段捕获的图像,而不仅仅是可见光谱。这意味着它们捕获更广泛波长范围内的数据,从紫外线到红外线。
通过捕获多个光谱波段的数据,多光谱图像可以提供有关被成像物体或场景的更多信息,例如它们的成分、温度和植被健康状况。这些信息可用于广泛的应用,包括农业、环境监测、灾难响应和军事监视。
多光谱图像通常使用卫星、无人机或飞机上的专用传感器捕获。然后使用专门的软件处理数据,以创建显示每个光谱波段中捕获信息的图像。
总的来说,多光谱图像为分析和理解我们周围的世界提供了一个强大的工具,使我们能够获得仅使用可见光图像无法获得的见解。
ImageMagick 中的多光谱支持
ImageMagick 支持多光谱图像,其中所有通道都与原始图像具有相同的尺寸和像素数量。但是,并非所有图像格式都支持多光谱图像。PSD、TIFF、MIFF、MPC 和 FTXT 完全支持最多 31 个波段和 21 个元通道的多光谱图像。如果您使用配置脚本 --enable-64bit-channel-masks 选项构建 ImageMagick,则可以处理最多 52 个元通道的 62 波段多光谱图像。
我们将标准 RGB(A) 或 CMYK(A) 通道之外的图像通道称为“元”通道。我们将它们标记为“meta”、“meta1”、“meta2”等。元通道与任何其他通道的处理方式相同,这意味着它们可以被读取、写入和操作——例如,调整大小、调整伽马等。
创建多光谱图像
从多光谱图像开始,通常以 TIFF 或 PSD 格式。如果您没有,可以创建自己的。在我们的示例中,我们创建了一个带有两个元通道的单个 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
注意与这两个元通道相关的通道深度和统计信息。
使用多光谱图像
元通道与任何其他通道的处理方式相同,这意味着它们可以被读取、写入和操作——例如,调整大小、调整伽马等。在这里,我们用元通道的内容替换第一个通道
magick multiMeta.tif -channel-fx 'meta1=>cyan' multiMeta-1.tif
原始青色通道的强度为 10。现在,根据通道 FX 指令,为 50。
在这个例子中,我们创建了两个元通道
magick lena.png \( mandril3.jpg -colorspace gray \) -channel-fx '| gray=>meta' \( zelda1.jpg -colorspace gray \) -channel-fx '| gray=>meta1' meta.tif
在这个例子中,我们将两个元通道混合到一个 alpha 通道中
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