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;