MCPcopy Create free account
hub / github.com/creatale/node-dv / initLabTabs

Function initLabTabs

deps/opencv/modules/imgproc/src/color.cpp:1590–1628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1588static ushort LabCbrtTab_b[LAB_CBRT_TAB_SIZE_B];
1589
1590static void initLabTabs()
1591{
1592 static bool initialized = false;
1593 if(!initialized)
1594 {
1595 float f[LAB_CBRT_TAB_SIZE+1], g[GAMMA_TAB_SIZE+1], ig[GAMMA_TAB_SIZE+1], scale = 1.f/LabCbrtTabScale;
1596 int i;
1597 for(i = 0; i <= LAB_CBRT_TAB_SIZE; i++)
1598 {
1599 float x = i*scale;
1600 f[i] = x < 0.008856f ? x*7.787f + 0.13793103448275862f : cvCbrt(x);
1601 }
1602 splineBuild(f, LAB_CBRT_TAB_SIZE, LabCbrtTab);
1603
1604 scale = 1.f/GammaTabScale;
1605 for(i = 0; i <= GAMMA_TAB_SIZE; i++)
1606 {
1607 float x = i*scale;
1608 g[i] = x <= 0.04045f ? x*(1.f/12.92f) : (float)pow((double)(x + 0.055)*(1./1.055), 2.4);
1609 ig[i] = x <= 0.0031308 ? x*12.92f : (float)(1.055*pow((double)x, 1./2.4) - 0.055);
1610 }
1611 splineBuild(g, GAMMA_TAB_SIZE, sRGBGammaTab);
1612 splineBuild(ig, GAMMA_TAB_SIZE, sRGBInvGammaTab);
1613
1614 for(i = 0; i < 256; i++)
1615 {
1616 float x = i*(1.f/255.f);
1617 sRGBGammaTab_b[i] = saturate_cast<ushort>(255.f*(1 << gamma_shift)*(x <= 0.04045f ? x*(1.f/12.92f) : (float)pow((double)(x + 0.055)*(1./1.055), 2.4)));
1618 linearGammaTab_b[i] = (ushort)(i*(1 << gamma_shift));
1619 }
1620
1621 for(i = 0; i < LAB_CBRT_TAB_SIZE_B; i++)
1622 {
1623 float x = i*(1.f/(255.f*(1 << gamma_shift)));
1624 LabCbrtTab_b[i] = saturate_cast<ushort>((1 << lab_shift2)*(x < 0.008856f ? x*7.787f + 0.13793103448275862f : cvCbrt(x)));
1625 }
1626 initialized = true;
1627 }
1628}
1629
1630struct RGB2Lab_b
1631{

Callers 5

RGB2Lab_bMethod · 0.85
RGB2Lab_fMethod · 0.85
Lab2RGB_fMethod · 0.85
RGB2Luv_fMethod · 0.85
Luv2RGB_fMethod · 0.85

Calls 3

cvCbrtFunction · 0.85
splineBuildFunction · 0.85
powFunction · 0.85

Tested by

no test coverage detected