colorangle

Угол между двумя векторами RGB

Описание

пример

angle = colorangle(rgb1,rgb2) вычисляет угол в степенях между двумя векторами RGB.

Примеры

свернуть все

Чтение тестового изображения. Изображение представляет собой необработанные данные, полученные цифровой камерой Canon EOS 30D после коррекции уровня черного и масштабирования интенсивности до 16 бит на пиксель. Не было применено демозафикации, балансировки белого, улучшения цвета, шумовой фильтрации или гамма- коррекции.

RAW = imread('foosballraw.tiff');

Интерполяция с использованием demosaic функция для получения цветного изображения. Шаблон массива цветного фильтра RGGB.

A = demosaic(RAW,'rggb');

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

A_sRGB = lin2rgb(A);
imshow(A_sRGB)

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

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

illuminant_groundtruth = [0.0717 0.1472 0.0975];

Чтобы избежать искривления оценки освещения, исключить график ColorChecker, создав маску.

mask = true(size(A,1), size(A,2));
mask(920:1330,1360:1900) = false;

Запустите три различных алгоритма оценки освещения: illumwhite, illumgray, и illumpca.

illuminant_whitepatch = illumwhite(A,'Mask',mask);
illuminant_grayworld = illumgray(A,'Mask',mask);
illuminant_pca = illumpca(A,'Mask',mask);

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

angle_whitepatch = colorangle(illuminant_whitepatch, illuminant_groundtruth)
angle_whitepatch = 5.0921
angle_grayworld = colorangle(illuminant_grayworld, illuminant_groundtruth)
angle_grayworld = 5.1036
angle_pca = colorangle(illuminant_pca, illuminant_groundtruth)
angle_pca = 5.0134

Значение angle_pca является наименьшим, что указывает на то, что алгоритм оценки освещения PCA наиболее близок к основной истине освещенности для этого изображения.

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

свернуть все

Первый вектор RGB, заданный как 3-элементный числовой вектор.

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

Второй вектор RGB, заданный как 3-элементный числовой вектор.

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

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

свернуть все

Угол между векторами RGB, возвращенный как числовой скаляр.

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

Подробнее о

свернуть все

Угловая ошибка

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

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