Для большинства устройств получения изображений формат видео видеопотока определяет цветовое пространство полученных данных изображения, то есть, способ, которым информация о цвете представлена численно.
Например, много устройств представляют цвета как значения RGB. В этом цветовом пространстве цвета представлены как комбинация различной интенсивности красного, зеленого цвета, и синие. Другое цветовое пространство, широко использованное для цифрового видео, является цветовым пространством YCbCr. В этом цветовом пространстве яркость (яркость или интенсивность) информация хранится как один компонент (Y). Цветность (цвет) информация хранится как два компонента цветового различия (Cb и Cr). Cb представляет различие между синим компонентом и ссылочным значением. Cr представляет различие между красным компонентом и ссылочным значением.
Тулбокс может возвратить данные изображения в шкале полутонов, RGB и YCbCr. Чтобы задать цветное представление данных изображения, установите значение свойства ReturnedColorSpace
. К кадрам изображения на дисплее с помощью image
, imagesc
или функций imshow
, данные должны использовать цветовое пространство RGB. Другой продукт MathWorks®, программное обеспечение Image Processing Toolbox™, включает функции, которые преобразовывают данные YCbCr в данные о RGB, и наоборот.
Некоторые устройства, которые утверждают, что поддержали цветовое пространство YUV на самом деле, поддерживают цветовое пространство YCbCr. YUV подобен YCbCr, но не идентичен. Различием между YUV и YCbCr является масштабный коэффициент, применился к результату. YUV относится к особому масштабному коэффициенту, используемому в составном NTSC и форматах PAL. В большинстве случаев можно задать цветовое пространство YCbCr для устройств та поддержка YUV.
Можно определить пробел цвета по умолчанию устройства с помощью этого кода: vid.ReturnedColorSpace
, где vid
является именем видео объекта. Пример этого показывают на шаге 2 в примере ниже. Могут быть ситуации, когда вы хотите изменить цветовое пространство. Пример ниже показов случай, где пробелом цвета по умолчанию является rgb
, и вы изменяете его на grayscale
(шаг 3).
Следующий пример иллюстрирует, как задать цветовое пространство возвращенных данных изображения.
Создайте объект получения изображений — Этот пример создает объект ввода видео для типичного устройства получения изображений Windows®. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo
, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('winvideo',1);
Просмотрите пространство цвета по умолчанию, использованное для данных — значение свойства ReturnedColorSpace
указывает на цветовое пространство данных изображения.
vid.ReturnedColorSpace ans = rgb
Измените цветовое пространство, использованное для данных — Чтобы изменить цветовое пространство возвращенных данных изображения, установить значение свойства ReturnedColorSpace
.
vid.ReturnedColorSpace = 'grayscale' ans = grayscale
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Можно использовать свойства ReturnedColorSpace
и BayerSensorAlignment
управлять Байером demosaicing.
Если ваша камера использует фильтрацию Байера, тулбокс поддерживает шаблон Байера и может возвратить цвет при желании. Путем установки свойства ReturnedColorSpace
на 'bayer'
программное обеспечение Image Acquisition Toolbox™ будет demosaic шаблоны Байера, возвращенные оборудованием. Эта установка цветового пространства интерполирует закодированные изображения шаблона Байера в стандартные изображения RGB.
В порядке выполнить demosaicing, тулбокс должен знать пиксельное выравнивание датчика. Это - порядок красных, зеленых, и синих датчиков и обычно задается путем описания четырех пикселей в верхнем левом углу датчика. Это - выравнивание чувствительности полосы пикселей, как интерпретировано внутренним оборудованием камеры. Необходимо получить эту информацию из документации камеры и затем задать значение для выравнивания.
Если ваша камера может возвратить данные Байера, тулбокс может автоматически преобразовать его в данные о RGB для вас, или можно задать его, чтобы сделать так. Следующий двум примерам иллюстрирует оба варианта использования.
Ручное преобразование
Камера в этом примере имеет датчик Байера. Стандарт GigE Vision™ позволяет камерам сообщать приложениям, что данные являются закодированным Байером и предоставляют достаточно информации для приложения, чтобы преобразовать шаблон Байера в цветное изображение. В этом случае тулбокс автоматически преобразовывает шаблон Байера в изображение RGB.
Создайте видео объект vid
с помощью адаптера Видения GigE и обозначенного формата видео.
vid = videoinput('gige', 1, 'BayerGB8_640x480');
Просмотрите пространство цвета по умолчанию, использованное для данных.
vid.ReturnedColorSpace ans = rgb
Создайте изображение с одним кадром img
с помощью функции getsnapshot
.
img = getsnapshot(vid);
Просмотрите размер полученного изображения.
size(img) ans = 480 640 3
Иногда вы не можете хотеть, чтобы тулбокс автоматически преобразовал шаблон Байера в цветное изображение. Например, существует много различных алгоритмов, чтобы преобразовать от шаблона Байера в изображение RGB, и вы можете хотеть задать различный, чем использование тулбокса, или вы можете хотеть далее обработать необработанные данные прежде, чем преобразовать его в цветное изображение.
% Set the color space to grayscale. vid.ReturnedColorSpace = 'grayscale'; % Acquire another image frame. img = getsnapshot(vid); % Now check the size of the new frame acquired using grayscale. size(img) ans = 480 640
Заметьте, как размер, измененный от rgb
, отображает к изображению grayscale
путем сравнения size
вывод на шагах 4 и 5.
Можно опционально использовать функцию demosaic
в Image Processing Toolbox, чтобы преобразовать шаблоны Байера в цветные изображения.
% Create an image colorImage by using the demosaic function on the % image img and convert it to color. colorImage = demosaic(img, 'gbrg'); % Now check the size of the new color image. size(colorImage) ans = 480 640 3
Всегда удаляйте объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Автоматическое преобразование
Камера в этом примере возвращает данные, которые являются мозаикой Байера, но тулбокс не знает это, поскольку стандарт DCAM не имеет никакого пути к камере, чтобы передать это к программным приложениям. Необходимо знать это путем чтения спецификаций камеры или руководства. Тулбокс может автоматически преобразовать закодированные данные Байера в данные о RGB, но это должно быть запрограммировано, чтобы сделать так.
Создайте видео объект vid
с помощью адаптера DCAM и обозначенного формата видео для необработанных данных.
vid = videoinput('dcam', 1, 'F7_RAW8_640x480');
Просмотрите пространство цвета по умолчанию, использованное для данных.
vid.ReturnedColorSpace ans = grayscale
Создайте изображение с одним кадром img
с помощью функции getsnapshot
.
img = getsnapshot(vid);
Просмотрите размер полученного изображения.
size(img) ans = 480 640
Значением свойства ReturnedColorSpace
является grayscale
, потому что данные Байера - одно-полосы, и тулбокс еще не знает, что это должно декодировать данные. Установка свойства ReturnedColorSpace
к 'bayer'
указывает, что тулбокс должен декодировать данные.
% Set the color space to Bayer. vid.ReturnedColorSpace = 'bayer';
По порядку, чтобы правильно декодировать данные, тулбокс также должен знать выравнивание массива фильтра Байера. Это должно быть в документации камеры. Можно затем использовать свойство BayerSensorAlignment
установить выравнивание.
% Set the alignment. vid.BayerSensorAlignment = 'grbg';
getdata
и функции getsnapshot
теперь возвратят цветные данные.
% Acquire another image frame. img = getsnapshot(vid); % Now check the size of the new frame acquired returning color data. size(img) ans = 480 640 3
Удалите объект получения изображений из памяти.
delete(vid) clear vid