МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ТВ
отчет
по лабораторной работе №5
по дисциплине «Основы телевидения и видеотехники»
Тема: ИЗУЧЕНИЕ МЕТОДА ЦВЕТОКОРРЕКЦИИ ЦИФРОВОЙ КАМЕРЫ И АНАЛИЗ ЕГО ЭФФЕКТИВНОСТИ
Студенты гр. 0182 |
|
Корнилов А.М. Бронников Д.Д. |
Преподаватель |
|
Бахвалов М.В. |
Санкт-Петербург
2023
Цель работы
Целью работы является знакомство с классическим методом цветокоррекции цифровой камеры, анализ эффективности данного метода при выборе различных опорных цветов.
Теоретические сведения
Как физическое явление цвет характеризуют объективно измеряемыми параметрами: доминирующей длиной волны, яркостью и чистотой цвета. Как результат психофизического восприятия человеком цвет может быть описан плохо формализованными и субъективными характеристиками: светлота, насыщенность и цветовой тон. Оба набора характеристик, как субъективный, так и объективный сложны для аппаратной реализации и не могут быть использованы при формировании цветного изображения камерой и монитором.
Рис. 1. Кривые смешения для человеческого глаза
В основе колориметрического описания цвета лежит основной закон смешения, который утверждает, что любой цвет может быть выражен через три взаимно-независимые (опорные) цвета, или так называемые кардинальные стимулы.
Человек является трихроматом, то есть воспринимает видимый спектр излучения с помощью трех видов рецепторов. Исходя из трехстимульного представления о зрительной системе человека в качестве основных цветов для колориметрического определения цвета выбраны монохроматические красный, зеленый и синий с длинами волн 700 нм, 546.1 нм и 435.6 нм, соответственно.
Рис. 2. Локус с эллипсами Мак-Адама
Для учета особенностей зрительной системы человека был разработан ряд перцептуальных пространств. Наиболее удачным с точки зрения единообразия цветового восприятия считается разработанное специально для работы с перцептуальным критерием пространство L*a*b*.
Переход из цветового пространства XYZ в пространство CIE L*a*b* выполняется следующим образом:
где
.
Ошибка перехода:
.
Задача корректора состоит в том, чтобы приблизить спектральные свойства камеры к свойствам зрения человека. В рамках лабораторной работы мы будем использовать ColorChecker Macbeth (24 цвета).
Рис. 3. Вид тестовой таблицы ColorChecker Macbeth
Обработка результатов
Бронников, Камера № 2.
Рис. 4. Опорное изображение Рис. 5. Искаженное изображение
Рис. 6. Нормализованная Рис. 7. Цветовая мишень
спектральная чувствительность L, M, S после искажения
Случай, когда выбраны все 24 цвета на цветовой мишени:
Рис. 8. Изображение после коррекции (все 24 цвета на цветовой мишени)
Рис.
9. Коэффициенты (24 цвета)
Рис. 10. Локус полной коррекции (24
цвета)
Рис. 11. Столбиковая диаграмма (24 цвета)
Случай, когда выбраны оптимальные цвета, обеспечивающие минимум цветовой ошибки:
Рис. 12. Изображение после коррекции Рис. 13. Цвета ручной корректировки
Рис. 14. Коэффициенты пересчёта Рис. 15. Локус ручной корректировки
Рис. 16. Столбиковая диаграмма
Расчет качества цветокоррекции (домашнее задание)
Опорный и скорректированный цвета в RGB пространстве камеры требуется сначала перевести в XYZ, а затем в L*a*b* цветовое пространство, в котором нужно рассчитать цветовую ошибку.
Для перехода из RGB-пространства камеры в XYZ-пространство воспользуемся следующей формулой:
При преобразовании XYZ
-> L*a*b*
значения
возьмём равными 1, что соответствует
равноэнергетическому белому свету.
№ строки |
R_before |
R_after |
R_Ref |
G_before |
G_after |
G_ref |
B_before |
B_after |
B_ref |
1 |
0.00254612 |
0.00691413 |
0.00518629 |
0 |
0.00613632 |
0.0297751 |
0 |
0.00604883 |
0.0295568 |
8 |
0.00303972 |
0.00790145 |
0.00556449 |
0 |
0.00712792 |
0.0318139 |
0.000303527 |
0.00699541 |
0.031896 |
Для расчёта возьмём две строчки, первую и восьмую:
Автоматизируем процесс расчета, реализовав формулы в Matlab.
clear all
ref = [0.00518629; 0.0297751; 0.0295568];
after = [0.00691413; 0.00613632; 0.00604883];
Matrix=[0.4124564 0.3575761 0.1804375;
0.2126729 0.7151522 0.0721750;
0.0193339 0.1191920 0.9503041];
xyz_ref=Matrix*ref;
xyz_after=Matrix*after;
if xyz_ref(1,1)>0.008856
fx_ref=xyz_ref(1,1)^(1/3);
else
fx_ref=(903.3*xyz_ref(1,1)+16)/116;
end
if xyz_ref(2,1)>0.008856
fy_ref=xyz_ref(2,1)^(1/3);
else
fy_ref=(903.3*xyz_ref(2,1)+16)/116;
end
if xyz_ref(3,1)>0.008856
fz_ref=xyz_ref(3,1)^(1/3);
else
fz_ref=(903.3*xyz_ref(3,1)+16)/116;
end
if xyz_after(1,1)>0.008856
fx_after=xyz_after(1,1)^(1/3);
else
fx_after=(903.3*xyz_after(1,1)+16)/116;
end
if xyz_after(2,1)>0.008856
fy_after=xyz_after(2,1)^(1/3);
else
fy_after=(903.3*xyz_after(2,1)+16)/116;
end
if xyz_after(3,1)>0.008856
fz_after=xyz_after(3,1)^(1/3);
else
fz_after=(903.3*xyz_after(3,1)+16)/116;
end
L_ref=116*fy_ref-16;
L_after=116*fy_after-16;
a_ref=500*(fx_ref-fy_ref);
a_after=500*(fx_after-fy_after);
b_ref=200*(fy_ref-fz_ref);
b_after=200*(fy_after-fz_after);
Error_after=sqrt((L_ref-L_after)^2+(a_ref-a_after)^2+(b_ref-b_after)^2);
В результате получим для первой строки:
Для второй:
ref = [0.00556449; 0.0318139; 0.031896];
after = [0.00790145; 0.00712792; 0.00699541];
Программа для расчёта средней ошибки по всем значениям из файла:
clear all
path(path, 'C:\Users\danya\OneDrive\Рабочий стол\LABS')
R_ref = xlsread('CHISLA.xlsx', 'C2:C541')';
G_ref = xlsread('CHISLA.xlsx', 'F2:F541')';
B_ref = xlsread('CHISLA.xlsx', 'I2:I541')';
R_after = xlsread('CHISLA.xlsx', 'B2:B541')';
G_after = xlsread('CHISLA.xlsx', 'E2:E541')';
B_after = xlsread('CHISLA.xlsx', 'H2:H541')';
ref = [R_ref; G_ref; B_ref];
after = [R_after; G_after; B_after];
Matrix=[2.61107 -0.684828 0.134581;
-0.460615 1.56275 -0.360073;
-1.14337 -0.564008 6.15508];
xyz_ref=Matrix*ref;
xyz_after=Matrix*after;
for i = 1:540
if xyz_ref(1,i)>0.008856
fx_ref(i) = xyz_ref(1,1)^(1/3);
else
fx_ref(i) = (903.3*xyz_ref(1,i)+16)/116;
end
if xyz_ref(2,i)>0.008856
fy_ref(i) = xyz_ref(2,i)^(1/3);
else
fy_ref(i) =(903.3*xyz_ref(2,i)+16)/116;
end
if xyz_ref(3,1)>0.008856
fz_ref(i) = xyz_ref(3,i)^(1/3);
else
fz_ref(i) = (903.3*xyz_ref(3,i)+16)/116;
end
if xyz_after(1,i)>0.008856
fx_after(i) = xyz_after(1,i)^(1/3);
else
fx_after(i) = (903.3*xyz_after(1,i)+16)/116;
end
if xyz_after(1,i)>0.008856
fy_after(i) = xyz_after(2,i)^(1/3);
else
fy_after(i) = (903.3*xyz_after(2,i)+16)/116;
end
if xyz_after(1,i)>0.008856
fz_after(i) = xyz_after(3,i)^(1/3);
else
fz_after(i) = (903.3*xyz_after(3,i)+16)/116;
end
L_ref(i) = 116*fy_ref(i)-16;
L_after(i) = 116*fy_after(i)-16;
a_ref(i) = 500*(fx_ref(i)- fy_ref(i));
a_after(i) = 500*(fx_after(i)- fy_after(i));
b_ref(i) = 200*(fy_ref(i)- fz_ref(i));
b_after(i) = 200*(fy_after(i)- fz_after(i));
Error_after(i)=sqrt((L_ref(i)- L_after(i))^2+(a_ref(i)- a_after(i))^2+(b_ref(i)- b_after(i))^2);
end
Error = mean(Error_after)
Средняя ошибка E = 108,92
Корнилов, камера NIKON DX1.
Рис. 17. Опорное изображение Рис. 18. Искаженное изображение
Рис. 19. Нормализованная Рис. 20. Цветовая мишень
спектральная чувствительность L, M, S после искажения
Случай, когда выбраны все 24 цвета на цветовой мишени:
Рис. 21 Изображение после коррекции (все 24 цвета на цветовой мишени)
Рис.
22 Коэффициенты (24 цвета)
Рис. 23 Локус полной коррекции (24
цвета)
Рис. 24. Столбиковая диаграмма (24 цвета)
Случай, когда выбраны оптимальные цвета, обеспечивающие минимум цветовой ошибки:
Рис. 25. Изображение после
коррекции Рис. 26. Цвета ручной корректировки
Рис. 27. Коэффициенты пересчёта Рис. 28. Локус ручной корректировки
Рис. 29. Столбиковая диаграмма
