3D-интерполяция дисплея RGB с использованием дисплея XYZ и RGB - PullRequest
0 голосов
/ 18 апреля 2019

Я работаю на дисплее и хочу интерполировать значения 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.

...