colorangle

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

Описание

пример

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

Примеры

свернуть все

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

RAW = imread('foosballraw.tiff');

Интерполируйте использование demosaic функция, чтобы получить цветное изображение. Диаграмма направленности антенной решетки цветового фильтра является RGGB.

A = demosaic(RAW,'rggb');

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

A_sRGB = lin2rgb(A);
imshow(A_sRGB)

Figure contains an axes object. The axes object 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