exponenta event banner

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