В 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; Ранее изменение времени воздействия после начала сбора данных приводило к ошибке.
Инструмент получения изображений
В инструменте получения изображений на вкладке «Свойства устройства» можно увидеть динамически доступные и настраиваемые свойства. Во время выполнения регистрации можно изменить свойство на вкладке, и оно вступит в силу в оставшихся кадрах регистрации.
Свойства устройства или свойства камеры GenICam теперь доступны динамически. В предыдущих выпусках невидимые свойства камеры GenICam скрывались. При отображении специфичных для устройства свойств с помощью disp, get или propinfo функции, свойства, которые ранее не отображались, теперь отображаются с метками.
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
...
Инструмент получения изображений
В инструменте получения изображений на вкладке «Свойства устройства» можно увидеть динамический доступ к свойствам. В предыдущем примере, если свойства 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
Инструмент получения изображений
В инструменте получения изображений на вкладке «Свойства устройства» можно увидеть, что свойства ограничения динамически обновляются. Например, если на вкладке «Свойства устройства» отключено свойство, предназначенное для автоматической функции камеры, например автоматическая резкость или автофокусировка, можно немедленно изменить связанное основное свойство, например резкость или фокус, поскольку оно больше не ограничено. Значения зависимостей обновляются динамически.
Теперь свойства селектора сгруппированы как в инструменте получения изображений, так и в командной строке. В инструменте можно просмотреть группировки на вкладке «Свойства устройства». При отображении свойства в командной строке связанные свойства группируются - отображается свойство селектора с его возможными значениями.
Например, в предыдущих версиях панели инструментов для 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;