Color Modes

多光谱图像

多光谱图像指的是使用电磁频谱的多个波段捕获的图像,而不仅仅是可见光谱。这意味着它们捕获更广泛波长范围内的数据,从紫外线到红外线。

通过捕获多个光谱波段的数据,多光谱图像可以提供有关被成像物体或场景的更多信息,例如它们的成分、温度和植被健康状况。这些信息可用于广泛的应用,包括农业、环境监测、灾难响应和军事监视。

多光谱图像通常使用卫星、无人机或飞机上的专用传感器捕获。然后使用专门的软件处理数据,以创建显示每个光谱波段中捕获信息的图像。

总的来说,多光谱图像为分析和理解我们周围的世界提供了一个强大的工具,使我们能够获得仅使用可见光图像无法获得的见解。

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