imcolordiff

Цветовое различие на основе CIE94 или стандарта CIE2000

Описание

пример

dE = imcolordiff(I1,I2) вычисляет цветовую разность между двумя изображениями RGB или картами цветов с помощью стандарта CIE94.

пример

dE = imcolordiff(I1,I2,Name,Value) задает дополнительные аспекты расчета, такие как входное цветовое пространство и стандарт CIE, с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Считайте цветное изображение в рабочую область.

I1 = imread('peppers.png');
imshow(I1)

Figure contains an axes. The axes contains an object of type image.

Измените контраст местного колорита в изображении.

I2 = localcontrast(I1);
imshow(I2)

Figure contains an axes. The axes contains an object of type image.

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

dE = imcolordiff(I1,I2);

Отобразите цветовое различие как изображение. Масштабируйте область значений отображения, чтобы использовать полный спектр пиксельных значений в dE.

imshow(dE,[])

Figure contains an axes. The axes contains an object of type image.

Считайте и отобразите изображение ткани, окрашенной hemotoxylin и эозином (H&E).

he = imread('hestain.png');
imshow(he)

Figure contains an axes. The axes contains an object of type image.

Преобразуйте изображение в L*a*b* цветовое пространство.

lab = rgb2lab(he);

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

lab2 = lab;
scaleFactor = 1.1;
lab2(:,:,2) = scaleFactor*lab(:,:,2);

Вычислите цветовую разность оригинального и улучшенного изображения в L*a*b* цветовое пространство.

dE = imcolordiff(lab,lab2,'isInputLab',true);

Отобразите цветовое различие как изображение. Масштабируйте область значений отображения, чтобы совпадать с областью значений пиксельных значений в dE. Яркие области указывают на самое большое цветовое различие и соответствуют розовым областям ткани.

imshow(dE,[])

Figure contains an axes. The axes contains an object of type image.

Задайте два значения цвета RGB.

pureRed = uint8([255,0,0]);
darkRed = uint8([255,10,50]);

Вычислите цветовую разность цветов с помощью стандарта CIEDE2000.

dE = imcolordiff(pureRed,darkRed,"Standard","CIEDE2000")
dE = single
    7.4449

Считайте и отобразите изображение RGB матрицы.

fabric = imread('fabric.png');
imshow(fabric)

Figure contains an axes. The axes contains an object of type image.

Симулируйте второе изображение матрицы путем изменения контраста местного колорита в изображении.

fabric2 = localcontrast(fabric);
imshow(fabric2)

Figure contains an axes. The axes contains an object of type image.

Вычислите цветовую разность двух изображений с помощью стандарта CIEDE2000. Задайте коэффициент яркости и факторы взвешивания K1 и K2, подходящие для текстиля.

dE = imcolordiff(fabric,fabric2,'Standard','CIEDE2000', ...
    'kL',2,'K1',0.048,'K2',0.014);

Отобразите цветовое различие. Масштабируйте область значений отображения к полному спектру пиксельных значений в dE.

imshow(dE,[])

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Первый набор цветных данных в виде m-by-n-by-3 числовой массив, представляющий изображение или c-by-3 числовая матрица, представляющая набор цветов c. I1 и I2 должен быть одного размера со значениями в том же цветовом пространстве.

По умолчанию, imcolordiff функция интерпретирует цветные данные как значения цвета RGB. Чтобы вычислить цветовую разность в L*a*b* цветовое пространство, задайте 'isInputLab'аргумент как true. L*a*b* значения цвета может иметь тип данных single или double только.

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

Второй набор цветных данных в виде m-by-n-by-3 числовой массив, представляющий изображение или c-by-3 числовая матрица, представляющая набор цветов c. I1 и I2 должен быть одного размера со значениями в том же цветовом пространстве.

По умолчанию, imcolordiff интерпретирует цветные данные как значения цвета RGB. Вычислять разность раскрашивает L*a*b* цветовое пространство, задайте 'isInputLab'аргумент как true. L*a*b* значения цвета может иметь тип данных single или double только.

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

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

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

Пример: 'Standard',"CIEDE2000" вычисляет цветовую разность между двумя изображениями RGB с помощью стандарта CIEDE2000.

Стандарт CIE использовался для расчета значения цветового различия в виде разделенной запятой пары, состоящей из 'Standard' и одно из этих значений:

ЗначениеОписание
"CIE94"Стандарт CIE94. Этот стандарт улучшает перцепционные неоднородности стандарта CIE76, реализованного в deltaE функция.
"CIEDE2000"Стандарт CIEDE2000. Этот стандарт далее улучшает перцепционную однородность посредством пяти дополнительных коррекций: срок вращения оттенка, компенсация за нейтральные цвета и компенсация за легкость, цветность и оттенок.

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

Значения цвета находятся в L*a*b* цветовое пространство в виде разделенной запятой пары, состоящей из 'isInputLab' и числовой или логический 0 ложь) или 1 TRUE)..

Коэффициент яркости в виде разделенной запятой пары, состоящей из 'kL' и числовой скаляр. Коэффициентом яркости обычно является 1 для приложений в графических искусствах и 2 для приложений в текстиле.

Фактор взвешивания K1 в виде разделенной запятой пары, состоящей из 'K1' и числовой скаляр. Фактором взвешивания K1 обычно является 0.045 для приложений в графических искусствах и 0.048 для приложений в текстиле.

Фактор взвешивания K2 в виде разделенной запятой пары, состоящей из 'K2' и числовой скаляр. Фактором взвешивания K2 обычно является 0.015 для приложений в графических искусствах и 0.014 для приложений в текстиле.

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

свернуть все

Цветовое различие (дельта E), возвращенный как одно из следующих.

  • m-by-n матрица, когда вход окрашивают данные I1 и I2 представляйте изображения

  • c - вектор-столбец элемента, когда I1 и I2 представляйте набор цветов c

Если I1 или I2 имеет тип данных double, затем dE имеет тип данных double. В противном случае, dE имеет тип данных single.

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

Советы

  • Чтобы вычислить цветовые разности в соответствии со стандартом CIE76, используйте deltaE функция. Эта функция быстрее, чем imcolordiff функция, но менее точный.

Ссылки

[1] Шарма, Gaurav, Вэньчэн У и Эдул Н. Дэлэл, "Формула Цветового различия CIEDE2000: Примечания Реализации, Дополнительные Тестовые данные и Математические Наблюдения". Цветное Исследование и Приложение 30, № 1 (февраль 2005): 21–30. https://doi.org/10.1002/col.20070.

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