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

Понимание данных изображения

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

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

Следующие разделы описывают как тулбокс

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

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

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

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

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

Примечание

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

КОРОЛИ и размеры изображения

Когда вы задаете видимую область (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, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.

    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 кадров данных в рабочую область. Обратите внимание на то, что возвращенные данные являются четырехмерным массивом: каждый кадр 3D, и энный кадр обозначается четвертой размерностью.

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

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

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

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

    delete(vid)
    clear vid

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

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

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

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

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