【问题标题】:How can I extract a line profile from an image?如何从图像中提取线条轮廓?
【发布时间】:2023-03-11 09:57:01
【问题描述】:

我正在尝试从衍射图案(二维图像)中提取线轮廓。

ROI 已知为 (x1,y1) 到 (x2,y2)。

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

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

只从衍射中提取线轮廓的脚本已经很有帮助了。

我认为 SliceN 最适合这个?

【问题讨论】:

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


    【解决方案1】:

    提取具有垂直平均的 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()
    

    将所有这些恢复为您需要的格式是一个迭代和数据插入的问题,您也可以使用切片命令来完成。


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

    【讨论】:

    • 非常感谢您的友好和准确的回答。按照您的脚本,我可以成功实现我的目的!再次感谢。 :)
    猜你喜欢
    • 2013-12-17
    • 2020-03-29
    • 1970-01-01
    • 2020-02-04
    • 2013-02-06
    • 2020-05-08
    • 2011-08-18
    • 2012-11-15
    • 2022-01-26
    相关资源
    最近更新 更多