我正在使用ImageMagick 6.8,并且以文本格式创建了LUT颜色表:
# ImageMagick pixel enumeration: 848,1,255,srgb
0,0: (0 , 0 , 0 ) #000000
1,0: (226, 226, 224) #E2E2E0
2,0: (48 , 74 , 0 ) #304A00
# ...
# few hundred more colors
每个灰度值只有一种颜色(在我的用例中介于0和848之间)。
因此,我想使用此LUT将灰度图像转换为RGB图像,而没有任何花哨的伽玛校正,色彩空间重映射,插值等。只需直接替换即可。怎么做?
当前问题从头开始:
尝试使用各种选项进行convert lut.txt lut.png
总是给我比实际更多的颜色。在LUT中,有540种独特的颜色,但检查生成的PNG,甚至检查identify lut.txt
报告615!这意味着LUT根本无法直接解释。
另一方面,即使我成功地正确读取了LUT,或者可能避免将其转换为PNG,也会出现另一个问题。使用-clut
将整个灰度范围(0-65535)映射到LUT,所以我想我必须先对其进行归一化。但这从一开始就破坏了灰度输入。
P.S。如果存在大于8位索引调色板的图像格式,这可能是一个有用的答案。然后,将文本LUT用作其调色板,并将灰度光栅用作其像素值。
在Imagemagick中,使用-clut处理带有彩色查找表图像的灰度图像以使灰度图像着色。
首先创建一个具有红色,绿色和蓝色十六进制颜色的三色颜色表LUT图像。我显示了放大的版本。
convert xc:"#ff0000" xc:"#00ff00" xc:"#0000ff" +append colortable.gif
这里是输入-我将为之着色的简单渐变。
现在使用-clut将颜色表图像应用于渐变。
convert gradient.png colortable.gif -clut gradient_colored.png
默认为线性插值。但是,如果您只想查看3种颜色,请使用-interpolate nearest-neighbor
。
convert gradient.png colortable.gif -interpolate nearest-neighbor -clut gradient_colored2.png