chromadapt

Настройте цветовой баланс изображения RGB с хроматической адаптацией

Описание

пример

B = chromadapt(A,illuminant) настраивает цветовой баланс изображения sRGB A согласно освещенной сцене. Осветитель должен находиться в том же цветовом пространстве, что и входное изображение.

пример

B = chromadapt(A,illuminant,Name,Value) настраивает цветовой баланс A использование пар "имя-значение" для управления дополнительными опциями.

Примеры

свернуть все

Чтение и отображение изображения с сильным желтым оттенком цвета.

A = imread('hallway.jpg');
imshow(A)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

Выберите пиксель на изображении, который должен выглядеть белым или серым цветом, например точку на стойке. Не выбирайте насыщенный пиксель, например точку на потолке. Отображение выбранной точки зеленого цвета.

x = 2800;
y = 1000;
gray_val = impixel(A,x,y);
drawpoint('Position',[x y],'Color','g');

Figure contains an axes. The axes with title Original Image contains 2 objects of type image, images.roi.point.

Используйте выбранный цвет в качестве опорного для освещения сцены и исправьте баланс белого изображения.

B = chromadapt(A,gray_val);

Отобразите исправленное изображение. Столбы теперь выглядят белыми, как и ожидалось, а остальная часть изображения не имеет желтого оттенка.

imshow(B)
title('White-Balanced Image')

Figure contains an axes. The axes with title White-Balanced Image contains an object of type image.

Откройте файл изображения, содержащий минимально обработанную линейную интенсивность RGB.

A = imread('foosballraw.tiff');

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

A = demosaic(A,'rggb');

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

A_sRGB = lin2rgb(A);
imshow(A_sRGB)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

Изображение имеет график X-Rite ® ColorChecker ® в сцене. Чтобы получить цвет окружающего света, отобразите значения RGB пикселя в одном из нейтральных закрашенных фигур графика. Интенсивность красного канала ниже, чем интенсивность двух других каналов, что указывает на то, что свет синевато-зеленый.

x = 1510;
y = 1250;
light_color = [A(y,x,1) A(y,x,2) A(y,x,3)]
light_color = 1x3 uint16 row vector

    7361   14968   10258

Сбалансировать цветовые каналы изображения. Используйте 'ColorSpace' опция, чтобы указать, что изображение и подсветка выражены в линейном RGB.

B = chromadapt(A,light_color,'ColorSpace','linear-rgb');

Отобразите цветное изображение с гамма- коррекцией.

B_sRGB = lin2rgb(B);
imshow(B_sRGB)
title('Color-Balanced Image')

Figure contains an axes. The axes with title Color-Balanced Image contains an object of type image.

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

patch_color = [B(y,x,1) B(y,x,2) B(y,x,3)]
patch_color = 1x3 uint16 row vector

   13010   13010   13010

Входные параметры

свернуть все

Изображение RGB, заданное как числовой массив m -by- n -by-3.

Типы данных: single | double | uint8 | uint16

Освещение сцены, заданное как 3-элементный числовой вектор. Осветитель должен быть в том же цветовом пространстве, что и входе изображение A.

Типы данных: single | double | uint8 | uint16

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: I2 = chromadapt(I,uint8([22 97 118]),'ColorSpace','linear-rgb') настраивает цветовой баланс изображения, I, в линейном цветовом пространстве RGB.

Цветовое пространство входного изображения и подсветчика, заданное как разделенная разделенными запятой парами, состоящая из 'ColorSpace' и 'srgb', 'adobe-rgb-1998', или 'linear-rgb'. Используйте 'linear-rgb' опция баланса цвета изображения RGB, интенсивность которого является линейной.

Типы данных: char | string

Хроматический метод адаптации, используемый для масштабирования значений RGB в A, заданная как разделенная разделенными запятой парами, состоящая из 'Method' и один из:

  • 'bradford'- Шкала с использованием модели конуса Брэдфорда

  • 'vonkries'- Шкала с использованием модели конуса фон Киса

  • 'simple'- Шкала с использованием подсветки

Типы данных: char | string

Выходные аргументы

свернуть все

Цветное изображение RGB, возвращаемое как m -by- n -by-3 числовой массив того же типа, что и A.

Ссылки

[1] Линдблум, Брюс. Хроматическая адаптация. http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html.

Введенный в R2017b
Для просмотра документации необходимо авторизоваться на сайте