Как прочитать информацию о напряжении / энергии луча, режиме формирования изображения, дате / времени получения и т. Д. Из метаданных изображения?(Теги) - PullRequest
1 голос
/ 11 апреля 2019

Сценарий DM начинающий здесь, почти нет навыков программирования.

Я хотел бы знать команды для доступа ко всем метаданным изображений / спектров DM.

Я понял, что все мои изображения STEM при 80 кВ, сделанные между двумя датами (скажем, 02.11.2017-05.04.2019), имеют неправильную калибровку шкалы на один и тот же коэффициент (масштаб всех таких изображений необходимо умножить на 1,21) ,

Я хотел бы написать скрипт, который умножает значение масштаба на коэффициент только для изображений в режиме сканирования при 80 кВ, снятых в течение периода, для всех изображений в папке с подпапками или для всех изображений, открытых в DM, и сохраните новое значение шкалы.

Я проверил этот сайт http://digitalmicrograph -scripting.tavernmaker.de / other% 20resources / Old-DMHelp / AllFunctions.html , но нашел только способ вызова значения масштаба (ImageGetDimensionCalibration). У меня есть общее представление о том, как написать сценарий на основе других сценариев, если я узнаю, как вызывать метаданные.

Если кто-нибудь сможет написать для меня весь сценарий, я был бы очень признателен за ваши усилия.

1 Ответ

0 голосов
/ 11 апреля 2019

Все общие метаданные организованы в тег-структуру изображения

Это можно увидеть, открыв Информация об отображении изображения изображения.(Через меню или нажатием CTRL + D), а затем перейдите к разделу «Теги»:

Example of Image Tags

Вся информация справа теги изображений , и они организованы в иерархическое дерево.

Как выглядит это дерево и какая информация где написана, полностью открыто и будет зависеть от того, какую версию GMS вы используете, как настроено оборудование и т. Д. Кроме того, пользовательские сценарии могут изменять эту информацию.

Итак, для начала сценария откройте данные, которые вы хотите изменить, и посмотрите в это дерево.

Подсказка: Следующий min-скрипт может быть полезен.Он открывает окно просмотра тегов для самого переднего изображения, но в виде немодального диалога (то есть вы можете держать его открытым и взаимодействовать с другими частями):

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

Информация, с которой вам нужно проверить, это , наиболее вероятно , найденное в поддереве Microscope Info.Здесь обычно хранится вся информация, собранная с микроскопа во время сбора данных.Что там будет, будет зависеть от вашей системы и от того, как она настроена.

Информация о получении изображения STEM - что касается сканирующего механизма и детектора - составляет , наиболее вероятно в поддереве DigiScan.

Поддерево Data Bar обычно содержит дату и время создания и т. д.

Значения калибровки не сохраняются в тег-структуре изображения

То, что вы не найдете в этой структуре тегов, - это калибровка изображения , то есть значения, фактически используемые DM для отображения калиброванных значений.Эти значения «на один уровень вверх», так сказать здесь:

Example of calibration values

Это важно знать в следующем для вашего сценария, потому что вам понадобитсяразличные команды как для «метаданных» из тегов, так и для «калибровки», которую вы хотите изменить.

Доступ к метаданным по сценарию

Команды сценария, которые необходимо прочитатьвсе теги описаны в справочной документации F1 здесь:

F1 TagGroup

По сути, вам нужна команда, чтобы получить «корневую» группу тегов изображения, что составляет ImageGetTagGroup(), а затем вы проходите внутри этого дерева.Это может показаться странным - поскольку для разных типов хранимых тегов существует несколько слегка отличающихся команд, но основные биты просты:

  • Все «пути» в дереве - это только отдельные имена(набирается точно )
  • Для каждой «ветви» необходимо использовать одиночное двоеточие :
  • Все команды для установки / получения значения тега требуют каквведите «корневой» объект tagGroup и «путь» в виде строки.Команды get требуют переменной соответствующего типа для хранения значения, а команды set требуют значения, которое должно быть записано.= Команды get возвращают 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().

...