2

在 DigitalMicrograph 中,我有一个大小为 [X x Y x Z] 的 3D 数据立方体,我想在 X/Y 位置提取单个光谱。我知道我可以通过两个对角 (x1/y1/z1) 和 (x2/y2/z2) 来处理子卷。但是当我在下面的脚本中执行此操作时,我只得到一个带有单个值的 LinePlot 显示。我究竟做错了什么 ?

number px = 5
number py = 3

image SIblock := GetFrontImage()
number sx, sy, sz
Get3DSize( SIblock, sx, sy, sz )
image spec = SIblock[ px, py, 0, px+1, py+1, sz ]

ShowImage( spec )
4

1 回答 1

1

您的解决方案解决了卷的右侧部分,但作为 [1 x 1 x sz] 图像。您可以旋转图像,但更好的解决方案是使用slice1()命令直接访问一维子卷,如以下修改后的脚本所示:

number px = 5
number py = 3
image SIblock := GetFrontImage()
number sx, sy, sz
Get3DSize( SIblock, sx, sy, sz )
image spec := Slice1( SIblock, px,py,0,  2,sz,1 )
image specCopy := ImageClone( spec )
ShowImage( specCopy )

该命令有 7 个参数:源图像(任意维度)、体积的起始坐标为 x/y/z 以及描述采样的三元组:方向(0=x 1=y 2=z)、数量朝那个方向迈出一步和一个步长。

请注意,我的脚本也使用了image spec :=而不是image spec =. 不同之处在于,它在分配右侧=时复制值(并创建新图像) 。spec只是SIblock相同内存空间的另一个名称。更改spec的值将更改SIblock的相应子卷。因此,我的脚本使用命令ImageClone()创建另一个图像specCopy以真正创建一个单独的“提取”图像。:=

于 2014-10-09T19:30:08.817 回答