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

Поддержка расширенного свойства

Image Acquisition Toolbox™ добавил улучшения свойства GenICam для Видения GigE (gige) и (gentl) адаптеры GenICam 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

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

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

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

Функция propinfo включает новое поле под названием Accessible, который является булево свойством только для чтения. disp на свойстве, которому установили Accessible на результаты 0 в “В настоящее время не доступный”. Чтобы включить доступность, установите Accessible на 1. Например, если у вас есть набор свойств ReverseY к Accessible, следующему:

 propinfo(src,'ReverseY')

привел бы к показу disp:

 Accessible: 1

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

Можно просмотреть исходные свойства видеть, не доступны ли какие-либо свойства в настоящее время. В этом примере, для части disp, показанного ниже, 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

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

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

Если вы изменяете свойство, которое приводит к изменению возможных значений или ограничительному изменению, для другого свойства, ограничительные значения другого свойства обновляются динамически. Рассмотрите камеру, которая имеет автоматическую резкость, устанавливающую это, можно установить на Continuous, чтобы автоматически настроить резкость или установить на Off. Автоматическое свойство резкости затем влияет на связанное свойство Sharpness. В этом примере, когда SharpnessAuto установлен в Continuous, disp свойства 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, второй disp свойства 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

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

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

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

Например, в предыдущих версиях тулбокса, для GainSelector с возможными значениями Red, Blue, и Green и свойства 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;