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')

Серый мировой алгоритм принимает, что значения 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) ']'])

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

свернуть все

Введите изображение 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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