В Gwyddion реализовано несколько алгоритмов для работы с зёрнами. Прежде всего, можно использовать простые пороговые алгоритмы (порог по высоте, наклону и кривизне). Эти процедуры могут быть очень эффективны для анализа частиц (чтобы пометить частицы лежащие на ровной поверхности).
→ →
Выделение по порогу это основной метод выделения зёрен. В этом модуле реализованы пороги по высоте, наклону и кривизне. Результаты отдельных пороговых методов можно объединять вместе используя логические операторы.
→ →
Автоматический метод Оцу выделения зёрен по порогу классифицирует значения данных в два класса, минимизируя дисперсию внутри класса для обоих. Метод хорошо подходит для изображений, которые содержат два относительно хорошо определённых диапазона значений.
→ →
Другой вариант функции выделения зёрен основан на обнаружении краёв (локальной кривизне функции высоты). Изображение обрабатывается фильтром «разница гауссианов\quote> »
→ →
Зёрна, которые касаются границ изображения, можно удалить используя эту функцию. Это может быть полезно в том случае, когда эти зёрна нужно рассматривать как неполные и их нужно исключить из анализа. Некоторые другие функции, которые можно использовать для модификации формы зерён после их выделения, вызываются из инструмента Редактор маски.
→ →
Для более сложных структур данных эффективность пороговых алгоритмов может оказаться весьма плохой. Для этих данных выделение зёрен или частиц более эффективно можно проводить с помощью алгоритма водораздела.
Алгоритм водораздела обычно задействуется для определения локальных минимумов и разделения изображения на сегменты в обработке изображений. Поскольку проблема определения положения зёрен может сводиться к проблеме нахождения локальных экстремумов на поверхности, этот алгоритм также можно использовать для нужд разделения и выделения зёрен. Для удобства в дальнейшем мы будем считать данные инвертированными в направлении z при описании этого алгоритма (т.е. вершины зёрен формируют локальные минимумы в нижеследующем тексте). Мы применяем две стадии анализа зёрен (см. [1]):
Таким путём мы определяем положения отдельных зёрен и затем определяем объём, занятый каждым зерном по отдельности. Если нас интересуют на поверхности не зёрна (выпуклости), а долины (впадины), можно использовать параметр Инвертировать высоту.
→ →
Эта функция реализует другой подход, основанный на алгоритме водораздела, в данном случае классический алгоритм Винсента для водораздела в цифровых пространствах [2], который применяется к предобработанному изображению. В общем случае результатом будет изображение, полностью сегментированное на фрагменты, каждый пиксель либо принадлежит фрагменту, либо разделяет два соседних. По умолчанию алгоритм помечает впадины. Чтобы пометить направленные вверх зёрна, что встечается чаще на изображениях АСМ, можно использовать опцию Инвертировать высоту.
Для предобработки доступны следующие параметры:
Дисперсия гауссова сглаживающего фильтра, применяемого к изображению. Нулевое значение соответствует отсутствию сглаживания.
Относительный вес локального градиента, добавленного к данным. Большие значения соответствуют тому, что области с большими локальными уклонами будут стремиться стать границами зёрен.
Относительный вес локальной кривизны, добавленной к данным. Большие значения соответствуют тому, что локальные вогнутые области будут стремиться стать границами зёрен.
Относительный уровень высоты, выше которого пиксели никогда не присваиваются к любому из зёрен. Если не выставлено в 100%, эта настройка создаёт исключение для свойства полной сегментации.
Относительный уровень высоты, до которого поверхность предзаполняется, затирая любые детали на дне глубоких впадин.
Относительный уровень высоты, до которого поверхность предзаполняется из каждого локального минимума, затирая любые детали на дне впадин.
→ →
Для того, чтобы перенести сегментацию с одного изображения на другое похожее, или с более мелкого фрагмента на полное большое изображение можно использовать модуль логистической регрессии. У модуля есть два режима работы, в режиме обучения ему нужна маска зёрен, которая должна присутствовать на изображении, и он обучает логистическую регрессию для этой маски. После обучения можно использовать этот модуль для выделения зёрен на новых изображениях. В обоих режимах работы модуль создаёт вектор признаков для каждой точки из точек текущего изображения, применяя к нему набор различных фильтров. На данный момент доступны следующие признаки:
Гауссовы фильтры с длиной в 2, 4, 8 и т.д. пикселей. Число гауссовых фильтров может быть выбрано с помощью опции Число гауссиан.
Фильтры первых производных Собеля для направлений X и Y.
Оператор Лапласа (суммы вторых производных).
три элемента матрицы вторых производных Гесса, по одной, реализующей двойное дифференцирование по направлениям X и Y и один со смешанной производной (поскольку диагональные элементы должны быть равны в данном случае).
Все фильтры производных если их выбрать применяются как к оригинальному изображению, так и к каждому из уровней сглаживания гауссовыми фильтрами, если они включены. Каждый из слоёв признаков считается с помощью оператора свёртки и после этого нормализуется.
Параметр регуляризации позволяет регуляризовать логистическую регрессию, большее значение означает, что параметры регрессии более ограничены и не могут принимать очень большие значения.
Следует отметить, что для начала обучения необходима маска интересующих особенностей (зёрен) на исходном изображении, или в результате обучения получится нулевой результат. Фаза обучения может быть очень медленной и требовательной к памяти, особенно для больших изображений и большого числа признаков. Результаты обучения сохраняются между вызовами функции и могут применяться к новым изображениям. Если набор признаков меняется, то необходимо обучать регрессию заново с нуля.
Свойства зёрен можно изучать с помощью нескольких функций. Простейшей из них является сводная информация о зёрнах
→ →
Эта функция рассчитывает общее число помеченных зёрен, их общую площадь (площадь проекции) как в виде абсолютного значения, так и в виде доли общей площади поля данных, общий объём зёрен, общую длину границ зёрен, среднюю площадь и сторону эквивалентного квадрата для отдельного зерна. Средний размер рассчитывается усреднением стороны эквивалентного квадрата, и его квадрат в общем случае не будет равным средней площади.
Общие характеристики области под маской могут быть получены с помощью инструмента «статистические величины» когда включена опция Использовать маску. Если инвертировать маску та же информация может быть получена об областях вне зёрен.
→ →
Функция статистики зёрен показывает среднее, срединное, стандартное отклонение (среднеквадратичное) и межквартильный диапазон для всех доступных свойств зёрен в одной таблице.
→ →
Распределения зёрен является наиболее мощным и сложным инструментом. Он работает в двух режимах: построение графиков и экспорт необработанных данных. В режиме построения графиков выбранные характеристики отдельных зёрен, рассчитываются, собираются, и строятся в виде суммарных графиков, показывающих их распределения.
Экспорт необработанных данных полезен для экспертов, которым нужно, например, рассчитывать корреляцию характеристик отдельных зёрен. В этом режиме выбранные характеристики зёрен рассчитываются и записываются в виде таблицы в текстовый файл, где каждая строка соответствует отдельному зерну, а столбцы соответствуют выбранным величинам. Порядок следования столбцов тот же, что и порядок следования величин в диалоговом окне; все величины записывается в единицах измерения СИ, что является общепринятым в Gwyddion.
→ →
Корреляция зёрен строит график одной выбранной величины зёрен как функцию другой величины, показывая корреляции между ними.
Инструмент измерения зёрен является интерактивным способом получения той же информации об отдельных зёрнах, что и Распределения зёрен в режиме экспорта необработанных данных. После выбора зерна мышью в окне данных, все доступные величины показываются в окне инструмента.
Помимо физических характеристик, этот инструмент также показывает номер зерна. Номера зёрен соответствуют номерам строк (начиная с 1) в файлах, экспортированных инструментом распределений зёрен.
Инструменты распределений зёрен и измерения зёрен могут рассчитывать следующие свойства зёрен:
Длина границы зерна оценивается путём суммирования оценочного вклада каждой комбинации из четырёх точек границы. Вклады показаны на следующем рисунке для каждого вида конфигурации, где hx и hy - размеры пикселей вдоль соответствующих осей и h - длина диагонали пикселя:
Вклады соответствуют один в один длинам сегментов границы многоугольника, которым аппроксимируется форма зерна. Построение эквивалентной формы многоугольника также показано на этом рисунке.
Объём зерна после вычета основания, оценивается как объём точно такой же фигуры, верхняя поверхность которой использовалась для расчёта площади поверхности. Следует отметить, что для объёма, ограниченного многогранником, метод эквивалентен классическому двумерному методу интегрирования с помощью трапеций. Однако, мы рассчитываем объём под маской с центрами на гранях фигуры, поэтому их вклад в интеграл распределён иначе, как показано на рисунке ниже.
Относящиеся к кривизне значения для отдельных зёрен считаются так же, как и общая кривизна, рассчитываемая функцией Кривизна. См. описание функции для более подробной информации.
Вписанные диски и описанные окружности зёрен можно визуализировать используя функции → → и → → . Эти функции создают круговые выделенные области, представляющие соответствующие диски или окружности для каждого зерна. которые затем можно показать с помощью инструмента Менеджер выделенных областей.
Диаметр Мартина это длина особой линии, проходящей через зерно в заданном направлении, которая делит площадь зерна на две равные части (срединная линия). Эта величина в основном полезна для зёрен которые являются более или менее выпуклыми. Для справки мы должны отметить, что если зерно является сильно не-выпуклым и срединная линия пересекает его несколько раз, Gwyddion суммирует длины сегментов, которые лежат внутри зерна (другим вариантом могло бы быть просто взять расстояние между первым и последним пересечением).
Помеченные зёрна можно фильтровать по порогу любой из доступных для зёрен величин используя меню
→ → . Этот модуль можно использовать для основных операций, таких как удаление слишком мелких зёрен используя порог площади в пикселях, а также для сложной фильтрации, использующей логические операции над несколькими величинами, относящимися к параметрам зёрен.Фильтр сохраняет зёрна, которые удовлетворяют условию, заданному как Оставлять зёрна, удовлетворяющие и удаляет все остальные. Условие задаётся как логическое выражение, содержащее от одного до трёх пороговых условий, обозначенных как A
, B
и C
. Простейшее условие это просто A
, означающее, что величина A
должна лежать между заданными порогами.
Каждое условие состоит из верхнего и нижнего порога для одной величины, относящейся к зёрнам, например, площади в пикселях или значению минимума. Значения должны лежать в диапазоне [нижний,верхний] чтобы удовлетворить условию и тем самым сохранить это зерно. Следует отметить, что можно выбрать нижний порог больше верхнего. В этом случае условие инвертируется, т.е. зерно сохраняется если значение лежит вне диапазона [нижний,верхний].
Отдельные величины для зёрен присваиваются A
, B
и C
выбором величины из списка и нажатием на соответствующую кнопку в Установить выбранное как. Текущий выбранный набор величин показан в заголовках Условие A, Условие B и Условие C.
→ →
Когда изображения с выделенными зёрнами в дальнейшем обрабатываются в другом программном обеспечении, может оказаться полезным в явном виде определь какой номер зерна присвоен какой области в Gwyddion. Эта функция создаёт избражение, где каждый пиксель содержит соответствующий номер зерна. Следовательно, хотя данные при этом по прежнему будут представлены вещественными числами, они будут на самом деле целыми.
Зёрна можно выровнять по вертикали используя функцию
→ → . Эта функция сдвигает каждое зерно таким образом, чтобы сделать одну из связанных с высотой величин всех зёрен одинаковой. Обычно выравниваются минимальные значения внутри зерна, но возможны другие варианты.Данные между зёрнами также сдвигаются по вертикали. Эти сдвиги интерполируются из сдвигов зёрен используя уравнение Лапласа, что приводит к плавным переходам сдвигов между зёрнами (хотя и не принимая во внимания другие особенности поверхности).
[1] P. Klapetek, I. Ohlídal, D. Franta, A. Montaigne-Ramil, A. Bonanni, D. Stifter, H. Sitter: Atomic force microscopy characterization of ZnTe epitaxial films. Acta Physica Slovaca 53 (2003) 223–230, doi:10.1143/JJAP.42.4706
[2] Luc Vincent and Pierre Soille: Watersheds in digital spaces: an efficient algorithm based on immersion simulations. IEEE Transactions on Pattern Analysis and Machine Intelligence, 13 (1991) 583–598, doi:10.1109/34.87344