Skip to content

Commit 1c46034

Browse files
committed
Other buffers
1 parent 2178c5e commit 1c46034

File tree

1 file changed

+142
-135
lines changed

1 file changed

+142
-135
lines changed

modules/imgproc/src/color.cpp

Lines changed: 142 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -5852,7 +5852,6 @@ enum
58525852
trilinear_shift = 8 - lab_lut_shift + 1,
58535853
TRILINEAR_BASE = (1 << trilinear_shift)
58545854
};
5855-
static int16_t *RGB2LabLUT_s16;
58565855
static int16_t trilinearLUT[TRILINEAR_BASE*TRILINEAR_BASE*TRILINEAR_BASE*8];
58575856
static ushort LabToYF_b[256*2];
58585857
static const int minABvalue = -8145;
@@ -5861,15 +5860,19 @@ static const int *abToXZ_b;
58615860
static const bool enableRGB2LuvInterpolation = true;
58625861
static const bool enablePackedRGB2Luv = true;
58635862
static const bool enablePackedLuv2RGB = true;
5864-
static int16_t *RGB2LuvLUT_s16;
58655863
static const softfloat uLow(-134), uHigh(220), uRange(uHigh-uLow);
58665864
static const softfloat vLow(-140), vHigh(122), vRange(vHigh-vLow);
58675865

5866+
static struct LABLUVLUT_s16_t {
5867+
const int16_t *RGB2LabLUT_s16;
5868+
const int16_t *RGB2LuvLUT_s16;
5869+
} LABLUVLUTs16 = {0, 0};
5870+
58685871
static struct LUVLUT_T {
58695872
const int *LuToUp_b;
58705873
const int *LvToVp_b;
58715874
const long long int *LvToVpl_b;
5872-
} LUVLUT;
5875+
} LUVLUT = {0, 0, 0};
58735876

58745877
#define clip(value) \
58755878
value < 0.0f ? 0.0f : value > 1.0f ? 1.0f : value;
@@ -5881,6 +5884,12 @@ static const softdouble gammaLowScale = softdouble(323)/softdouble(25);
58815884
static const softdouble gammaPower = softdouble(12)/softdouble(5); // 2.4
58825885
static const softdouble gammaXshift = softdouble(11)/softdouble(200); // 0.055
58835886

5887+
static const softfloat lthresh = softfloat(216) / softfloat(24389); // 0.008856f = (6/29)^3
5888+
static const softfloat lscale = softfloat(841) / softfloat(108); // 7.787f = (29/3)^3/(29*4)
5889+
static const softfloat lbias = softfloat(16) / softfloat(116);
5890+
static const softfloat f255(255);
5891+
5892+
58845893
static inline softfloat applyGamma(softfloat x)
58855894
{
58865895
//return x <= 0.04045f ? x*(1.f/12.92f) : (float)std::pow((double)(x + 0.055)*(1./1.055), 2.4);
@@ -5902,7 +5911,6 @@ static inline softfloat applyInvGamma(softfloat x)
59025911
static LUVLUT_T initLUTforLUV(int BASE, const softfloat &un, const softfloat &vn)
59035912
{
59045913
const softfloat oneof4 = softfloat::one()/softfloat(4);
5905-
const softfloat f255(255);
59065914
int *LuToUp_b = cv::allocSingleton<int>(256*256);
59075915
int *LvToVp_b = cv::allocSingleton<int>(256*256);
59085916
long long int *LvToVpl_b = cv::allocSingleton<long long int>(256*256);
@@ -5957,16 +5965,135 @@ static int * initLUTforABXZ(int BASE)
59575965
return res;
59585966
}
59595967

5968+
inline void fill_one(int16_t *LAB, const int16_t *LAB_prev, int16_t *LUV, const int16_t *LUV_prev, int p, int q, int r, int _p, int _q, int _r)
5969+
{
5970+
do {
5971+
int idxold = 0;
5972+
idxold += min(p+(_p), (int)(LAB_LUT_DIM-1))*3;
5973+
idxold += min(q+(_q), (int)(LAB_LUT_DIM-1))*LAB_LUT_DIM*3;
5974+
idxold += min(r+(_r), (int)(LAB_LUT_DIM-1))*LAB_LUT_DIM*LAB_LUT_DIM*3;
5975+
int idxnew = p*3*8 + q*LAB_LUT_DIM*3*8 + r*LAB_LUT_DIM*LAB_LUT_DIM*3*8+4*(_p)+2*(_q)+(_r);
5976+
LAB[idxnew] = LAB_prev[idxold];
5977+
LAB[idxnew+8] = LAB_prev[idxold+1];
5978+
LAB[idxnew+16] = LAB_prev[idxold+2];
5979+
LUV[idxnew] = LUV_prev[idxold];
5980+
LUV[idxnew+8] = LUV_prev[idxold+1];
5981+
LUV[idxnew+16] = LUV_prev[idxold+2];
5982+
} while(0);
5983+
}
5984+
5985+
static LABLUVLUT_s16_t initLUTforLABLUVs16(const softfloat & un, const softfloat & vn)
5986+
{
5987+
int i;
5988+
softfloat scaledCoeffs[9], coeffs[9];
5989+
5990+
//RGB2Lab coeffs
5991+
softdouble scaleWhite[] = { softdouble::one()/D65[0],
5992+
softdouble::one(),
5993+
softdouble::one()/D65[2] };
5994+
5995+
for(i = 0; i < 3; i++ )
5996+
{
5997+
coeffs[i*3+2] = sRGB2XYZ_D65[i*3+0];
5998+
coeffs[i*3+1] = sRGB2XYZ_D65[i*3+1];
5999+
coeffs[i*3+0] = sRGB2XYZ_D65[i*3+2];
6000+
scaledCoeffs[i*3+0] = sRGB2XYZ_D65[i*3+2] * scaleWhite[i];
6001+
scaledCoeffs[i*3+1] = sRGB2XYZ_D65[i*3+1] * scaleWhite[i];
6002+
scaledCoeffs[i*3+2] = sRGB2XYZ_D65[i*3+0] * scaleWhite[i];
6003+
}
6004+
6005+
softfloat S0 = scaledCoeffs[0], S1 = scaledCoeffs[1], S2 = scaledCoeffs[2],
6006+
S3 = scaledCoeffs[3], S4 = scaledCoeffs[4], S5 = scaledCoeffs[5],
6007+
S6 = scaledCoeffs[6], S7 = scaledCoeffs[7], S8 = scaledCoeffs[8];
6008+
softfloat C0 = coeffs[0], C1 = coeffs[1], C2 = coeffs[2],
6009+
C3 = coeffs[3], C4 = coeffs[4], C5 = coeffs[5],
6010+
C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8];
6011+
6012+
//u, v: [-134.0, 220.0], [-140.0, 122.0]
6013+
static const softfloat lld(LAB_LUT_DIM - 1), f116(116), f16(16), f500(500), f200(200);
6014+
static const softfloat f100(100), f128(128), f256(256), lbase((int)LAB_BASE);
6015+
//903.3f = (29/3)^3
6016+
static const softfloat f9033 = softfloat(29*29*29)/softfloat(27);
6017+
static const softfloat f9of4 = softfloat(9)/softfloat(4);
6018+
static const softfloat f15(15), f3(3);
6019+
6020+
AutoBuffer<int16_t> RGB2Labprev(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3);
6021+
AutoBuffer<int16_t> RGB2Luvprev(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3);
6022+
for(int p = 0; p < LAB_LUT_DIM; p++)
6023+
{
6024+
for(int q = 0; q < LAB_LUT_DIM; q++)
6025+
{
6026+
for(int r = 0; r < LAB_LUT_DIM; r++)
6027+
{
6028+
int idx = p*3 + q*LAB_LUT_DIM*3 + r*LAB_LUT_DIM*LAB_LUT_DIM*3;
6029+
softfloat R = softfloat(p)/lld;
6030+
softfloat G = softfloat(q)/lld;
6031+
softfloat B = softfloat(r)/lld;
6032+
6033+
R = applyGamma(R);
6034+
G = applyGamma(G);
6035+
B = applyGamma(B);
6036+
6037+
//RGB 2 Lab LUT building
6038+
{
6039+
softfloat X = R*S0 + G*S1 + B*S2;
6040+
softfloat Y = R*S3 + G*S4 + B*S5;
6041+
softfloat Z = R*S6 + G*S7 + B*S8;
6042+
6043+
softfloat FX = X > lthresh ? cbrt(X) : mulAdd(X, lscale, lbias);
6044+
softfloat FY = Y > lthresh ? cbrt(Y) : mulAdd(Y, lscale, lbias);
6045+
softfloat FZ = Z > lthresh ? cbrt(Z) : mulAdd(Z, lscale, lbias);
6046+
6047+
softfloat L = Y > lthresh ? (f116*FY - f16) : (f9033*Y);
6048+
softfloat a = f500 * (FX - FY);
6049+
softfloat b = f200 * (FY - FZ);
6050+
6051+
RGB2Labprev[idx] = (int16_t)(cvRound(lbase*L/f100));
6052+
RGB2Labprev[idx+1] = (int16_t)(cvRound(lbase*(a + f128)/f256));
6053+
RGB2Labprev[idx+2] = (int16_t)(cvRound(lbase*(b + f128)/f256));
6054+
}
6055+
6056+
//RGB 2 Luv LUT building
6057+
{
6058+
softfloat X = R*C0 + G*C1 + B*C2;
6059+
softfloat Y = R*C3 + G*C4 + B*C5;
6060+
softfloat Z = R*C6 + G*C7 + B*C8;
6061+
6062+
softfloat L = Y < lthresh ? mulAdd(Y, lscale, lbias) : cbrt(Y);
6063+
L = L*f116 - f16;
6064+
6065+
softfloat d = softfloat(4*13)/max(X + f15 * Y + f3 * Z, softfloat(FLT_EPSILON));
6066+
softfloat u = L*(X*d - un);
6067+
softfloat v = L*(f9of4*Y*d - vn);
6068+
6069+
RGB2Luvprev[idx ] = (int16_t)cvRound(lbase*L/f100);
6070+
RGB2Luvprev[idx+1] = (int16_t)cvRound(lbase*(u-uLow)/uRange);
6071+
RGB2Luvprev[idx+2] = (int16_t)cvRound(lbase*(v-vLow)/vRange);
6072+
}
6073+
}
6074+
}
6075+
}
6076+
6077+
int16_t *RGB2LabLUT_s16 = cv::allocSingleton<int16_t>(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3*8);
6078+
int16_t *RGB2LuvLUT_s16 = cv::allocSingleton<int16_t>(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3*8);
6079+
for(int p = 0; p < LAB_LUT_DIM; p++)
6080+
for(int q = 0; q < LAB_LUT_DIM; q++)
6081+
for(int r = 0; r < LAB_LUT_DIM; r++)
6082+
for (int p_ = 0; p_ < 2; ++p_)
6083+
for (int q_ = 0; q_ < 2; ++q_)
6084+
for (int r_ = 0; r_ < 2; ++r_)
6085+
fill_one(RGB2LabLUT_s16, RGB2Labprev, RGB2LuvLUT_s16, RGB2Luvprev, p, q, r, p_, q_, r_);
6086+
LABLUVLUT_s16_t res;
6087+
res.RGB2LabLUT_s16 = RGB2LabLUT_s16;
6088+
res.RGB2LuvLUT_s16 = RGB2LuvLUT_s16;
6089+
return res;
6090+
}
6091+
59606092
static void initLabTabs()
59616093
{
59626094
static bool initialized = false;
59636095
if(!initialized)
59646096
{
5965-
static const softfloat lthresh = softfloat(216) / softfloat(24389); // 0.008856f = (6/29)^3
5966-
static const softfloat lscale = softfloat(841) / softfloat(108); // 7.787f = (29/3)^3/(29*4)
5967-
static const softfloat lbias = softfloat(16) / softfloat(116);
5968-
static const softfloat f255(255);
5969-
59706097
softfloat f[LAB_CBRT_TAB_SIZE+1], g[GAMMA_TAB_SIZE+1], ig[GAMMA_TAB_SIZE+1];
59716098
softfloat scale = softfloat::one()/softfloat(LabCbrtTabScale);
59726099
int i;
@@ -6062,125 +6189,8 @@ static void initLabTabs()
60626189
static const bool calcLUT = enableRGB2LabInterpolation || enableRGB2LuvInterpolation;
60636190
if(calcLUT)
60646191
{
6065-
softfloat scaledCoeffs[9], coeffs[9];
6066-
6067-
//RGB2Lab coeffs
6068-
softdouble scaleWhite[] = { softdouble::one()/D65[0],
6069-
softdouble::one(),
6070-
softdouble::one()/D65[2] };
6071-
6072-
for(i = 0; i < 3; i++ )
6073-
{
6074-
coeffs[i*3+2] = sRGB2XYZ_D65[i*3+0];
6075-
coeffs[i*3+1] = sRGB2XYZ_D65[i*3+1];
6076-
coeffs[i*3+0] = sRGB2XYZ_D65[i*3+2];
6077-
scaledCoeffs[i*3+0] = sRGB2XYZ_D65[i*3+2] * scaleWhite[i];
6078-
scaledCoeffs[i*3+1] = sRGB2XYZ_D65[i*3+1] * scaleWhite[i];
6079-
scaledCoeffs[i*3+2] = sRGB2XYZ_D65[i*3+0] * scaleWhite[i];
6080-
}
6081-
6082-
softfloat S0 = scaledCoeffs[0], S1 = scaledCoeffs[1], S2 = scaledCoeffs[2],
6083-
S3 = scaledCoeffs[3], S4 = scaledCoeffs[4], S5 = scaledCoeffs[5],
6084-
S6 = scaledCoeffs[6], S7 = scaledCoeffs[7], S8 = scaledCoeffs[8];
6085-
softfloat C0 = coeffs[0], C1 = coeffs[1], C2 = coeffs[2],
6086-
C3 = coeffs[3], C4 = coeffs[4], C5 = coeffs[5],
6087-
C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8];
60886192

6089-
//u, v: [-134.0, 220.0], [-140.0, 122.0]
6090-
static const softfloat lld(LAB_LUT_DIM - 1), f116(116), f16(16), f500(500), f200(200);
6091-
static const softfloat f100(100), f128(128), f256(256), lbase((int)LAB_BASE);
6092-
//903.3f = (29/3)^3
6093-
static const softfloat f9033 = softfloat(29*29*29)/softfloat(27);
6094-
static const softfloat f9of4 = softfloat(9)/softfloat(4);
6095-
static const softfloat f15(15), f3(3);
6096-
AutoBuffer<int16_t> RGB2Labprev(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3);
6097-
AutoBuffer<int16_t> RGB2Luvprev(LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3);
6098-
for(int p = 0; p < LAB_LUT_DIM; p++)
6099-
{
6100-
for(int q = 0; q < LAB_LUT_DIM; q++)
6101-
{
6102-
for(int r = 0; r < LAB_LUT_DIM; r++)
6103-
{
6104-
int idx = p*3 + q*LAB_LUT_DIM*3 + r*LAB_LUT_DIM*LAB_LUT_DIM*3;
6105-
softfloat R = softfloat(p)/lld;
6106-
softfloat G = softfloat(q)/lld;
6107-
softfloat B = softfloat(r)/lld;
6108-
6109-
R = applyGamma(R);
6110-
G = applyGamma(G);
6111-
B = applyGamma(B);
6112-
6113-
//RGB 2 Lab LUT building
6114-
{
6115-
softfloat X = R*S0 + G*S1 + B*S2;
6116-
softfloat Y = R*S3 + G*S4 + B*S5;
6117-
softfloat Z = R*S6 + G*S7 + B*S8;
6118-
6119-
softfloat FX = X > lthresh ? cbrt(X) : mulAdd(X, lscale, lbias);
6120-
softfloat FY = Y > lthresh ? cbrt(Y) : mulAdd(Y, lscale, lbias);
6121-
softfloat FZ = Z > lthresh ? cbrt(Z) : mulAdd(Z, lscale, lbias);
6122-
6123-
softfloat L = Y > lthresh ? (f116*FY - f16) : (f9033*Y);
6124-
softfloat a = f500 * (FX - FY);
6125-
softfloat b = f200 * (FY - FZ);
6126-
6127-
RGB2Labprev[idx] = (int16_t)(cvRound(lbase*L/f100));
6128-
RGB2Labprev[idx+1] = (int16_t)(cvRound(lbase*(a + f128)/f256));
6129-
RGB2Labprev[idx+2] = (int16_t)(cvRound(lbase*(b + f128)/f256));
6130-
}
6131-
6132-
//RGB 2 Luv LUT building
6133-
{
6134-
softfloat X = R*C0 + G*C1 + B*C2;
6135-
softfloat Y = R*C3 + G*C4 + B*C5;
6136-
softfloat Z = R*C6 + G*C7 + B*C8;
6137-
6138-
softfloat L = Y < lthresh ? mulAdd(Y, lscale, lbias) : cbrt(Y);
6139-
L = L*f116 - f16;
6140-
6141-
softfloat d = softfloat(4*13)/max(X + f15 * Y + f3 * Z, softfloat(FLT_EPSILON));
6142-
softfloat u = L*(X*d - un);
6143-
softfloat v = L*(f9of4*Y*d - vn);
6144-
6145-
RGB2Luvprev[idx ] = (int16_t)cvRound(lbase*L/f100);
6146-
RGB2Luvprev[idx+1] = (int16_t)cvRound(lbase*(u-uLow)/uRange);
6147-
RGB2Luvprev[idx+2] = (int16_t)cvRound(lbase*(v-vLow)/vRange);
6148-
}
6149-
}
6150-
}
6151-
}
6152-
RGB2LabLUT_s16 = new int16_t[LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3*8];
6153-
RGB2LuvLUT_s16 = new int16_t[LAB_LUT_DIM*LAB_LUT_DIM*LAB_LUT_DIM*3*8];
6154-
for(int p = 0; p < LAB_LUT_DIM; p++)
6155-
{
6156-
for(int q = 0; q < LAB_LUT_DIM; q++)
6157-
{
6158-
for(int r = 0; r < LAB_LUT_DIM; r++)
6159-
{
6160-
#define FILL(_p, _q, _r) \
6161-
do {\
6162-
int idxold = 0;\
6163-
idxold += min(p+(_p), (int)(LAB_LUT_DIM-1))*3;\
6164-
idxold += min(q+(_q), (int)(LAB_LUT_DIM-1))*LAB_LUT_DIM*3;\
6165-
idxold += min(r+(_r), (int)(LAB_LUT_DIM-1))*LAB_LUT_DIM*LAB_LUT_DIM*3;\
6166-
int idxnew = p*3*8 + q*LAB_LUT_DIM*3*8 + r*LAB_LUT_DIM*LAB_LUT_DIM*3*8+4*(_p)+2*(_q)+(_r);\
6167-
RGB2LabLUT_s16[idxnew] = RGB2Labprev[idxold];\
6168-
RGB2LabLUT_s16[idxnew+8] = RGB2Labprev[idxold+1];\
6169-
RGB2LabLUT_s16[idxnew+16] = RGB2Labprev[idxold+2];\
6170-
RGB2LuvLUT_s16[idxnew] = RGB2Luvprev[idxold];\
6171-
RGB2LuvLUT_s16[idxnew+8] = RGB2Luvprev[idxold+1];\
6172-
RGB2LuvLUT_s16[idxnew+16] = RGB2Luvprev[idxold+2];\
6173-
} while(0)
6174-
6175-
FILL(0, 0, 0); FILL(0, 0, 1);
6176-
FILL(0, 1, 0); FILL(0, 1, 1);
6177-
FILL(1, 0, 0); FILL(1, 0, 1);
6178-
FILL(1, 1, 0); FILL(1, 1, 1);
6179-
6180-
#undef FILL
6181-
}
6182-
}
6183-
}
6193+
LABLUVLUTs16 = initLUTforLABLUVs16(un, vn);
61846194

61856195
for(int16_t p = 0; p < TRILINEAR_BASE; p++)
61866196
{
@@ -6506,7 +6516,7 @@ struct RGB2Lab_f
65066516
v_uint16x8 uibvec = v_reinterpret_as_u16(ibvec);
65076517

65086518
v_uint16x8 ui_lvec, ui_avec, ui_bvec;
6509-
trilinearPackedInterpolate(uirvec, uigvec, uibvec, RGB2LabLUT_s16, ui_lvec, ui_avec, ui_bvec);
6519+
trilinearPackedInterpolate(uirvec, uigvec, uibvec, LABLUVLUTs16.RGB2LabLUT_s16, ui_lvec, ui_avec, ui_bvec);
65106520
v_int16x8 i_lvec = v_reinterpret_as_s16(ui_lvec);
65116521
v_int16x8 i_avec = v_reinterpret_as_s16(ui_avec);
65126522
v_int16x8 i_bvec = v_reinterpret_as_s16(ui_bvec);
@@ -6547,7 +6557,7 @@ struct RGB2Lab_f
65476557

65486558
int iR = cvRound(R*LAB_BASE), iG = cvRound(G*LAB_BASE), iB = cvRound(B*LAB_BASE);
65496559
int iL, ia, ib;
6550-
trilinearInterpolate(iR, iG, iB, RGB2LabLUT_s16, iL, ia, ib);
6560+
trilinearInterpolate(iR, iG, iB, LABLUVLUTs16.RGB2LabLUT_s16, iL, ia, ib);
65516561
float L = iL*1.0f/LAB_BASE, a = ia*1.0f/LAB_BASE, b = ib*1.0f/LAB_BASE;
65526562

65536563
dst[i] = L*100.0f;
@@ -8127,8 +8137,8 @@ struct RGB2Luvinterpolate
81278137
trilinearInterpolate(R, G, B, RGB2LuvLUT_s16, L, u, v);
81288138
*/
81298139
v_uint16x8 l80, u80, v80, l81, u81, v81;
8130-
trilinearPackedInterpolate(r80, g80, b80, RGB2LuvLUT_s16, l80, u80, v80);
8131-
trilinearPackedInterpolate(r81, g81, b81, RGB2LuvLUT_s16, l81, u81, v81);
8140+
trilinearPackedInterpolate(r80, g80, b80, LABLUVLUTs16.RGB2LuvLUT_s16, l80, u80, v80);
8141+
trilinearPackedInterpolate(r81, g81, b81, LABLUVLUTs16.RGB2LuvLUT_s16, l81, u81, v81);
81328142

81338143
/*
81348144
dst[i] = saturate_cast<uchar>(L/baseDiv);
@@ -8154,7 +8164,7 @@ struct RGB2Luvinterpolate
81548164
R = R*baseDiv, G = G*baseDiv, B = B*baseDiv;
81558165

81568166
int L, u, v;
8157-
trilinearInterpolate(R, G, B, RGB2LuvLUT_s16, L, u, v);
8167+
trilinearInterpolate(R, G, B, LABLUVLUTs16.RGB2LuvLUT_s16, L, u, v);
81588168

81598169
dst[i] = saturate_cast<uchar>(L/baseDiv);
81608170
dst[i+1] = saturate_cast<uchar>(u/baseDiv);
@@ -8182,7 +8192,6 @@ struct RGB2Luv_b
81828192
&& enableBitExactness
81838193
&& enableRGB2LuvInterpolation);
81848194

8185-
static const softfloat f255(255);
81868195
#if CV_NEON
81878196
v_scale_inv = vdupq_n_f32(softfloat::one()/f255);
81888197
v_scale = vdupq_n_f32(f255/softfloat(100));
@@ -8235,7 +8244,6 @@ struct RGB2Luv_b
82358244
int i, j, scn = srccn;
82368245
float CV_DECL_ALIGNED(16) buf[3*BLOCK_SIZE];
82378246

8238-
static const softfloat f255(255);
82398247
#if CV_SSE2
82408248
__m128 v_coeffs = _mm_set_ps(f255/softfloat(100), f255/vRange, f255/uRange, f255/softfloat(100));
82418249
__m128 v_res = _mm_set_ps(0.f, -vLow*f255/vRange, -uLow*f255/uRange, 0.f);
@@ -8625,7 +8633,6 @@ struct Luv2RGB_b
86258633
uchar alpha = ColorChannel<uchar>::max();
86268634
float CV_DECL_ALIGNED(16) buf[3*BLOCK_SIZE];
86278635

8628-
static const softfloat f255(255);
86298636
static const softfloat fl = softfloat(100)/f255;
86308637
static const softfloat fu = uRange/f255;
86318638
static const softfloat fv = vRange/f255;

0 commit comments

Comments
 (0)