exponenta event banner

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

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

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

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

Панель инструментов может возвращать данные изображения в градациях серого, RGB и YCbCr. Чтобы задать цветовое представление данных изображения, задайте значение ReturnedColorSpace собственность. Отображение кадров изображения с помощью image, imagesc, или imshow , данные должны использовать цветовое пространство RGB. Другой продукт MathWorks ®, программное обеспечение 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 свойства для управления Bayer demosaicing.

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

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

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

Преобразование вручную

Камера в этом примере имеет датчик Bayer. Стандарт GigE Vision™ позволяет камерам информировать приложения о том, что данные закодированы Bayer, и предоставляет достаточно информации для приложения, чтобы преобразовать рисунок Bayer в цветное изображение. В этом случае панель инструментов автоматически преобразует узор Байера в изображение 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 функция на панели инструментов обработки изображений для преобразования узоров Байера в цветные изображения.

    % 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 не позволяет камере передавать эти данные программным приложениям. Вы должны знать это, прочитав спецификации камеры или руководство. Панель инструментов может автоматически преобразовывать кодированные данные Bayer в данные 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. Чтобы правильно декодировать данные, инструментарий также должен знать выравнивание массива фильтров 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