Tags 如何从图像元数据中读取电压/光束能量、成像模式、采集日期/时间戳等信息?(标签)

Tags 如何从图像元数据中读取电压/光束能量、成像模式、采集日期/时间戳等信息?(标签),tags,metadata,dm-script,Tags,Metadata,Dm Script,这里是DM脚本初学者,几乎没有编程技能 我想知道访问DM images/spectra所有元数据的命令。 我意识到,在两个日期(比如2017年11月2日至2019年4月5日)之间拍摄的80 kV下的所有STEM图像的比例校准错误系数相同(所有此类图像的比例需要乘以1.21) 我想写一个脚本,它将比例值乘以一个系数,仅用于在一段时间内以80千伏扫描模式拍摄的图像,用于文件夹中包含子文件夹的所有图像,或用于在DM中打开的所有图像,并保存新的比例值 我查看了这个网站,但只找到了如何调用刻度值(Imag

这里是DM脚本初学者,几乎没有编程技能

我想知道访问DM images/spectra所有元数据的命令。 我意识到,在两个日期(比如2017年11月2日至2019年4月5日)之间拍摄的80 kV下的所有STEM图像的比例校准错误系数相同(所有此类图像的比例需要乘以1.21)

我想写一个脚本,它将比例值乘以一个系数,仅用于在一段时间内以80千伏扫描模式拍摄的图像,用于文件夹中包含子文件夹的所有图像,或用于在DM中打开的所有图像,并保存新的比例值

我查看了这个网站,但只找到了如何调用刻度值(ImageGetDimensionCalibration)。如果我知道如何调用元数据,我就知道如何基于其他脚本编写脚本

如果有人能为我编写整个脚本,我将非常感谢您的努力。

所有常规元数据都是以图像标记结构组织的 如果打开图像的图像显示信息,可以看到这一点。(通过菜单,或按CTRL+D键),然后浏览到“标签”部分:

右边的所有信息都是图像标签,它们被组织在一个层次树中

此树的外观以及在何处写入的信息是完全开放的,取决于您使用的GMS版本、硬件配置等。自定义脚本也可能会更改此信息

因此,要开始编写脚本,请打开要修改的数据并查看此树

提示:以下min脚本可能很有用。它为最前面的图像打开一个标签浏览窗口,但作为一个无模式对话框(即,您可以保持打开状态并与其他部分交互):

GetFrontImage().ImageGetTagGroup().TagGroupOpenBrowserWindow(0)

您需要检查的信息很可能在
显微镜信息
子树中找到。在这里,通常存储采集期间从显微镜收集的所有信息。有什么,将取决于您的系统和它是如何设置的

就扫描引擎和探测器而言,STEM图像采集的信息很可能位于
DigiScan
子树中

数据栏
子树通常包含创建日期和时间等

校准值不存储在图像标签结构中 在该标签结构中,您不会发现图像校准,即DM实际用于显示校准值的值。这些值在这里可以说是“上一级”:

在下面的脚本中了解这一点很重要,因为您需要为标记中的“元数据”和要更改的“校准”使用不同的命令

通过脚本访问元数据 F1帮助文档中描述了需要从标记中读取的脚本命令:

本质上,您需要一个命令来获取图像的“根”标记组,即
ImageGetTagGroup()
,然后在该树中遍历。 这似乎令人困惑——因为对于不同类型的存储标签,有许多稍有不同的命令——但基本的部分很简单:

  • 通过树的所有“路径”都只是单个名称(精确键入)
  • 对于每个“分支”,必须使用单个冒号
  • 设置/获取标记值的命令都需要输入“root”标记组对象和字符串形式的“path”。get命令需要匹配类型的变量来存储值,set命令需要应该写入的值。 =get命令themeselves返回true或false,具体取决于是否可以找到标记路径以及是否可以读取该值
因此,下面的脚本将从如上示例所示的图像标记中读取“成像模式”:

string mode
GetFrontImage().ImageGetTagGroup().TagGroupGetTagAsString( "Microscope Info:Imaging Mode", mode )
OKDialog( "Mode: " + mode )
以更详细的形式:

string mode // variable to hold the value
image img   // variable for the image
string path // variable/constant to specify the where
TagGroup tg // variable to hold the "tagGroup" object

img := GetFrontImage()                  // Use the selected image
tg = img.ImageGetTagGroup()             // From the image get the tags (root)
path = "Microscope Info:Imaging Mode"   // specify the path

if ( tg.TagGroupGetTagAsString( path, mode ) )
    OKDialog( "Mode: " + mode )
else
    Throw( "Tag not found" )
如果标记不是字符串而是值,则需要相应的命令,即。
TagGroupGetTagAsNumber()

所有常规元数据都组织在图像标记结构中 如果打开图像的图像显示信息,可以看到这一点。(通过菜单,或按CTRL+D键),然后浏览到“标签”部分:

右边的所有信息都是图像标签,它们被组织在一个层次树中

此树的外观以及在何处写入的信息是完全开放的,取决于您使用的GMS版本、硬件配置等。自定义脚本也可能会更改此信息

因此,要开始编写脚本,请打开要修改的数据并查看此树

提示:以下min脚本可能很有用。它为最前面的图像打开一个标签浏览窗口,但作为一个无模式对话框(即,您可以保持打开状态并与其他部分交互):

GetFrontImage().ImageGetTagGroup().TagGroupOpenBrowserWindow(0)

您需要检查的信息很可能在
显微镜信息
子树中找到。在这里,通常存储采集期间从显微镜收集的所有信息。有什么,将取决于您的系统和它是如何设置的

就扫描引擎和探测器而言,STEM图像采集的信息很可能位于
DigiScan
子树中

数据栏
子树通常包含创建日期和时间等

校准值不存储在图像标签结构中 在该标签结构中,您不会发现图像校准,即DM实际用于显示校准值的值。这些值在这里可以说是“上一级”: