将灰度通道合并为彩色合成

时间:2016-04-05 14:51:55

标签: image-processing

我想知道如何(在代码中)使用颜色查找表(LUT)将多个灰度图像合并为一个16位RGB彩色图像。

在ImageJ中,人们可以拍摄7个不同的16位灰度图像,并将它们的值合并为单个颜色合成。

ImageJ Merge Channels

对于有<= 3图像的情况,这是微不足道的,并且输入图像到颜色通道的所需映射是独占的。也就是说,如果我有三个16位灰度图像,我希望图像1为红色,2为蓝色,3为绿色,那么,我只需将相应的输出图像像素设置为{{1 }}

但是,在ImageJ中,可以选择合并三个以上的颜色通道,包括本身是R,G或B组合的颜色。可以选择具有以下所需输出颜色的五个灰度图像:

RGB(input1, input2, input3)

假设LUT映射输入(灰度)到输出(RGB)是:

Input image: desired color in output image
==
input 1: Red
input 2: Green
input 3: Blue
input 4: Magenta // Combination of R + B
input 5: Cyan // Combination of R + G

在输出图像中,是否应通过简单地平均所有有助于颜色通道的输入图像来创建合成?还是有更复杂的方法?我天真的做法是:

Red:     input -> (input, 0,     0    )
Green:   input -> (0,     input, 0    )
Blue:    input -> (0,     0,     input)
Magenta: input -> (input, 0,     input)
Cyan:    input -> (input, input, 0    )

我不确定使用正确的算法是为了像ImageJ那样混合颜色。事实上,代码在这里,但对我来说是难以理解的:https://github.com/imagej/ImageJA/blob/3ed2e1a1d785eda3c9dfdb330030aee968c242b8/src/main/java/ij/plugin/RGBStackMerge.java

提前感谢任何指针!

1 个答案:

答案 0 :(得分:0)

我通过玩弄它找到了答案 - 事实证明,ImageJ使用简单的颜色通道(带夹子),而不是平均它们。对输入中的R,G,B值进行平均会产生枯燥的值,而求和和钳位会产生明亮的值,这正是我所寻找的。

有关详情,请参阅此帖子:Algorithm for Additive Color Mixing for RGB Values