illumgray

Оцените освещающий использующий серый мировой алгоритм

Описание

illuminant = illumgray(A) оценивает, что освещение сцены в RGB отображает A путем предположения, что средний цвет сцены является серым.

пример

illuminant = illumgray(A,percentile) оценивает освещение, исключая заданную нижнюю часть и главные процентили пиксельных значений.

illuminant = illumgray(___,Name,Value) оценивает освещение с помощью пар "имя-значение", чтобы управлять дополнительными опциями.

Примеры

свернуть все

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

A = imread('foosball.jpg');
figure
imshow(A,'InitialMagnification',25)
title('Original Image')

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

Серый мировой алгоритм принимает, что значения RGB линейны. Однако формат файла JPEG сохраняет образы в откорректированном гаммой sRGB цветовом пространстве. Отмените гамма-коррекцию при помощи rgb2lin функция.

A_lin = rgb2lin(A);

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

percentiles = 10;
illuminant = illumgray(A_lin,percentiles)
illuminant = 1×3

    0.2206    0.2985    0.5219

Третий коэффициент illuminant является самым большим, который сопоставим с синим оттенком изображения.

Правильные цвета путем обеспечения предполагаемого источника света chromadapt функция.

B_lin = chromadapt(A_lin,illuminant,'ColorSpace','linear-rgb');

Чтобы отобразить белым сбалансированное изображение правильно на экране, примените гамма-коррекцию при помощи lin2rgb функция.

B = lin2rgb(B_lin);

Отобразите откорректированное изображение, установив дополнительное увеличение.

figure
imshow(B,'InitialMagnification',25)
title(['White-Balanced Image Using Gray World with percentiles=[' ...
    num2str(percentiles) ' ' num2str(percentiles) ']'])

Figure contains an axes object. The axes object with title White-Balanced Image Using Gray World with percentiles=[10 10] contains an object of type image.

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

свернуть все

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

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

Процентиль пикселей, чтобы исключить из освещающей оценки в виде числового скаляра или числового вектора с 2 элементами. Исключая пиксели помогает препятствовать тому, чтобы переэкспонированные и недоэкспонируемые пиксели скосили оценку.

  • Если percentile скаляр, то же значение используется и для нижней процентили и для главной процентили. В этом случае, percentile должен быть в области значений [0, 50] так, чтобы сумма нижней части и главных процентилей не превышала 100.

  • Если percentile вектор с 2 элементами, первым элементом является нижняя процентиль, и вторым элементом является главная процентиль. Обе процентили должны быть в области значений [0, 100), и их сумма не может превысить 100.

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы name-value

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

Пример: illuminant = illumgray(I,'Mask',m) оценивает источник света сцены использование подмножества пикселей в изображении I, выбранный согласно бинарной маске, m.

Отобразите маску в виде разделенной запятой пары, состоящей из 'Mask' и m-by-n логический или числовой массив. Маска указывает, какие пиксели входа отображают A использовать при оценке источника света. Расчет исключает пиксели в A это соответствует значению маски 0. По умолчанию маска имеет всю 1 с и все пиксели в A включены в оценку.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Тип векторной нормы (p-норма) в виде разделенной запятой пары, состоящей из 'Norm' и положительный числовой скаляр. P-норма влияет на вычисление среднего значения RGB во входном изображении A. P-норма задана как сумма (abs (x)p) ^ (1/p).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Оценка освещения сцены, возвращенного как числовой вектор-строка с 3 элементами. Эти три элемента соответствуют красным, зеленым, и синим значениям источника света.

Типы данных: double

Советы

  • Серый мировой алгоритм принимает универсальное освещение и линейные значения RGB. Если вы работаете с нелинейным sRGB или изображениями Adobe RGB, используйте rgb2lin функционируйте, чтобы отменить гамма-коррекцию перед использованием illumgray. Кроме того, убедитесь, что преобразовали хроматически адаптированное изображение назад в sRGB при помощи lin2rgb функция.

  • Когда вы задаете Mask, нижняя процентиль и главная процентиль применяются к изображению маскированному.

  • Можно настроить цветовой баланс изображения, чтобы удалить освещение сцены при помощи chromadapt функция.

Ссылки

[1] Ebner, Марк. "Серое мировое предположение". Цветное постоянство. Чичестер, Западный Сассекс: John Wiley & Sons, 2007.

Смотрите также

| | | |

Введенный в R2017b