gpt4 book ai didi

image-processing - 将 STEM 数据立方体乘以图像

转载 作者:行者123 更新时间:2023-12-02 02:52:25 26 4
gpt4 key购买 nike

我想将 EELS 数据立方体的强度与厚度图相乘。我尝试使用简单的数学命令,但我只获得了第一个切片的结果。我认为计算就像执行 Result(x,y,E) = SI(x,y,E) * Thickness(x,y) 并在 x 和 y 上循环一样简单,但是我不知道如何使用 DM 脚本执行此操作。谢谢问候

最佳答案

有多种方法可以做到这一点。以下脚本为下面创建了两个测试图像:

Image SIStack := RealImage( "Stack", 4, 32,32,64)
SIStack = iplane + 1 + random()
Image Map2D := RealImage( "Map", 4, 32, 32 )
Map2D = iradius * sin( irow/iwidth * pi() * 4 )

SIStack.ShowImage()
Map2D.ShowImage()

变体 1

要将两者相乘,您确实可以使用与您所写内容非常相似的表达式。内部变量 icolirowiplane (或更一般的 iindex(n) )被相应的替换X、Y 和 Z 的像素索引(请注意,第一个索引从 0 开始!)。您可以将它们用作表达式中的“运行变量”。所以下面会做你想做的事:

Image ResultStack := RealImage( "RStack", 4, 32,32,64)
ResultStack = SIStack[icol,irow,iplane] * Map2D[icol,irow]
ResultStack.ShowImage()

上面是你的等式的 1:1 翻译,我把它打出来是为了让它更清楚。请注意,在这种类型的表达式中,至少有一部分需要是“静态”大小,即不被索引。这将定义 icol/irow/iplane 索引将运行的范围。在上面的例子中,左边的 ResultStack 提供了这个,所以 icol0size-x of ResultStack minus 1

顺便说一句:如果 Map2D 小于运行变量,这甚至可以工作!任何“越界”的索引都将被视为最后一个可用索引,本质上是外推“边界”值。

现在上面的脚本可以写得更紧凑(并且没有附加的'ResultsStack'):

SIStack *= Map2D[icol,irow]

变体 2

您还可以在 z 维度上使用切片和迭代:

for( number i = 0; i<64; i++ )
SIStack.Slice2(0,0,i, 0,32,1 ,1,32,1 ) *= Map2D

有关任一变体的更多详细信息,您可能需要查看 this answer

关于image-processing - 将 STEM 数据立方体乘以图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com