Управление параметрами журналирования

Регистрация данных

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

Определение режима журналирования

Используя свойство объекта LoggingMode ввода видео, можно управлять, где тулбокс регистрирует полученные кадры данных.

Значением по умолчанию для свойства LoggingMode является 'memory'. В этом режиме, данных логов тулбокса к буферу в памяти. Если вы хотите принести данные изображения в рабочую область MATLAB®, необходимо регистрировать кадры к памяти. Функции, обеспеченные тулбоксом, чтобы переместить данные в рабочую область, все работают с буфером памяти. Для получения дополнительной информации смотрите Данные изображения Обеспечения в рабочее пространство MATLAB.

Вы можете также данные логов к дисковому файлу путем установки свойства LoggingMode на 'disk' или на 'disk&memory'. Путем журналирования кадров к дисковому файлу вы создаете постоянную запись кадров, которые вы получаете. Например, это кодовые наборы значение свойства LoggingMode объекта vid ввода видео к 'disk&memory'.

vid.LoggingMode = 'disk&memory';

Поскольку тулбокс хранит фреймы изображения в формате Чередования аудио и видео (AVI), можно просмотреть регистрируемые кадры в любом стандартном медиаплеере. Для получения дополнительной информации смотрите Данные изображения Журналирования к Диску.

Примечание

Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.

Определение количества кадров, чтобы регистрировать

В программном обеспечении Image Acquisition Toolbox™ вы задаете объем данных, который вы хотите получить как количество кадров на триггер.

Вы задаете желаемый размер своего приобретения как значение свойства объекта FramesPerTrigger ввода видео. По умолчанию значение этого свойства является 10 кадрами на триггер, но можно задать любое значение. Следующая фигура иллюстрирует приобретение с помощью значения по умолчанию для свойства FramesPerTrigger. Чтобы видеть пример приобретения, смотрите Получение 100 Кадров.

Определение объема данных, чтобы регистрировать

Примечание

В то время как можно задать любое приобретение размера, количество кадров, которые можно получить, ограничивается объемом памяти, который вы имеете в наличии в своей системе для устройства хранения данных изображений. Большое приобретение может потенциально заполнить всю доступную системную память. Для больших приобретений вы можете хотеть удалить кадры из буфера, когда они регистрируются. Для получения дополнительной информации смотрите Перемещение Нескольких Кадров в Рабочую область. Чтобы изучить, как освободить буфер памяти, смотрите Память Освобождения.

Определение приобретения, состоящего из нескольких несмежных участков,

Несмотря на то, что FramesPerTrigger задает количество кадров, чтобы получить, эти кадры не должны быть получены непрерывно от видеопотока. Можно указать, что тулбокс пропускает определенное число кадров между кадрами, которые он получает. Для этого установите значение свойства FrameGrabInterval.

Примечание

Свойство FrameGrabInterval управляет интервалом, в котором тулбокс получает кадры от видеопотока (измеренный в кадрах). Это свойство не управляет уровнем, на котором кадры обеспечиваются устройством, в противном случае известным как частоту кадров.

Следующая фигура иллюстрирует, как свойство FrameGrabInterval влияет на приобретение.

Влияние FrameGrabInterval на регистрации данных

Определение, сколько данных регистрировалось

Чтобы определить, сколько кадров было получено объектом ввода видео, проверяйте значение свойства FramesAcquired. Это свойство говорит, сколько кадров объект получил, поскольку это было запущено. Чтобы определить, сколько кадров в настоящее время доступно в буфере памяти, смотрите Определение, Сколько Кадров Доступно.

Получение 100 кадров

Этот пример иллюстрирует, как можно задать объем данных, который будет получен, и определить, сколько данных было получено. (Для примера конфигурирования основанного на времени приобретения смотрите Получение 10 Секунд Данных изображения.)

  1. Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Windows®. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.

    vid = videoinput('winvideo',1);
  2. Сконфигурируйте свойства — Задают объем данных, который вы хотите получить как количество кадров на триггер. По умолчанию объект ввода видео получает 10 кадров на триггер. В данном примере установите значение этого свойства к 100.

    vid.FramesPerTrigger = 100
  3. Запустите объект получения изображений - — Вызывают функцию start, чтобы запустить объект получения изображений.

    start(vid)

    Объект выполняет мгновенный триггер и начинает получать кадры данных. Чтобы проверить, регистрирует ли объект ввода видео данные, используйте функцию islogging.

    islogging(vid)
    ans =
    
         1

    Функция start возвращает управление в командную строку сразу, но объект продолжает регистрировать данные к буферу памяти. После получения конкретного количества кадров объект прекращает запускать и регистрировать.

  4. Проверяйте, сколько кадров было получено — Чтобы проверить, что конкретное количество кадров было получено, проверяйте значение свойства FramesAcquired. Обратите внимание на то, что объект постоянно обновляет значение свойства FramesAcquired, в то время как приобретение прогрессирует. Если вы просматриваете значение этого свойства несколько раз во время приобретения, вы видите, что количество кадров получило увеличение до журналирования остановок.

    vid.FramesAcquired
    ans =
    
        100
  5. Вымойтесь Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.

    delete(vid)
    clear vid

Определение, сколько кадров доступно

Свойство FramesAcquired говорит, сколько кадров объект регистрировал, поскольку это было запущено, описано в Определении, Сколько Данных Регистрировалось. Если вы перемещаете кадры от буфера памяти в рабочее пространство MATLAB, количество кадров, сохраненных в буфере памяти, будет отличаться от значения FramesAcquired. Чтобы определить, сколько кадров в настоящее время доступно в буфере памяти, проверяйте значение свойства FramesAvailable.

Примечание

Свойство FramesAvailable говорит количество кадров в буфере памяти, не в дисковом журнале, если LoggingMode сконфигурирован к 'disk' или 'disk&memory'. Поскольку занимает больше времени записать кадры в дисковый файл, чем к памяти, количество кадров, сохраненных в дисковом журнале, может отстать от сохраненных в буфере памяти. Чтобы видеть, как много кадров доступны в дисковом журнале, смотрят на значение свойства DiskLoggerFrameCount. Смотрите Данные изображения Журналирования к Диску для получения дополнительной информации.

Этот пример иллюстрирует различие между FramesAcquired и свойствами FramesAvailable:

  1. Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Windows. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.

    vid = videoinput('winvideo',1);
  2. Сконфигурируйте свойства — В данном примере конфигурируют приобретение 15 кадров.

    vid.FramesPerTrigger = 15
  3. Запустите объект получения изображений — Вызывают функцию start, чтобы запустить объект получения изображений.

    start(vid)

    Объект выполняет мгновенный триггер и начинает получать кадры данных. Функция start возвращает управление в командную строку сразу, но объект продолжает регистрировать данные к буферу памяти. После журналирования конкретного количества кадров объект прекращает запускаться.

  4. Проверяйте, сколько кадры были получены — Чтобы определить, сколько кадров объект получил и сколько кадров доступно в буфере памяти, проверяйте значение свойств FramesAcquired и FramesAvailable.

    vid.FramesAcquired
    ans =
    
        15
    
    vid.FramesAvailable
    
    ans = 
    
        15

    Обновления объекта значение этих свойств постоянно, когда это получает кадры данных. Следующая фигура иллюстрирует, как объект помещает полученные кадры в буфер памяти, в то время как приобретение прогрессирует.

    Кадры, доступные после начального триггерного выполнения

  5. Удалите кадры из буфера памяти — Когда вы удаляете кадры из буфера памяти, объект постепенно уменьшает значение свойства FramesAvailable количеством удаленных кадров.

    Чтобы удалить кадры из буфера памяти, вызовите функцию getdata, задав количество кадров, чтобы получить. Для получения дополнительной информации об использовании getdata смотрите Данные изображения Обеспечения в рабочее пространство MATLAB.

    data = getdata(vid,5);

    После того, как вы выполните функцию getdata, проверяйте значения свойств FramesAcquired и FramesAvailable снова. Заметьте, что свойство FramesAcquired остается неизменным, но объект постепенно уменьшил значение свойства FramesAvailable количеством кадров, удаленных из буфера памяти.

    vid.FramesAcquired
    
    ans =
    
        15
    
    vid.FramesAvailable
    
    ans =
    
        10

    Следующая фигура иллюстрирует содержимое буфера памяти после того, как кадры будут удалены.

    Содержимое буфера памяти до и после удаления кадров

  6. Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.

    delete(vid)
    clear vid

Задержка регистрации данных после триггера

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

Чтобы составлять эту характеристику вашей настройки, можно указать, что тулбокс пропускает конкретное количество кадров после того, как триггер выполняется. Вы используете свойство TriggerFrameDelay задать количество кадров, которые вы хотите пропустить, прежде чем журналирование начинается.

Например, чтобы задать задержку пяти кадров, прежде чем регистрация данных начинается после того, как триггер выполняется, вы установили бы значение свойства TriggerFrameDelay к 5. Количество полученных кадров задано свойством FramesPerTrigger и незатронуто задержкой.

vid.TriggerFrameDelay = 5;

Эта фигура иллюстрирует этот сценарий.

При определении задержки, прежде чем начинается регистрация данных

Определение нескольких триггеров

Когда триггер происходит, объект ввода видео получает количество кадров, заданных свойством FramesPerTrigger, и регистрирует данные к буферу памяти, дисковому файлу или обоим.

Когда это получает конкретное количество кадров, объект ввода видео прекращает запускаться. Чтобы выполнить другой триггер, необходимо перезапустить объект ввода видео. Перезапуск объекта заставляет его удалять все данные, которые это хранило в буфере памяти от предыдущего триггера. Чтобы выполнить несколько триггеров, сохраняя данные из каждого триггера, необходимо задать значение для свойства TriggerRepeat.

Обратите внимание на то, что свойство TriggerRepeat задает номер дополнительных времен, которые выполняет триггер. Например, чтобы выполнить триггер три раза, вы установили бы значение свойства TriggerRepeat к 2. В следующем vid является объектом ввода видео, созданным с функцией videoinput.

vid.TriggerRepeat = 2;

Эта фигура иллюстрирует приобретение с тремя выполнением ручного триггера. В фигуре свойство FramesPerTrigger установлено в 3.

Выполнение нескольких триггеров