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;