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

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

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

Например, много устройств представляют цвета как значения RGB. В этом цветовом пространстве цвета представлены как комбинация различной интенсивности красного, зеленого цвета, и синие. Другое цветовое пространство, широко использованное для цифрового видео, является цветовым пространством YCbCr. В этом цветовом пространстве яркость (яркость или интенсивность) информация хранится как один компонент (Y). Цветность (цвет) информация хранится как два компонента цветового различия (Cb и Cr). Cb представляет различие между синим компонентом и ссылочным значением. Cr представляет различие между красным компонентом и ссылочным значением.

Тулбокс может возвратить данные изображения в шкале полутонов, RGB и YCbCr. Чтобы задать цветное представление данных изображения, установите значение ReturnedColorSpace свойство. К системам координат изображения на дисплее с помощью imageimagesc, или 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 функция, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.

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

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

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

    delete(vid)
    clear vid

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

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

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

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

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

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

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

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

    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

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

Камера в этом примере возвращает данные, которые являются мозаикой Байера, но тулбокс не знает это, поскольку стандарт 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 потому что данные Байера - одно-полосы, и тулбокс еще не знает, что это должно декодировать данные. Установка ReturnedColorSpace свойство к 'bayer' указывает, что тулбокс должен декодировать данные.

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