Используйте расширенную поддержку свойств в интерфейсах GigE Vision и GenICam GenTL

Расширенная поддержка свойств

Image Acquisition Toolbox™ добавил улучшения свойств GenICam для GigE Vision (gige) и GenICam GenTL (gentl) адаптеры, используемые с videoinput объект в R2016a. Эти функции уже были включены в gigecam объект.

  • Возможность изменения свойств во время сбора данных

  • Динамическая доступность и читаемость

  • Динамические ограничения

  • Сгруппированные свойства селектора

Изменение свойств во время приобретения

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

% Create the videoinput object using the GigE adaptor
vid = videoinput('gige')

% Get the video source
src = getselectedsource(vid);

% Set the frames per trigger on the source
vid.FramesPerTrigger = Inf;

% Start acquiring frames
start(vid)

% Change the exposure time during the acquisition
src.ExposureTime = 4; 

Ранее изменение времени воздействия после начала приобретения приводило к ошибке.

Image Acquisition Tool

На вкладке Device Properties Image Acquisition Tool можно увидеть, что свойства динамически доступны и настраиваются. В то время как приобретение выполняется, вы можете изменить свойство на вкладке, и это вступит в эффект в остальных системах координат приобретения.

Динамическая доступность и читаемость

Свойства конкретного устройства или свойства GenICam камеры теперь доступны динамически. В предыдущих релизах свойства камеры GenICam, которые были недоступны, были скрыты. Если вы отображаете свойства конкретного устройства с помощью disp, get или propinfo functions, свойства, которые ранее не появлялись теперь показ с метками.

The propinfo функция включает новое поле, называемое Accessible, которое является логическим свойством только для чтения. A disp в свойстве, которое имеет Accessible установлено на 0 результаты «В настоящее время недоступно». Чтобы включить доступность, установите Accessible на 1. Для примера, если у вас есть ReverseY значение свойства установлено в Accessible, следующие:

 propinfo(src,'ReverseY')

приведет к диску, показывающему:

 Accessible: 1

То же самое верно и для ReadOnly свойство. Читаемость теперь динамична, и propinfo функция показывает ReadOnly свойство как 'notCurrently', если она доступна для записи, или 'currently', если он доступен только для чтения. Пример в разделе Динамические ограничения демонстрирует динамическое использование этого свойства.

Можно просмотреть исходные свойства, чтобы увидеть, являются ли какие-либо свойства в данный момент недоступными. В этом примере для части диска, показанной ниже, AcquisitionFrameCount и BalanceRatioRaw в настоящее время недоступны.

>> src = vid.Source

src = 

   Display Summary for Video Source Object:

      General Settings:
        Parent = [1x1 videoinput]
        Selected = on
        SourceName = input1
        Tag = [0x0 character vector]
        Type = videosource

      Device Specific Properties:
        AcquisitionFrameCount = (Currently not accessible)
        AcquisitionFrameRate = 4.5
        AcquisitionFrameRateAuto = Off
        AcquisitionFrameRateEnabled = True
        BalanceRatioRaw = (Currently not accessible)
        BinningHorizontal = 1
        BinningVertical = 1
        BlackLevel = 1.001
        ...

Image Acquisition Tool

На вкладке Device Properties Image Acquisition Tool можно увидеть, что свойства динамически доступны. В предыдущем примере, если свойства AcquisitionFrameCount и BalanceRatioRaw стали недоступны, они появились как серые на вкладке.

Динамические ограничения

Если вы изменяете свойство, которое приводит к изменению возможных значений или изменению ограничений для другого свойства, значения ограничений другого свойства обновляются динамически. Рассмотрим камеру, которая имеет автоматическую настройку резкости, которую можно задать равной Continuous чтобы автоматически настроить резкость или установить на Off. Свойство автоматической резкости затем влияет на связанные Sharpness свойство. В этом примере, когда SharpnessAuto установлено в Continuous, диск Sharpness свойство показывает ограниченные значения и то, что оно не может быть задано.

>> propinfo(src, 'SharpnessAuto')

ans = 

               Type: 'character vector'
         Constraint: 'enum'
    ConstraintValue: {'Continuous'  'Off'}
       DefaultValue: 'Continuous'
           ReadOnly: 'notCurrently'
     DeviceSpecific: 1
         Accessible: 1

>> propinfo(src, 'Sharpness')

ans = 

               Type: 'integer'
         Constraint: 'bounded'
    ConstraintValue: [1532 1532]
       DefaultValue: 1532
           ReadOnly: 'currently'
     DeviceSpecific: 1
         Accessible: 1

Если после этого установите SharpnessAuto свойство к Off, второй диск Sharpness свойство показывает, что значения с ограничениями динамически обновлялись и что теперь они могут быть установлены (только для чтения).

>> src.SharpnessAuto = 'Off'
>> propinfo(src, 'Sharpness')

ans = 

               Type: 'integer'
         Constraint: 'bounded'
    ConstraintValue: [0 4095]
       DefaultValue: 1532
           ReadOnly: 'notCurrently'
     DeviceSpecific: 1
         Accessible: 1

Image Acquisition Tool

На вкладке Device Properties (Image Acquisition Tool) можно увидеть, что свойства ограничений динамически обновляются. Например, если выключить свойство, предназначенное для автоматической функции на камере, такое как автоматическая резкость или автофокус, на вкладке Device Properties, можно затем сразу изменить связанное основное свойство, такое как резкость или особое внимание, поскольку оно больше не ограничено. Значения с ограничениями обновляются динамически.

Сгруппированные свойства селектора

В окне Image Acquisition Tool и в командной строке теперь сгруппированы свойства селектора. В инструменте можно увидеть группы на вкладке Device Properties. В отображении свойства в командной строке сгруппированы связанные свойства - перечислено свойство селектора с его возможными значениями, появляющимися под ним.

Например, в предыдущих версиях тулбокса, для GainSelector с возможными значениями Red, Blue, и Green и a Gain свойство, свойства усиления отображаются следующим образом:

>> vid = videoinput('gige')
>> src = getselectedsource(vid)
...
...
RedGain = 0.4
BlueGain = 0.2
GreenGain = 0.1
...

Теперь они отображаются как отдельные значения на одном свойстве селектора:

>> vid = videoinput('gige')
>> src = getselectedsource(vid)
...
...
GainSelector = 'Red'
Gain = 0.2
... 

Вопросы совместимости

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

Если у вас есть MATLAB® код, написанный до R2016a, который ссылается на предыдущие, отдельные свойства, вам нужно изменить код, чтобы отразить их как значения свойства селектора. Установка и получение свойств, принадлежащих селектору с использованием предыдущего стиля составного имени, больше не поддерживается. Для примера, RedGain больше не работает. Вместо этого используйте GainSelector установлено на Red, как показано на примере.

Чтобы задать значение свойства, сначала установите значение селектора, затем установите значение свойства:

src.GainSelector = 'Green';
src.Gain = 0.1;