Рисунки в этой документации показывают видеопоток и содержимое буфера памяти как последовательность отдельных кадров. В действительности каждый кадр является многомерным массивом. Следующая фигура иллюстрирует формат отдельного кадра.
Формат отдельного кадра
Следующие разделы описывают как тулбокс
Этот раздел также описывает несколько способов просмотреть полученные данные изображения.
Формат видео, используемый устройством получения изображений, является первичным детерминантом ширины, высоты и количества полос в каждом фрейме изображения. Устройства получения изображений обычно поддерживают несколько форматов видео. Вы выбираете формат видео, когда вы создаете объект ввода видео (описанный в Определении Формата видео). Объектно-ориентированная память ввода видео формат видео в свойстве VideoFormat
.
Объектно-ориентированная память ввода видео разрешение видео в свойстве VideoResolution
.
Каждый фрейм изображения является трехмерным; однако, формат видео определяет количество полос в третьей размерности. Для цветных форматов видео, таких как RGB, каждый фрейм изображения имеет три полосы: один каждый для красных, зеленых, и синих данных. Другие форматы видео, такие как полутоновый стандарт RS170, имеют только одну полосу. Объектно-ориентированная память ввода видео размер третьей размерности в свойстве NumberOfBands
.
Поскольку устройства обычно специальное разрешение видео как ширина высотой, тулбокс использует это соглашение для свойства VideoResolution
. Однако, когда данные принесены в рабочую область MATLAB®, размерности фрейма изображения перечислены в обратном порядке, высота шириной, потому что MATLAB выражает матричные размерности как строку столбцом.
Когда вы задаете видимую область (ROI) в получаемом изображении, размерности ROI определяют размерности возвращенных фреймов изображения. Свойство VideoResolution
задает размерности данных изображения, обеспечиваемых устройством; свойство ROIPosition
задает размерности регистрируемых фреймов изображения. Смотрите страницу с описанием свойства ROIPosition
для получения дополнительной информации.
Следующий пример иллюстрирует, как формат видео влияет на размер возвращенных фреймов изображения.
Выберите формат видео — Использование функция 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'
Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Matrox с помощью формата видео по умолчанию, RS170. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo
, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('matrox',1);
Просмотрите формат видео и свойства разрешения видео — тулбокс создает объект с форматом видео по умолчанию. Этот формат задает разрешение видео.
vid.VideoFormat ans = M_RS170 vid.VideoResolution ans = [640 480]
Принесите один кадр в рабочую область — Вызывают функцию getsnapshot
, чтобы принести кадр в рабочую область.
frame = getsnapshot(vid);
Размерности возвращенных данных отражают разрешение изображения и значение свойства NumberOfBands
.
vid.NumberOfBands ans = 1 size(frame) ans = 480 640
Запустите объект получения изображений — Вызывают функцию start
, чтобы запустить объект получения изображений.
start(vid)
Объект выполняет мгновенный триггер и начинает получать кадры данных.
Принесите несколько кадров в рабочую область — Вызывают функцию getdata
, чтобы принести кадры повторного изображения в рабочее пространство MATLAB.
data = getdata(vid,10);
Функция getdata
приносит 10 кадров данных в рабочую область. Обратите внимание на то, что возвращенные данные являются четырехмерным массивом: каждый кадр 3D, и энный кадр обозначается четвертой размерностью.
size(data) ans = 480 640 1 10
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
По умолчанию тулбокс возвращает фреймы изображения в типе данных, используемом устройством получения изображений. Если нет никакого типа данных MATLAB, который совпадает с собственным типом данных объекта, getdata
выбирает тип данных MATLAB, который сохраняет числовую точность. Например, в формате RGB 555, каждый компонент цвета выражается в 5 битах. getdata
возвращает каждый цвет как значение uint8
.
Можно задать тип данных, который вы хотите, чтобы getdata
использовал для возвращенных данных. Например, можно указать, что getdata
возвращает фреймы изображения как массив класса double
. Чтобы видеть список всех поддерживаемых типов данных, смотрите страницу с описанием getdata
.
Следующий пример иллюстрирует тип данных возвращенных данных изображения.
Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Matrox. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo
, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('matrox',1);
Принесите один кадр в рабочую область — Вызывают функцию getsnapshot
, чтобы принести кадр в рабочую область.
frame = getsnapshot(vid);
Просмотрите класс возвращенных данных — Использование функция class
, чтобы определить тип данных, используемый для возвращенных данных изображения.
class(frame) ans = uint8
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
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
также автоматически устанавливает различные свойства объекта изображения оптимизировать отображение.