exponenta event banner

Работа с данными изображения в рабочей области MATLAB

Общие сведения о данных изображения

Иллюстрации в этой документации показывают видеопоток и содержимое буфера памяти как последовательность отдельных кадров. В действительности каждый кадр является многомерным массивом. Дополнительные сведения об использовании многомерных массивов см. в разделе Многомерные массивы. На следующем рисунке показан формат отдельного кадра.

Формат отдельного кадра

В следующих разделах описывается, как панель инструментов

В этом разделе также описывается несколько способов просмотра полученных данных изображения.

Определение размеров данных изображения

Видеоформат, используемый устройством получения изображения, является основным определяющим фактором ширины, высоты и количества полос в каждом кадре изображения. Устройства получения изображений обычно поддерживают несколько видеоформатов. Формат видео выбирается при создании объекта ввода видео (описано в разделе Определение формата видео). Объект ввода видео сохраняет формат видео в VideoFormat собственность.

Объект ввода видео сохраняет разрешение видео в VideoResolution собственность.

Каждый кадр изображения является трехмерным; однако формат видео определяет количество полос в третьем измерении. Для цветных видеоформатов, таких как RGB, каждый кадр изображения имеет три полосы: по одной для красных, зеленых и синих данных. Другие форматы видео, такие как стандарт RS170 в градациях серого, имеют только одну полосу. Объект ввода видео сохраняет размер третьего измерения в NumberOfBands собственность.

Примечание

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

Значения ROI и размеры изображения

При указании области интереса (ROI) в захватываемом изображении размеры ROI определяют размеры возвращаемых кадров изображения. VideoResolution свойство определяет размеры данных изображения, предоставляемых устройством; ROIPosition свойство определяет размеры регистрируемых кадров изображения. См. раздел ROIPosition для получения дополнительной информации.

Формат видео и размеры изображения

В следующем примере показано, как формат видео влияет на размер возвращаемых кадров изображения.

  1. Выберите формат видео - Используйте imaqhwinfo для просмотра списка видеоформатов, поддерживаемых устройством получения изображений. В этом примере показаны форматы видео, поддерживаемые устройством захвата кадров Matrox ® Orion. Форматы являются стандартными, например RS170, NTSC и PAL. Эти стандарты определяют разрешение изображения.

    info = imaqhwinfo('matrox');
    
    info.DeviceInfo.SupportedFormats
    
    ans = 
      Columns 1 through 4
    
        'M_RS170'    'M_RS170_VIA_RGB'    'M_CCIR'    'M_CCIR_VIA_RGB'    
    
      Columns 5 through 8
    
    'M_NTSC'    'M_NTSC_RGB'      'M_NTSC_YC'    'M_PAL' 
    
      Columns 9 through 10
    
    'M_PAL_RGB'    'M_PAL_YC'
  2. Создать объект получения изображения - в этом примере создается объект ввода видео для устройства получения изображения Matrox с использованием формата видео по умолчанию, RS170. Для запуска этого примера в системе используйте imaqhwinfo чтобы получить конструктор объекта для устройства получения изображения и заменить этот синтаксис следующим кодом.

    vid = videoinput('matrox',1);
  3. Просмотр формата видео и свойств разрешения видео - панель инструментов создает объект с форматом видео по умолчанию. Этот формат определяет разрешение видео.

    vid.VideoFormat
    
    ans =
    
       M_RS170
    
    vid.VideoResolution
    
    ans =
    
       [640 480]
  4. Ввод одного кадра в рабочее пространство - вызов getsnapshot для ввода кадра в рабочую область.

    frame = getsnapshot(vid);

    Размеры возвращаемых данных отражают разрешение изображения и значение NumberOfBands собственность.

    vid.NumberOfBands
    ans =
    
       1
    
    size(frame)
    
    ans =
    
       480 640
  5. Запуск объекта сбора изображений - вызовите start для запуска объекта получения изображения.

    start(vid)

    Объект выполняет немедленный триггер и начинает получение кадров данных.

  6. Поместить несколько кадров в рабочую область - вызовите getdata для ввода нескольких кадров изображения в рабочую область MATLAB.

    data = getdata(vid,10);

    getdata функция переносит 10 кадров данных в рабочую область. Заметим, что возвращаемые данные являются четырёхмерным массивом: каждый кадр является трёхмерным, а n-й кадр обозначается четвёртым измерением.

    size(data)
    
    ans =
    
       480 640 1 10
  7. Очистить - всегда удалять объекты сбора изображений из памяти и переменные, которые ссылаются на них, когда они больше не нужны.

    delete(vid)
    clear vid

Определение типа данных кадров изображения

По умолчанию панель инструментов возвращает кадры изображения в типе данных, используемом устройством получения изображения. Если нет типа данных MATLAB, соответствующего собственному типу данных объекта, getdata выбирает тип данных MATLAB, сохраняющий числовую точность. Например, в формате RGB 555 каждый компонент цвета выражается в 5-битах. getdata возвращает каждый цвет как uint8 значение.

Можно указать требуемый тип данных getdata для использования для возвращенных данных. Например, можно указать, что getdata возврат кадров изображения в виде массива класса double. Для просмотра списка всех поддерживаемых типов данных см. getdata справочная страница.

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

  1. Создать объект получения изображения - в этом примере создается объект ввода видео для устройства получения изображения Matrox. Для запуска этого примера в системе используйте imaqhwinfo чтобы получить конструктор объекта для устройства получения изображения и заменить этот синтаксис следующим кодом.

    vid = videoinput('matrox',1);
  2. Ввод одного кадра в рабочее пространство - вызов getsnapshot для ввода кадра в рабочую область.

    frame = getsnapshot(vid);
  3. Просмотр класса возвращенных данных - используйте class для определения типа данных, используемого для возвращенных данных изображения.

    class(frame)
    
    ans =
    
      uint8
  4. Очистить - всегда удалять объекты сбора изображений из памяти и переменные, которые ссылаются на них, когда они больше не нужны.

    delete(vid)
    clear vid

Просмотр полученных данных

После переноса данных в рабочую область MATLAB их можно просматривать как любое другое изображение в MATLAB.

Программное обеспечение Toolbox™ получения изображений включает в себя функцию, imaqmontage, который можно использовать для просмотра всех кадров многокадрового массива изображений в одном объекте изображения MATLAB. imaqmontage упорядочивает кадры так, что они примерно образуют квадрат. imaqmontage может быть полезен для визуального сравнения нескольких кадров.

MATLAB включает две функции, image и imagesc, которые отображают изображения в окне фигуры. Обе функции создают объект изображения MATLAB для отображения кадра. Свойства объекта изображения можно использовать для управления аспектами отображения. imagesc функция автоматически масштабирует входные данные.

Программное обеспечение Toolbox™ обработки изображений включает в себя дополнительную подпрограмму отображения, называемую imshow. Как image и imagesc, эта функция создает объект изображения MATLAB. Однако imshow также автоматически задает различные свойства объекта изображения для оптимизации отображения.