Перейти к основному содержанию
Разработчик и производитель передового оборудования для получения изображений
пятница, 9 октября 2026

Статья

Ветвление в графе Альтрон: сохранение, усреднение и отображение одновременно

Рахни

Допустим, в лаборатории под камерой несколько часов находится образец. Вы хотите видеть на мониторе плавное изображение с низким уровнем шума, сохранять все необработанные данные для последующего анализа и отдельно делать снимок каждые несколько секунд для отчёта. Это три задачи для одной камеры. В Альтрон это решается ветвлением графа.

Разделение пути данных на несколько ветвей в редакторе графов Альтрон
Разделение пути данных на несколько ветвей в редакторе графов Альтрон

Что означает ветвление?

Каждый граф Альтрон состоит из узлов, соединённых связями. Во главе цепочки — камера. Далее идёт обработка, а в конце — узлы хранения и отображения. Выход узла не обязан вести только к одному узлу. От выхода одного узла можно провести несколько связей, и каждая создаёт отдельную ветвь.

Ветвление не копирует данные, а лишь делает их общими. Поэтому добавление ветви отображения или сохранения не требует дополнительной памяти.

Где разместить точку ветвления?

Это самое важное решение. Каждая ветвь получает ровно те данные, которые проходят в точке ветвления. Несколько простых правил:

  • Ответвляйте ветвь, сохраняющую данные для анализа, после физических коррекций сенсора, таких как уровень чёрного, коррекция темнового сигнала и коррекция по белому. Но эта ветвь должна идти до косметических изменений, например гаммы.
  • Сглаживание и повышение резкости, предназначенные только для глаза, размещайте в ветви отображения, чтобы сохраняемые данные оставались нетронутыми.
  • Если вашей собственной программе нужно брать данные из середины пути, подключите в этой точке узел Data Holder. Этот узел не изменяет данные, а лишь хранит их копию для внешнего кода.

Пример: сохранение, усреднение и отображение одновременно

Соберите такую структуру в Tools › Flow Graph Editor:

  1. Сначала разместите камеру, затем базовые коррекции, например коррекцию темнового сигнала и по белому с помощью узла Correction.
  2. От выхода последней коррекции проведите первую связь к узлу сохранения необработанных данных. Эта ветвь сохраняет всё полностью.
  3. Вторую связь проведите к узлу Smoothing со ступенью Continuous Average, а его выход подайте на дисплей. Эта ветвь показывает плавное усреднённое изображение.
  4. Третью связь подключите напрямую к другому дисплею, чтобы видеть и живые неусреднённые данные.
  5. Сохраните граф и нажмите Recreate All в основной программе. Изменения не вступят в силу, пока цепочка не будет перестроена.

Ветвь, сохраняющая данные лишь раз в несколько секунд

Для периодических снимков поставьте в начало ветви узел ImagingInterval и подключите после него узел сохранения. У него три режима:

  • Every T seconds: Каждые T секунд пропускается один кадр или строка. По умолчанию — 5 секунд. Этот режим подходит для покадровой (time-lapse) записи.
  • Every N items: Пропускается один из каждых N кадров или строк. Например, при контроле вы берёте одну пробу из каждых десяти деталей.
  • Max rate (per second): В секунду пропускается не больше заданного числа, через равные промежутки. Этот режим служит для облегчения обработки и отображения.

Обязательно проверьте опцию Apply to saving too. Если она отмечена, узлы сохранения после этого узла записывают только прошедшие выборки, и вы получаете покадровую запись. Если не отмечена, прореживание лишь облегчает обработку и отображение после узла, а узлы сохранения игнорируют его выход. В этом случае, пока узел сохранения на той же камере ведёт запись, узел пропускает все данные, чтобы ничего не было потеряно из записи.

Среди графов Альтрон по умолчанию есть и готовый пример Default_AreaScan_Color_Usb3+ImagingIntervalForDataSaving, с которого можно начать.

Типичные ошибки

  • Гамма или повышение резкости размещены до точки ответвления ветви сохранения, а потом возникает вопрос, почему сохранённые данные не совпадают с измерениями.
  • Забыли нажать Recreate All после изменения графа.
  • Тяжёлая ветвь отображения замедляет всю цепочку. Посмотрите на вкладке Performance, какой узел занимает наибольшую долю CPU, и поставьте перед ним ImagingInterval в режиме Max rate.

Полезная привычка

Перед длительной записью запустите граф на несколько минут и сравните на вкладке Internal Info входную и выходную скорость данных каждого узла. Если выход узла вдруг меньше входа, а вы этого не задумывали, данные теряются именно в этом узле.

Более общее объяснение конвейеров обработки см. Википедия (на английском).

Типичные вопросы о графах и записи мы собрали в разделе Частые вопросы. Если вашему графу нужна особая структура, напишите нам через страницу контактов , и мы спроектируем его вместе.

Где используется наше оборудование

Организации, университеты, предприятия и компании, применяющие нашу продукцию

  • Хедаят Хушманд Ножан Сепехр