Я работаю на дисплее и хочу интерполировать значения RGB из XYZ.Я использовал устройства для измерения значения XYZ, соответствующего значениям RGB (9x9x9).Теперь у меня есть XYZ моего изображения, и я хочу преобразовать для отображения RGB, используя интерполяцию измеренных XYZ и RGB.
Я уже создал LUT для интерполяции значений путем нахождения минимальных различий CIELAB, и он работает хорошо.Но это очень медленно, потому что это основано на пикселях.Я попробовал interp3 функцию Matlab или interpn.Я пробовал по-разному, но я не уверен, как я могу внести вклад в эти функции.Мои данные выглядят так (для примера я не публикую данные 9x9x9).
XYZlut=[ 0.085954 0.097486 0.13636
0.19496 0.16676 0.62822
0.30154 0.19816 1.3158
0.68737 0.35471 3.4668
1.5699 0.69064 8.4565
3.052 1.2449 16.831
6.2012 2.4245 34.592
12.034 4.5791 67.462
22.04 8.2393 123.88
39.937 14.723 224.99];
RGBlut=[0 0 0
0 0 19
0 0 38
0 0 57
0 0 76
0 0 95
0 0 114
0 0 133
0 0 152
0 0 171] ;
NewXYZ= [62.10263 66.39005 169.7117
76.8211 82.24026 201.0852
73.61543 78.18117 195.2129
71.9406 76.70645 190.4692];
[NewXYZ1, NewXYZ2, NewXYZ3]=meshgrid(NewXYZ(:,1),NewXYZ(:,2),NewXYZ(:,3));
newRGB=interp3(XYZlut(:,1),XYZlut(:,2),XYZlut(:,3),RGBlut,NewXYZ1, NewXYZ2, NewXYZ3,'cubic')
Я хочу интерполировать newRGB, соответствующий NewXYZ, используя XYZlut и RGBlut.Я буду благодарен, если кто-нибудь подскажет мне, как я могу использовать interp3 / interpn или любую другую функцию Matlab для интерполяции данных этого типа.Я работаю над Matlab2018b.