如何从图像中提取线条轮廓?

时间:2018-04-05 04:34:17

标签: image-processing multidimensional-array extraction dm-script

我试图从衍射图案(2D图像)中提取线条轮廓。

ROI被称为(x1,y1)到(x2,y2)。

我的挑战是在原始来源上执行此操作,该原始来源是4D图像(扫描的真实空间)x(差异图像)

然后将其转换为3D (扫描的真实空间)x(线条轮廓)数据。

只从衍射中提取lineprofile的脚本已经很有帮助。

我认为SliceN会是最好的吗?

1 个答案:

答案 0 :(得分:0)

使用垂直平均值提取2D图像的Lineprofile的脚本命令为LiveProfile_ExtractLineProfile,以下示例适用于2D衍射图案:

image DPImg := GetFrontImage()
number kx1 = 77 
number ky1 = 77
number kx2 = 175
number ky2 = 175
number pWidth = 10
image profile := LiveProfile_ExtractLineProfile(DPImg,kx1,ky1,kx2,ky2,pwidth)
profile.ShowImage()

如果您有4D堆栈,那么您需要使用SliceN命令来访问相应的"平面"或指定X / Y处的衍射图案。以下脚本可以这样做:

image DPStack := GetFrontImage()
number sx = DPStack.ImageGetDimensionSize(0) 
number sy = DPStack.ImageGetDimensionSize(1)
number ksx = DPStack.ImageGetDimensionSize(2)
number ksy = DPStack.ImageGetDimensionSize(3)
number px = sx/2
number py = sy/2
image DPImg := DPStack.SliceN( 4,2, px,py,0,0, 2,ksx,1, 3,ksy,1 )
number kx1 = 77 
number ky1 = 77
number kx2 = 175
number ky2 = 175
number pWidth = 10
image profile := LiveProfile_ExtractLineProfile(DPImg,kx1,ky1,kx2,ky2,pwidth)
profile.ShowImage()

将所有这些放回到您需要的格式中,是迭代和数据插入的问题,您也可以使用切片命令。

注意:example script中的以下DM Scripting database也可能对您有用。