Начинающий, сделав получение изображений программно

Обзор

Этот раздел иллюстрирует основные шаги, требуемые создавать приложение получения изображений путем реализовывания простого приложения обнаружения движения. Приложение обнаруживает перемещение в сцене путем выполнения сравнения от пикселя к пикселю в парах входящих фреймов изображения. Если ничто не перемещается в сцену, пиксельные значения остаются то же самое в каждой системе координат. Когда что-то перемещается в изображение, отображения приложения пиксели, которые изменили значения.

Пример подсвечивает, как можно использовать программное обеспечение Image Acquisition Toolbox™, чтобы создать рабочее приложение получения изображений только с несколькими строками кода.

Примечание

Чтобы запустить пример кода в этом примере, необходимо было соединить устройство получения изображений с системой. Устройство может быть устройством получения изображений профессионального уровня, таким как устройство захвата изображения или типовая Microsoft® Windows® устройство получения изображений, такое как веб-камера. Код может использоваться с различными типами устройств только с незначительными изменениями.

Примечание

С предыдущими версиями Image Acquisition Toolbox файлы для всех адаптеров были включены в вашу установку. Начиная с версии R2014a каждый адаптер доступен отдельно через пакеты поддержки. Для того, чтобы использовать Image Acquisition Toolbox, необходимо установить адаптер, который использует камера. Смотрите Пакеты поддержки Получения изображений для Аппаратных Адаптеров для получения информации об установке адаптеров с помощью MATLAB® Дополнения.

Чтобы использовать программное обеспечение Image Acquisition Toolbox, чтобы передавать изображения, необходимо выполнить выполняющие основные шаги.

Шаг

Описание

Шаг 1:

Установите и сконфигурируйте свое устройство получения изображений

Шаг 2:

Получите информацию, которая однозначно определяет ваше устройство получения изображений к программному обеспечению Image Acquisition Toolbox

Шаг 3:

Создайте объект ввода видео

Шаг 4:

Предварительно просмотрите видеопоток (Необязательно)

Шаг 5:

Сконфигурируйте свойства объектов получения изображений (Необязательно)

Шаг 6:

Передавайте изображения

Шаг 7:

Очистка

Программное обеспечение 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.

Шаг 1: установите свое устройство получения изображений

Следуйте инструкциям по настройке, которые идут с вашим устройством получения изображений. Setup обычно включает:

  • Установка платы устройства захвата изображения в компьютере.

  • Установка любых программных драйверов требуется устройством. Они предоставляются поставщиком устройства.

  • Соединение камеры к коннектору на плате устройства захвата изображения.

  • Проверка, что камера работает правильно путем выполнения прикладного программного обеспечения, которое шло с камерой и просмотром живого видеопотока.

Типовые устройства получения изображений Windows, такие как веб-камеры и видеокамеры цифрового видео, обычно не требуют установки платы устройства захвата изображения. Вы соединяете эти устройства непосредственно к вашему компьютеру через порт USB или FireWire.

После установки и настройки ваше оборудование получения изображений запустите MATLAB на своем компьютере путем двойного клика по значку на рабочем столе. Вы не должны выполнять специальную настройку MATLAB, чтобы выполнить получение изображений.

Шаг 2: получите информацию об оборудовании

На этом шаге вы получаете несколько данных, что тулбокс должен однозначно определить устройство получения изображений, к которому вы хотите получить доступ. Вы используете эту информацию, когда вы создаете объект получения изображений, описанный на Шаге 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 устройства

Чтобы найти 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'}

Шаг 3: создайте объект ввода видео

На этом шаге вы создаете объект ввода видео что использование тулбокса, чтобы представлять связь между 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.

Шаг 4: предварительно просмотрите видеопоток (Необязательно)

После того, как вы создадите объект ввода видео, MATLAB может получить доступ к устройству получения изображений и готов получить данные. Однако, прежде чем вы начинаете, вы можете хотеть видеть предварительный просмотр видеопотока, чтобы убедиться, что изображение является удовлетворительным. Например, вы можете хотеть сменить положение камеры, изменить подсветку, откорректировать особое внимание или внести некоторое другое изменение в вашу настройку получения изображений.

Примечание

Этот шаг является дополнительным в этой точке в процедуре, потому что можно предварительно просмотреть видеопоток в любое время после того, как вы создаете объект ввода видео.

Чтобы предварительно просмотреть видеопоток в этом примере, введите preview функция в подсказке MATLAB, задавая объект ввода видео, созданный на шаге 3 в качестве аргумента.

preview(vid)

preview функция создает окно фигуры Предварительного просмотра видео на вашем экране, содержащем живой видеопоток. Чтобы остановить поток живого видео, можно вызвать stoppreview функция. Чтобы перезапустить поток предварительного просмотра, вызовите preview снова на том же объекте ввода видео.

В то время как окно предварительного просмотра открыто, объект ввода видео устанавливает значение Previewing свойство к 'on'. Если вы изменяете характеристики изображения путем установки свойств объектов получения изображений, изображение, отображенное в окне предварительного просмотра, отражает изменение.

Следующий рисунок показывает Окно просмотра видео для примера.

Окно просмотра видео

Чтобы закрыть Окно просмотра видео, нажмите кнопку Close в строке заголовка или используйте closepreview функция, задавая ввод видео возражает в качестве аргумента.

closepreview(vid)

Вызов closepreview без любых аргументов закрывает все открытые Окна просмотра видео.

Шаг 5: сконфигурируйте свойства объектов (Необязательно)

После создания объекта ввода видео и предварительного просмотра видеопотока, вы можете хотеть изменить характеристики изображения или другие аспекты процесса захвата. Вы выполняете это путем устанавливания значений свойств объектов получения изображений. Этот раздел

Типы объектов получения изображений

Тулбокс использует два типа объектов представлять связь с устройством получения изображений:

  • Объекты ввода видео

  • Объекты источника видеосигнала

Объект ввода видео представляет связь между 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 для Функций.

Шаг 6: передавайте изображения

После того, как вы создадите объект ввода видео и сконфигурируете его свойства, можно получить данные. Это обычно - ядро любого приложения получения изображений, и это включает эти шаги:

  • При запуске объекта ввода видео — Вы запускаете объект путем вызова 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 для Функций.

Данные изображения в рабочем пространстве MATLAB

В примере, 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 фреймы изображения имеют три полосы: красный является первым, зеленый является вторым, и синий является третьим. Четвертая размерность представляет количество кадров, которые были получены от видеопотока.

Шаг 7: Очистка

Когда вы закончили использовать свои объекты получения изображений, можно удалить их из памяти и очистить рабочее пространство MATLAB переменных, сопоставленных с этими объектами.

delete(vid)
clear
close(gcf)

Для получения дополнительной информации смотрите Объекты Получения изображений Удаления.