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