DJI x7 ACES
4353 2 2020-5-16
Uploading and Loding Picture ...(0/1)
o(^-^)o
fans60d0826b
lvl.1
Flight distance : 310942 ft
France
Offline

Hi Guys,

I'm really interest to use ACES colorspace to work with X7 footage.
I read this article: https://www.dji.com/newsroom/news/dji-joins-aces-logo-program-a-film-industry-standard

But i don't have any more informations.

Anyone know the workflow?

C
2020-5-16
Use props
fans60d0826b
lvl.1
Flight distance : 310942 ft
France
Offline

I have work recently with X7 footage converted in ACES.
So people have IDT inhouse, anyonw can share one.
2020-6-1
Use props
Francisco Biancardi
New

Argentina
Offline

Hi, it also my first day traing to do this. i found something in somewhere. i will try to install this in the nexts days. also if someone succed, please share the workaround. thanks ! in this case is using a DCTL in davinci resolve!. good luck every one!

// D-Log D-Gamut DCTL

#define DGAMUT_2_AP0    mult_f33_f33(mult_f33_f33(DGAMUT_2_XYZ_MAT, D65_2_D60_CAT), XYZ_2_AP0_MAT)
#define DGAMUT_2_AP1    mult_f33_f33(mult_f33_f33(DGAMUT_2_XYZ_MAT, D65_2_D60_CAT), XYZ_2_AP1_MAT)

typedef struct {
float3 c0, c1, c2;
} mat3;

__CONSTANT__ mat3 AP0_2_XYZ_MAT =
{ {0.9525523959f, 0.3439664498f, 0.0f}, {0.0f, 0.7281660966f, 0.0f}, {0.0000936786f, -0.0721325464f, 1.0088251844f} };
__CONSTANT__ mat3 XYZ_2_AP0_MAT =
{ {1.0498110175f, -0.4959030231f, 0.0f}, {0.0f, 1.3733130458f, 0.0f}, {-0.0000974845f, 0.0982400361f, 0.9912520182f} };
__CONSTANT__ mat3 AP1_2_XYZ_MAT =
{ {0.6624541811f, 0.2722287168f, -0.0055746495f}, {0.1340042065f, 0.6740817658f, 0.0040607335f}, {0.156187687f, 0.0536895174f, 1.0103391003f} };
__CONSTANT__ mat3 XYZ_2_AP1_MAT =
{ {1.6410233797f, -0.6636628587f, 0.0117218943f}, {-0.3248032942f, 1.6153315917f, -0.008284442f}, {-0.2364246952f, 0.0167563477f, 0.9883948585f} };
__CONSTANT__ mat3 D60_2_D65_CAT =
{ {0.987224f, -0.00759836f, 0.00307257f}, {-0.00611327f, 1.00186f, -0.00509595f}, {0.0159533f, 0.00533002f, 1.08168f} };
__CONSTANT__ mat3 D65_2_D60_CAT =
{ {1.01303f, 0.00769823f, -0.00284131f}, {0.00610531f, 0.998165f, 0.00468516f}, {-0.014971f, -0.00503203f, 0.924507f} };
__CONSTANT__ mat3 DGAMUT_2_XYZ_MAT =
{ {0.6482f, 0.2830f, -0.0183f}, {0.1940f, 0.8132f, -0.0832f}, {0.1082f, -0.0962f, 1.1903f} };
__CONSTANT__ mat3 XYZ_2_DGAMUT_MAT =
{ {1.7257f, -0.6025f, -0.0156f}, {-0.4314f, 1.3906f, 0.0905f}, {-0.1917f, 0.1671f, 0.8489f} };
__CONSTANT__ mat3 DGAMUT_2_REC709_MAT =
{ {1.6746f, -0.0981f, -0.0410f}, {-0.5797f, 1.3340f, -0.2430f}, {-0.0949f, -0.2359f, 1.2840f} };
__CONSTANT__ mat3 REC709_2_DGAMUT_MAT =
{ {0.6163f, 0.0505f, 0.0292f}, {0.2857f, 0.7990f, 0.1604f}, {0.0980f, 0.1505f, 0.8104f} };

__DEVICE__ inline mat3 make_mat3( float3 A, float3 B, float3 C) {
mat3 D;
D.c0 = A; D.c1 = B; D.c2 = C;
return D;
}

__DEVICE__ float3 mult_f3_f33( float3 X, mat3 A) {
float r[3];
float x[3] = {X.x, X.y, X.z};
float a[3][3] = {{A.c0.x, A.c0.y, A.c0.z},
{A.c1.x, A.c1.y, A.c1.z},
{A.c2.x, A.c2.y, A.c2.z}};
for( int i = 0; i < 3; ++i) {
r = 0.0f;
for( int j = 0; j < 3; ++j) {
r = r + x[j] * a[j];
}}
return make_float3(r[0], r[1], r[2]);
}

__DEVICE__ mat3 mult_f33_f33( mat3 A, mat3 B) {
float r[3][3];
float a[3][3] = {{A.c0.x, A.c0.y, A.c0.z},
{A.c1.x, A.c1.y, A.c1.z},
{A.c2.x, A.c2.y, A.c2.z}};
float b[3][3] = {{B.c0.x, B.c0.y, B.c0.z},
{B.c1.x, B.c1.y, B.c1.z},
{B.c2.x, B.c2.y, B.c2.z}};
for( int i = 0; i < 3; ++i) {
for( int j = 0; j < 3; ++j) {
r[j] = 0.0f;
for( int k = 0; k < 3; ++k) {
r[j] = r[j] + a[k] * b[k][j];
}}}
mat3 R = make_mat3(make_float3(r[0][0], r[0][1], r[0][2]),
make_float3(r[1][0], r[1][1], r[1][2]), make_float3(r[2][0], r[2][1], r[2][2]));
return R;
}

__DEVICE__ float dlog_to_lin( float in) {
float out = in <= 0.14f ? (in - 0.0929f) / 6.025f : (_exp10f(3.89616 * in - 2.27752f) - 0.0108f) / 0.9892f;
return out;
}

__DEVICE__ float3 dlog_to_lin( float3 in) {
float3 out;
out.x = dlog_to_lin(in.x);
out.y = dlog_to_lin(in.y);
out.z = dlog_to_lin(in.z);
return out;
}

__DEVICE__ float lin_to_dlog( float in) {
float out = in <= 0.0078f ? 6.025f * in + 0.0929f : _log10f(in * 0.9892f + 0.0108f) * 0.256663f + 0.584555f;
return out;
}

__DEVICE__ float3 lin_to_dlog( float3 in) {
float3 out;
out.x = lin_to_dlog(in.x);
out.y = lin_to_dlog(in.y);
out.z = lin_to_dlog(in.z);
return out;
}

__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
float3 rgb = make_float3(p_R, p_G, p_B);

rgb = dlog_to_lin(rgb);
rgb = mult_f3_f33(rgb, DGAMUT_2_AP0);

//rgb = mult_f3_f33(rgb, DGAMUT_2_AP1);
//rgb = mult_f3_f33(rgb, DGAMUT_2_REC709);
//rgb = lin_to_dlog(rgb);

return rgb;
}
2021-6-3
Use props
Advanced
You need to log in before you can reply Login | Register now

Credit Rules