Для большинства устройств получения изображений формата видео видеопотока определяет цветовое пространство полученных данных изображения, то есть способ численного представления информации о цвете.
Для примера многие устройства представляют цвета как значения 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
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
vid = videoinput('winvideo',1);
Просмотрите цветовое пространство по умолчанию, используемое для данных - Значение ReturnedColorSpace
свойство указывает цветовое пространство данных изображения.
vid.ReturnedColorSpace ans = rgb
Измените цветовое пространство, используемое для данных - Чтобы изменить цветовое пространство возвращаемых данных изображения, установите значение ReturnedColorSpace
свойство.
vid.ReturnedColorSpace = 'grayscale' ans = grayscale
Очистка - Всегда удаляйте объекты сбора изображений из памяти, и переменные, которые ссылаются на них, когда они вам больше не нужны.
delete(vid) clear vid
Можно использовать ReturnedColorSpace
и BayerSensorAlignment
свойства для контроля демозаицирования Байера.
Если ваша камера использует фильтрацию Байера, тулбокс поддерживает шаблон Байера и при желании может вернуть цвет. Путем установки ReturnedColorSpace
свойство к 'bayer'
программное обеспечение Image Acquisition Toolbox™ будет демонстрировать шаблоны Байера, возвращенные оборудованием. Этот параметр цветового пространства интерполирует изображения с шаблоном Байера в стандартные изображения RGB.
В порядок выполнения демосаскирования тулбокс должен знать пиксельное выравнивание датчика. Это порядок красных, зеленых и синих датчиков и обычно определяется описанием четырех пикселей в левом верхнем углу датчика. Это - полоса выравнивание чувствительности пикселей, интерпретированное внутренним оборудованием камеры. Необходимо получить эту информацию из документации камеры, а затем указать значение для выравнивания.
Если ваша камера может вернуть данные Bayer, тулбокс может автоматически преобразовать их в данные RGB для вас, или можно задать это. Следующие два примера иллюстрируют оба примера использования.
Ручное преобразование
Камера в этом примере имеет датчик Байера. Стандарт GigE Vision™ позволяет камерам информировать приложения о том, что данные закодированы Байером, и предоставляет достаточную информацию для преобразования шаблона Байера в цветное изображение. В этом случае тулбокс автоматически преобразует шаблон Байера в изображение RGB.
Создайте видео объекта vid
использование адаптера GigE Vision и назначенного видеосигнала формата.
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
Автоматическое преобразование
Камера в этом примере возвращает данные, которые являются мозаикой Bayer, но тулбокс не знает его, так как стандарт 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
потому что данные Bayer являются однополосными, и тулбокс еще не знает, что ему нужно декодировать данные. Установка ReturnedColorSpace
свойство к 'bayer'
указывает, что тулбокс должен декодировать данные.
% Set the color space to Bayer. vid.ReturnedColorSpace = 'bayer';
В порядок, чтобы правильно декодировать данные, тулбоксу также нужно знать выравнивание массива фильтров Байера. Это должно быть в документации камеры. Затем можно использовать BayerSensorAlignment
свойство для установки выравнивания.
% Set the alignment. vid.BayerSensorAlignment = 'grbg';
The 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