2

我想通过脚本在 Digital Micrograph 中叠加 2 个(或更多)RGB 图像。

与一些可以通过对强度求和来合并的没有颜色的真实图像不同,RGB 图像应该以另一种方式合并,但我不知道。

感谢您的帮助!

4

2 回答 2

2

您可以像普通图像一样对 RGB 图像进行求和,但您的问题是您需要定义“叠加”的含义。

RGB 图像是三元组,为 RED、GREEN、BLUE 三个通道中的每一个都保存一个值,这些值在 [0 到 255] 之间进行裁剪。

“求和”RGB 图像将再次给您一个三元组,但任何大于 255 的值都会被截断为 255,因此您将越来越多地转向图像中的“白色”。

您可以将“叠加”定义为平均值,但是“叠加”的效果会越来越接近“平均灰度”。

或者您可以将“覆盖”定义为相关通道的“最大值”或“最小值”。

或者,或者,或者……

当您想到“叠加”RGB 图像时,想到其他图形程序(例如 Photoshop)会很有帮助,它们可以让您组合“图层”。通常这些程序为您提供多个选项(“叠加、屏幕、变亮、变暗,您可以命名...”),它们都定义了第一层的三个颜色值和第二层的三个颜色值之间的不同数学关系。

执行此数学运算所需的命令是RGB( )RED( )GREEN( )BLUE( )以及简单的数学运算。请参阅示例:

image img1r := RealImage("Red 1",4,256,256)
image img1g := RealImage("Green 1",4,256,256)
image img1b := RealImage("Blue 1",4,256,256)

img1r = icol/iwidth * 256
img1b = iradius/iwidth * 256
img1g = irow/iwidth * 256

RGBImage img1 = RGB(img1r,img1g,img1b)
img1.Setname( "Image 1 (RGB)")

image img2r := RealImage("Red 2",4,256,256)
image img2g := RealImage("Green 2",4,256,256)
image img2b := RealImage("Blue 2",4,256,256)

img2r = (icol%10)<5 ? 256 : 100
img2g = (irow%10)<5 ? 256 : 100
img2b = (iradius%10)<5 ? 256 : 100
RGBImage img2 = RGB(img2r,img2g,img2b)
img2.Setname( "Image 2 (RGB)")

image sumImg = img1 + img2
sumImg.SetName( "SUM" )

image avImg = (img1 + img2)/2
avImg.SetName( "AVERAGE" )

image maxImg = RGB( max(red(img1),red(img2)), max(green(img1),green(img2)), max(blue(img1),blue(img2)))
maxImg.SetName( "Channel MAX" )

image minImg = RGB( min(red(img1),red(img2)), min(green(img1),green(img2)), min(blue(img1),blue(img2)))
minImg.SetName( "Channel MIN" )


// Arrange display
EGUPerformActionWithAllShownImages( "delete" )

minImg.ShowImage()
maxImg.ShowImage()
avImg.ShowImage()
sumImg.ShowImage()
img2.ShowImage()
img1.ShowImage()

TagGroup layout = SLMCreateGridLayout( 2 , 3 )
EGUArrangeAllShownImagesInLayout( layout )

输出


还应注意,某些“叠加”组合不是基于红/绿/蓝 ( RGB ) 颜色模型,而是基于替代色相/饱和度/亮度 ( HSB ) 颜色模型。

DigitalMicrograph 脚本本身仅支持 RGB,但您可以自己计算。

您可能还会发现查看 Gatan脚本示例站点上的示例脚本“ Display as HSB.s ”很有用。

于 2016-06-03T10:10:44.153 回答
1

您可以使用安装在大多数 Linux 发行版上并且可用于 OSX 和 Windows的ImageMagick非常简单地编写图像合并脚本。

由于您没有提供任何示例图片,因此我制作了几张 -image1.png就像image2.png这样:

在此处输入图像描述 在此处输入图像描述

现在,有很多混合模式可用 - 一些更常见的模式是LightenDarkenOverlayBlend。因此,让我们在终端的命令行中尝试一些:

convert image1.png image2.png -compose darken -composite result.png

在此处输入图像描述

convert image1.png image2.png -compose lighten -composite result.png

在此处输入图像描述

convert image1.png image2.png -compose overlay -composite result.png

在此处输入图像描述

选项是无穷无尽的——你可以像这样获得 ImageMagick 中可用的混合模式列表:

identity -list compose

输出

Atop
Blend
Blur
Bumpmap
ChangeMask
Clear
ColorBurn
ColorDodge
Colorize
CopyBlack
CopyBlue
CopyCyan
CopyGreen
Copy
CopyMagenta
CopyOpacity
CopyRed
CopyYellow
Darken
DarkenIntensity
DivideDst
DivideSrc
Dst
Difference
Displace
Dissolve
Distort
DstAtop
DstIn
DstOut
DstOver
Exclusion
HardLight
HardMix
Hue
In
Lighten
LightenIntensity
LinearBurn
LinearDodge
LinearLight
Luminize
Mathematics
MinusDst
MinusSrc
Modulate
ModulusAdd
ModulusSubtract
Multiply
None
Out
Overlay
Over
PegtopLight
PinLight
Plus
Replace
Saturate
Screen
SoftLight
Src
SrcAtop
SrcIn
SrcOut
SrcOver
VividLight
Xor

以下是所有选项:

在此处输入图像描述

于 2016-06-03T11:11:23.380 回答