如何从3D光谱图像中提取光谱

时间:2014-10-09 10:07:55

标签: image-processing dm-script

在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 )

1 个答案:

答案 0 :(得分:1)

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

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 ,以真正创建一个单独的“提取”图像。