我想知道如何(在代码中)使用颜色查找表(LUT)将多个灰度图像合并为一个16位RGB彩色图像。
在ImageJ中,人们可以拍摄7个不同的16位灰度图像,并将它们的值合并为单个颜色合成。
对于有<= 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
提前感谢任何指针!
答案 0 :(得分:0)
我通过玩弄它找到了答案 - 事实证明,ImageJ使用简单的颜色通道(带夹子),而不是平均它们。对输入中的R,G,B值进行平均会产生枯燥的值,而求和和钳位会产生明亮的值,这正是我所寻找的。 p>
有关详情,请参阅此帖子:Algorithm for Additive Color Mixing for RGB Values