Этот раздел иллюстрирует основные шаги, требуемые создавать приложение получения изображений путем реализовывания простого приложения обнаружения движения. Приложение обнаруживает перемещение в сцене путем выполнения сравнения от пикселя к пикселю в парах входящих фреймов изображения. Если ничто не перемещается в сцену, пиксельные значения остаются то же самое в каждой системе координат. Когда что-то перемещается в изображение, отображения приложения пиксели, которые изменили значения.
Пример подсвечивает, как можно использовать программное обеспечение Image Acquisition Toolbox™, чтобы создать рабочее приложение получения изображений только с несколькими строками кода.
Примечание
Чтобы запустить пример кода в этом примере, необходимо было соединить устройство получения изображений с системой. Устройство может быть устройством получения изображений профессионального уровня, таким как устройство захвата изображения или типовая Microsoft® Windows® устройство получения изображений, такое как веб-камера. Код может использоваться с различными типами устройств только с незначительными изменениями.
Примечание
С предыдущими версиями Image Acquisition Toolbox файлы для всех адаптеров были включены в вашу установку. Начиная с версии R2014a каждый адаптер доступен отдельно через пакеты поддержки. Для того, чтобы использовать Image Acquisition Toolbox, необходимо установить адаптер, который использует камера. Смотрите Пакеты поддержки Получения изображений для Аппаратных Адаптеров для получения информации об установке адаптеров с помощью MATLAB® Дополнения.
Чтобы использовать программное обеспечение Image Acquisition Toolbox, чтобы передавать изображения, необходимо выполнить выполняющие основные шаги.
Шаг | Описание |
---|---|
Установите и сконфигурируйте свое устройство получения изображений | |
Получите информацию, которая однозначно определяет ваше устройство получения изображений к программному обеспечению Image Acquisition Toolbox | |
Создайте объект ввода видео | |
Предварительно просмотрите видеопоток (Необязательно) | |
Сконфигурируйте свойства объектов получения изображений (Необязательно) | |
Передавайте изображения | |
Очистка |
Программное обеспечение Image Processing Toolbox™, необходимое, чтобы использовать программное обеспечение Image Acquisition Toolbox
Продукт Image Acquisition Toolbox, включая Image Acquisition Tool, требует, чтобы у вас была лицензия на продукт Image Processing Toolbox, запускающийся в R2008b.
Если у вас уже есть продукт Image Processing Toolbox™, вы ничего не должны делать.
Если вы не имеете продукта Image Processing Toolbox, программное обеспечение Image Acquisition Toolbox™ R2008a и ранее продолжите работать. Если вы хотите использовать R2008b или будущие релизы, и у вас есть текущая активная лицензия на программное обеспечение Image Acquisition Toolbox, можно загрузить продукт Image Processing Toolbox бесплатно. Новые клиенты должны будут купить оба продукта, чтобы использовать продукт Image Acquisition Toolbox.
При возникновении любых вопросов обратитесь в службу поддержки клиентов MathWorks.
Следуйте инструкциям по настройке, которые идут с вашим устройством получения изображений. Setup обычно включает:
Установка платы устройства захвата изображения в компьютере.
Установка любых программных драйверов требуется устройством. Они предоставляются поставщиком устройства.
Соединение камеры к коннектору на плате устройства захвата изображения.
Проверка, что камера работает правильно путем выполнения прикладного программного обеспечения, которое шло с камерой и просмотром живого видеопотока.
Типовые устройства получения изображений Windows, такие как веб-камеры и видеокамеры цифрового видео, обычно не требуют установки платы устройства захвата изображения. Вы соединяете эти устройства непосредственно к вашему компьютеру через порт USB или FireWire.
После установки и настройки ваше оборудование получения изображений запустите MATLAB на своем компьютере путем двойного клика по значку на рабочем столе. Вы не должны выполнять специальную настройку MATLAB, чтобы выполнить получение изображений.
На этом шаге вы получаете несколько данных, что тулбокс должен однозначно определить устройство получения изображений, к которому вы хотите получить доступ. Вы используете эту информацию, когда вы создаете объект получения изображений, описанный на Шаге 3: Создайте Объект Ввода видео.
В следующей таблице перечислены эту информацию. Вы используете imaqhwinfo
функция, чтобы получить каждый элемент.
Информация об устройстве | Описание |
---|---|
Имя адаптера | Адаптер является программным обеспечением что использование тулбокса, чтобы связаться с устройством получения изображений с помощью его драйвера устройства. Тулбокс включает адаптеры для определенных поставщиков оборудования получения изображений и для конкретных классов устройств получения изображений. Смотрите Определение Имени Адаптера для получения дополнительной информации. |
ID устройства | ID устройства является номером, что присвоения адаптера, чтобы однозначно определить каждое устройство получения изображений, с которым он может связаться. Смотрите Определение ID Устройства для получения дополнительной информации. Примечание Определение ID устройства является дополнительным; тулбокс использует первый доступный ID устройства в качестве значения по умолчанию. |
VideoFormat | Формат видео задает разрешение изображения (ширина и высота) и другие аспекты видеопотока. Устройства получения изображений обычно поддерживают несколько форматов видео. Смотрите Определение Поддерживаемых Форматов видео для получения дополнительной информации. Примечание Определение формата видео является дополнительным; тулбокс использует один из поддерживаемых форматов как значение по умолчанию. |
Чтобы определить имя адаптера, введите imaqhwinfo
функция в подсказке MATLAB без любых аргументов.
imaqhwinfo ans = InstalledAdaptors: {'dcam' 'winvideo'} MATLABVersion: '7.4 (R2007a)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '2.1 (R2007a)'
В данных, возвращенных imaqhwinfo
, InstalledAdaptors
cписки полей адаптеры, которые доступны на вашем компьютере. В этом примере, imaqhwinfo
найденный двумя адаптерами, доступными на компьютере: 'dcam'
и 'winvideo'
. Листинг на вашем компьютере может содержать только одно имя адаптера. Выберите имя адаптера, которое обеспечивает доступ к вашему устройству получения изображений. Для получения дополнительной информации смотрите Определение Имени Адаптера устройства.
Чтобы найти ID устройства конкретного устройства получения изображений, введите imaqhwinfo
функция в подсказке MATLAB, задавая имя адаптера в качестве единственного аргумента. (Вы нашли имя адаптера в первом вызове imaqhwinfo
, описанный в Определении Имени Адаптера.) В возвращенных данных, DeviceIDs
поле является массивом ячеек, содержащим идентификаторы устройства всех устройств, доступных через заданный адаптер.
Примечание
Этот пример использует адаптер DCAM. Необходимо заменить именем адаптера, который требуется использовать.
info = imaqhwinfo('dcam') info = AdaptorDllName: [1x77 char] AdaptorDllVersion: '2.1 (R2007a)' AdaptorName: 'dcam' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]
Чтобы определить, который поддерживают форматы видео устройство получения изображений, посмотрите в DeviceInfo
поле данных возвращено imaqhwinfo
. DeviceInfo
поле является массивом структур, где каждая структура предоставляет информацию о конкретном устройстве. Чтобы просмотреть информацию об устройстве для конкретного устройства, можно использовать ID устройства в качестве ссылки в массив структур. В качестве альтернативы можно просмотреть информацию для конкретного устройства путем вызова imaqhwinfo
функция, задавая имя адаптера и ID устройства в качестве аргументов.
Чтобы получить список форматов видео, поддержанных устройством, посмотрите на SupportedFormats
поле в структуре информации об устройстве. SupportedFormats
поле является массивом ячеек из символьных векторов, где каждый вектор символов является именем формата видео, поддержанного устройством. Для получения дополнительной информации смотрите Определение Поддерживаемых Форматов видео.
dev_info = imaqhwinfo('dcam',1) dev_info = DefaultFormat: 'F7_Y8_1024x768' DeviceFileSupported: 0 DeviceName: 'XCD-X700 1.05' DeviceID: 1 VideoInputConstructor: 'videoinput('dcam', 1)' VideoDeviceConstructor: 'imaq.VideoDevice('dcam', 1)' SupportedFormats: {'F7_Y8_1024x768' 'Y8_1024x768'}
На этом шаге вы создаете объект ввода видео что использование тулбокса, чтобы представлять связь между MATLAB и устройством получения изображений. Используя свойства объекта ввода видео, можно управлять многими аспектами процесса получения изображений. Для получения дополнительной информации об объектах получения изображений, смотрите Объекты Получения изображений Создания.
Чтобы создать объект ввода видео, используйте videoinput
функция в подсказке MATLAB. DeviceInfo
структура возвращена imaqhwinfo
функция содержит videoinput
по умолчанию синтаксис функций для устройства в
VideoInputConstructor
поле . Для получения дополнительной информации структура информации об устройстве, смотрите Определение Поддерживаемых Форматов видео.
Следующий пример создает объект ввода видео для адаптера DCAM. Замените именем адаптера устройства получения изображений, доступного в вашей системе.
vid = videoinput('dcam',1,'Y8_1024x768')
videoinput
функция принимает три аргумента: имя адаптера, ID устройства и формат видео. Вы получили эту информацию на шаге 2. Имя адаптера является единственным обязательным аргументом; videoinput
функция может использовать значения по умолчанию для ID устройства и формата видео. Чтобы определить формат видео по умолчанию, посмотрите на DefaultFormat
поле в структуре информации об устройстве. Смотрите Определение Поддерживаемых Форматов видео для получения дополнительной информации.
Вместо того, чтобы задать формат видео, можно опционально задать имя файла конфигурации устройства, также известного как файл камеры. Файлы конфигурации устройства обычно предоставляются поставщиками устройства захвата изображения. Эти файлы содержат все необходимые параметры конфигурации, чтобы использовать конкретную камеру с устройством. Смотрите Используя Файлы конфигурации устройства (Файлы Камеры) для получения дополнительной информации.
Чтобы просмотреть сводные данные ввода видео возражают, что вы только создали, введите имя переменной vid
в командной строке MATLAB. Итоговая отображенная информация показывает многие характеристики объекта, такие как количество кадров, которое будет получено с каждым триггером, триггерным типом и текущим состоянием объекта. Можно использовать свойства объектов ввода видео, чтобы управлять многими из этих характеристик. Смотрите Шаг 5: Сконфигурируйте Свойства объектов (Необязательно) для получения дополнительной информации.
vid Summary of Video Input Object Using 'XCD-X700 1.05'. Acquisition Source(s): input1 is available. Acquisition Parameters: 'input1' is the current selected source. 10 frames per trigger using the selected source. 'Y8_1024x768' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA.
После того, как вы создадите объект ввода видео, MATLAB может получить доступ к устройству получения изображений и готов получить данные. Однако, прежде чем вы начинаете, вы можете хотеть видеть предварительный просмотр видеопотока, чтобы убедиться, что изображение является удовлетворительным. Например, вы можете хотеть сменить положение камеры, изменить подсветку, откорректировать особое внимание или внести некоторое другое изменение в вашу настройку получения изображений.
Примечание
Этот шаг является дополнительным в этой точке в процедуре, потому что можно предварительно просмотреть видеопоток в любое время после того, как вы создаете объект ввода видео.
Чтобы предварительно просмотреть видеопоток в этом примере, введите preview
функция в подсказке MATLAB, задавая объект ввода видео, созданный на шаге 3 в качестве аргумента.
preview(vid)
preview
функция создает окно фигуры Предварительного просмотра видео на вашем экране, содержащем живой видеопоток. Чтобы остановить поток живого видео, можно вызвать stoppreview
функция. Чтобы перезапустить поток предварительного просмотра, вызовите preview
снова на том же объекте ввода видео.
В то время как окно предварительного просмотра открыто, объект ввода видео устанавливает значение Previewing
свойство к 'on'
. Если вы изменяете характеристики изображения путем установки свойств объектов получения изображений, изображение, отображенное в окне предварительного просмотра, отражает изменение.
Следующий рисунок показывает Окно просмотра видео для примера.
Окно просмотра видео
Чтобы закрыть Окно просмотра видео, нажмите кнопку Close в строке заголовка или используйте closepreview
функция, задавая ввод видео возражает в качестве аргумента.
closepreview(vid)
Вызов closepreview
без любых аргументов закрывает все открытые Окна просмотра видео.
После создания объекта ввода видео и предварительного просмотра видеопотока, вы можете хотеть изменить характеристики изображения или другие аспекты процесса захвата. Вы выполняете это путем устанавливания значений свойств объектов получения изображений. Этот раздел
Описывает типы объектов получения изображений, используемых тулбоксом
Описывает, как просмотреть все свойства, поддержанные этими объектами с их текущими значениями
Описывает, как установить значения свойств объектов
Тулбокс использует два типа объектов представлять связь с устройством получения изображений:
Объекты ввода видео
Объекты источника видеосигнала
Объект ввода видео представляет связь между MATLAB и видео устройством захвата на высоком уровне. Свойства, поддержанные объектом ввода видео, являются тем же самым для каждого типа устройства. Вы создали объект ввода видео использование videoinput
функция на шаге 3.
Когда вы создаете объект ввода видео, тулбокс автоматически создает один или несколько объектов источника видеосигнала, сопоставленных с объектом ввода видео. Каждый объект источника видеосигнала представляет набор одного или нескольких физических источников данных, которые обработаны как одна сущность. Количество источника видеосигнала возражает, что тулбокс создает, зависит от устройства и формата видео, который вы задаете. В любой момент только один из объектов источника видеосигнала, названных выбранным источником, может быть активным. Это - источник, используемый для захвата. Для получения дополнительной информации об этих объектах получения изображений, смотрите Объекты Получения изображений Создания.
Чтобы просмотреть полный список всех свойств, поддержанных объектом ввода видео или объектом источника видеосигнала, используйте get
функция. Чтобы перечислить свойства объекта ввода видео, созданного на шаге 3, введите этот код в подсказке MATLAB.
get(vid)
get
функционируйте перечисляет все свойства объекта с их текущими значениями.
General Settings: DeviceID = 1 DiskLogger = [] DiskLoggerFrameCount = 0 EventLog = [1x0 struct] FrameGrabInterval = 1 FramesAcquired = 0 FramesAvailable = 0 FramesPerTrigger = 10 Logging = off LoggingMode = memory Name = Y8_1024x768-dcam-1 NumberOfBands = 1 Previewing = on ReturnedColorSpace = grayscale ROIPosition = [0 0 1024 768] Running = off Tag = Timeout = 10 Type = videoinput UserData = [] VideoFormat = Y8_1024x768 VideoResolution = [1024 768] . . .
Чтобы просмотреть свойства в настоящее время выбранного объекта источника видеосигнала, сопоставленного с этим объектом ввода видео, используйте getselectedsource
функция в сочетании с get
функция. getselectedsource
функция возвращает в настоящее время активный источник видеосигнала. Чтобы перечислить свойства в настоящее время выбранного объекта источника видеосигнала, сопоставленного с объектом ввода видео, созданным на шаге 3, введите этот код в подсказке MATLAB.
get(getselectedsource(vid))
get
функционируйте перечисляет все свойства объекта с их текущими значениями.
Примечание
Свойства объектов источника видеосигнала являются конкретным устройством. Список свойств, поддержанных устройством, соединенным к вашей системе, может отличаться от списка, показанного в этом примере.
General Settings: Parent = [1x1 videoinput] Selected = on SourceName = input1 Tag = Type = videosource Device Specific Properties: FrameRate = 15 Gain = 2048 Shutter = 2715
Чтобы установить значение свойства объекта ввода видео или свойства объекта источника видеосигнала, вы ссылаетесь на свойство объекта, когда вы были бы поле в структуре, с помощью записи через точку.
Некоторые свойства только для чтения; вы не можете установить их значения. Эти свойства обычно предоставляют информацию о состоянии объекта. Другие свойства становятся только для чтения, когда объект запускается. Чтобы просмотреть список всех свойств, можно установить, использовать set
функция, задавая объект в качестве единственного аргумента.
Чтобы реализовать захват непрерывного изображения, пример устанавливает TriggerRepeat
свойство к Inf
. Чтобы установить это свойство, введите этот код в подсказке MATLAB.
vid.TriggerRepeat = Inf;
Чтобы помочь приложению не отставать от входящего видеопотока при обработке данных, пример устанавливает FrameGrabInterval
свойство к 5
. Это указывает, что объект получает каждую пятую систему координат в видеопотоке. (Вы можете должны быть экспериментировать со значением FrameGrabInterval
свойство найти значение, которое предоставляет лучшему ответу вашу настройку получения изображений.) В этом примере показано, как можно установить значение свойства объекта путем ссылки на свойство, когда вы сослались бы на поле в структуре MATLAB.
vid.FrameGrabInterval = 5;
Чтобы установить значение свойства объекта источника видеосигнала, необходимо сначала использовать getselectedsource
функция, чтобы получить объект. (Можно также получить выбранный источник путем поиска объекта Source
ввода видео свойство для объекта источника видеосигнала, который имеет
Selected
набор свойств к 'on'
.)
Чтобы проиллюстрировать, пример присваивает значение Tag
свойство.
vid_src = getselectedsource(vid); vid_src.Tag = 'motion detection setup';
Примечание
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
После того, как вы создадите объект ввода видео и сконфигурируете его свойства, можно получить данные. Это обычно - ядро любого приложения получения изображений, и это включает эти шаги:
При запуске объекта ввода видео — Вы запускаете объект путем вызова start
функция. Запуск объекта готовит объект к сбору данных. Например, запуск объекта блокирует значения определенных свойств объектов (они становятся только для чтения). Запуск объекта не инициирует получение фреймов изображения, как бы то ни было. Инициирование регистрации данных зависит от выполнения триггера.
Следующий пример вызывает start
функционируйте, чтобы запустить объект ввода видео. Объекты останавливаются, когда они получили требуемое количество кадров. Поскольку пример задает непрерывный захват, необходимо вызвать stop
функционируйте, чтобы остановить объект.
Инициировав захват — Чтобы получить данные, объект ввода видео должен выполнить триггер. Триггеры могут произойти несколькими способами, в зависимости от как TriggerType
свойство сконфигурировано. Например, если вы задаете мгновенный триггер, объект выполняет триггер автоматически, сразу после того, как он запускается. Если вы задаете ручной триггер, объект ожидает вызова trigger
функция, прежде чем это будет инициировать сбор данных. Для получения дополнительной информации смотрите Передающие Изображения.
В примере, потому что TriggerType
свойство установлено в 'immediate'
(значение по умолчанию) и TriggerRepeat
свойство установлено в Inf
, объект автоматически начинает выполнять триггеры и получать системы координат данных, постоянно.
Обеспечение данных в рабочее пространство MATLAB — тулбокс хранит полученные данные в буфере памяти, дисковом файле или обоих, в зависимости от значения объекта LoggingMode
ввода видео свойство. Чтобы работать с этими данными, необходимо принести его в рабочее пространство MATLAB. Чтобы принести несколько систем координат в рабочую область, используйте
getdata
функция. Если данные находятся в рабочем пространстве MATLAB, можно управлять им, когда вы были бы любые другие данные. Для получения дополнительной информации смотрите Работу с Данными изображения в рабочем пространстве MATLAB.
Примечание
Тулбокс обеспечивает удобный способ получить одну систему координат данных изображения, которые не требуют запуска или инициирования объекта. Смотрите Обеспечение Одной Системы координат в Рабочую область для получения дополнительной информации.
Чтобы запустить пример, введите следующий код в подсказке MATLAB. Циклы в качестве примера до конкретного количества систем координат были получены. В каждой итерации цикла пример вызывает getdata
принести две новых системы координат в рабочее пространство MATLAB. Чтобы обнаружить движение, пример вычитает одну систему координат из другого, создавая изображение различия, и затем отображает его. Пиксели, которые изменили значения в полученных системах координат, будут иметь ненулевые значения в изображении различия.
getdata
функция удаляет системы координат из буфера памяти, когда это приносит им в рабочее пространство MATLAB. Важно переместить системы координат от буфера памяти в рабочее пространство MATLAB своевременно. Если вы не перемещаете полученные системы координат из памяти, можно быстро исчерпать всю память, доступную в системе.
Примечание
Пример использует функции в программном обеспечении Image Processing Toolbox.
% Create video input object. vid = videoinput('dcam',1,'Y8_1024x768') % Set video input object properties for this application. vid.TriggerRepeat = 100; vid.FrameGrabInterval = 5; % Set value of a video source object property. vid_src = getselectedsource(vid); vid_src.Tag = 'motion detection setup'; % Create a figure window. figure; % Start acquiring frames. start(vid) % Calculate difference image and display it. while(vid.FramesAvailable >= 2) data = getdata(vid,2); diff_im = imabsdiff(data(:,:,:,1),data(:,:,:,2)); imshow(diff_im); drawnow % update figure window end stop(vid)
Обратите внимание на то, что drawnow
используется после вызова imshow
для того, чтобы гарантировать, что окно рисунка обновляется. Это - хорошая практика при обновлении графический интерфейса пользователя или фигуры в цикле.
Следующий рисунок показывает, как пример отображает обнаруженное движение. На рисунке отображены области, представляющие перемещение.
Окно фигуры, отображенное на примере
Примечание
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
В примере, getdata
функция возвращает фреймы изображения в переменной data
как 480 640 1 10 массивами 8-битных данных (uint8
).
whos Name Size Bytes Class data 4-D 3072000 uint8 array dev_info 1x1 1601 struct array info 1x1 2467 struct array vid 1x1 1138 videoinput object vid_src 1x1 726 videosource object
Высота и ширина массива, в основном, определяются разрешением видео формата видео. Однако можно использовать ROIPosition
свойство задать значения, которые заменяют разрешение видео. Устройства обычно специальное разрешение видео как столбец строкой; MATLAB описывает матричные размерности как строку столбцом.
Третья размерность представляет количество цветных полос в изображении. Поскольку данные в качестве примера являются полутоновым изображением, третья размерность равняется 1. Для форматов RGB фреймы изображения имеют три полосы: красный является первым, зеленый является вторым, и синий является третьим. Четвертая размерность представляет количество кадров, которые были получены от видеопотока.
Когда вы закончили использовать свои объекты получения изображений, можно удалить их из памяти и очистить рабочее пространство MATLAB переменных, сопоставленных с этими объектами.
delete(vid) clear close(gcf)
Для получения дополнительной информации смотрите Объекты Получения изображений Удаления.