Определение цветового пространства

Определение цветового пространства

Для большинства устройств получения изображений формата видео видеопотока определяет цветовое пространство полученных данных изображения, то есть способ численного представления информации о цвете.

Для примера многие устройства представляют цвета как значения 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).

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

  1. Создайте объект сбора изображений - В этом примере создается объект входа видео для типовой Windows® устройство для сбора изображений. Чтобы запустить этот пример в своей системе, используйте imaqhwinfo функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.

    vid = videoinput('winvideo',1);
  2. Просмотрите цветовое пространство по умолчанию, используемое для данных - Значение ReturnedColorSpace свойство указывает цветовое пространство данных изображения.

    vid.ReturnedColorSpace
    
    ans = 
    
    rgb
  3. Измените цветовое пространство, используемое для данных - Чтобы изменить цветовое пространство возвращаемых данных изображения, установите значение ReturnedColorSpace свойство.

    vid.ReturnedColorSpace = 'grayscale'
    
    ans = 
    
    grayscale
  4. Очистка - Всегда удаляйте объекты сбора изображений из памяти, и переменные, которые ссылаются на них, когда они вам больше не нужны.

    delete(vid)
    clear vid

Преобразование изображений Байера

Можно использовать ReturnedColorSpace и BayerSensorAlignment свойства для контроля демозаицирования Байера.

Если ваша камера использует фильтрацию Байера, тулбокс поддерживает шаблон Байера и при желании может вернуть цвет. Путем установки ReturnedColorSpace свойство к 'bayer'программное обеспечение Image Acquisition Toolbox™ будет демонстрировать шаблоны Байера, возвращенные оборудованием. Этот параметр цветового пространства интерполирует изображения с шаблоном Байера в стандартные изображения RGB.

В порядок выполнения демосаскирования тулбокс должен знать пиксельное выравнивание датчика. Это порядок красных, зеленых и синих датчиков и обычно определяется описанием четырех пикселей в левом верхнем углу датчика. Это - полоса выравнивание чувствительности пикселей, интерпретированное внутренним оборудованием камеры. Необходимо получить эту информацию из документации камеры, а затем указать значение для выравнивания.

Если ваша камера может вернуть данные Bayer, тулбокс может автоматически преобразовать их в данные RGB для вас, или можно задать это. Следующие два примера иллюстрируют оба примера использования.

Ручное преобразование

Камера в этом примере имеет датчик Байера. Стандарт GigE Vision™ позволяет камерам информировать приложения о том, что данные закодированы Байером, и предоставляет достаточную информацию для преобразования шаблона Байера в цветное изображение. В этом случае тулбокс автоматически преобразует шаблон Байера в изображение RGB.

  1. Создайте видео объекта vid использование адаптера GigE Vision и назначенного видеосигнала формата.

    vid = videoinput('gige', 1, 'BayerGB8_640x480');
  2. Просмотрите цветовое пространство по умолчанию, используемое для данных.

    vid.ReturnedColorSpace
    
    ans = 
    
    rgb
  3. Создайте однокадровое изображение img использование getsnapshot функция.

    img = getsnapshot(vid);
  4. Просмотрите размер полученного изображения.

    size(img)
    
    ans = 
    
    480  640  3 
  5. Иногда можно не хотеть, чтобы тулбокс автоматически преобразовывал шаблон Байера в цветное изображение. Например, существует несколько различных алгоритмов для преобразования из шаблона Байера в изображение 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.

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

    delete(vid)
    clear vid

Автоматическое преобразование

Камера в этом примере возвращает данные, которые являются мозаикой Bayer, но тулбокс не знает его, так как стандарт DCAM не имеет никакого способа передать это камере в программные обеспечения. Вы должны знать это, прочитав спецификации камеры или руководство. Тулбокс может автоматически преобразовать закодированные данные Байера в данные RGB, но для этого его необходимо запрограммировать.

  1. Создайте видео объекта vid использование DCAM-адаптера и назначенного видео- формата для необработанных данных.

    vid = videoinput('dcam', 1, 'F7_RAW8_640x480');
  2. Просмотрите цветовое пространство по умолчанию, используемое для данных.

    vid.ReturnedColorSpace
    
    ans = 
    
    grayscale
  3. Создайте однокадровое изображение img использование getsnapshot функция.

    img = getsnapshot(vid);
  4. Просмотрите размер полученного изображения.

    size(img)
    
    ans = 
    
    480  640 
  5. Значение ReturnedColorSpace свойство grayscale потому что данные Bayer являются однополосными, и тулбокс еще не знает, что ему нужно декодировать данные. Установка ReturnedColorSpace свойство к 'bayer' указывает, что тулбокс должен декодировать данные.

    % Set the color space to Bayer.
    vid.ReturnedColorSpace = 'bayer';
  6. В порядок, чтобы правильно декодировать данные, тулбоксу также нужно знать выравнивание массива фильтров Байера. Это должно быть в документации камеры. Затем можно использовать 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