3D interpolation using LUT very slow, alternative method
9 次查看(过去 30 天)
显示 更早的评论
Hello,
In image processing, converting XYZ(CIE 1931 XYZ space) to display RGB, We have created a LUT for our display. it is 3d cubic interpolation based and our results are correct. But the issue is that our code is extremly slow becasue it is pixel by pixel based. The function is such that
[rgbOut]=MyDisplayXYZ2RGB(NewXYZ, XYZlut,RGBlut);
where NewXYZ are XYZ value for which RGB are to be interpolated. XYZlut and RGBlut are the values which are used to interpolate using cubic interpolation method. We cacluate CIELAB DE and use it as criteria for the rgbOut.
Our image size is 4053x2050 and our LUT routine takes 2hours to complate because uses loop.
My question is that, if Matlab interp3 or some other function can interpolate like this? Will it be faster?
Can you please guide me how can I use interp3 for this data interpolation? Actually, I do not understand how can I input my LUTs in the interp3. Thank you.
Seoncd option for me, If, I hare my matlab code, can be fixed to take whole vector instead pixel?
Note:
NewXYZ is mx3 dimension
XYZlut [X Y Z] ] and RGBlut [R G B] are nx3 dimension
rgbOut must be mx3 dimension having R,G,B values
----Sample data
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];
2 个评论
KSSV
2019-4-16
My question is that, if Matlab interp3 or some other function can interpolate like this?
Very much possible...
Will it be faster?
Definetely it will be faster.
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!