@@ -3533,14 +3533,13 @@ static void remapNearest( const Mat& _src, Mat& _dst, const Mat& _xy,
3533
3533
int borderType, const Scalar& _borderValue )
3534
3534
{
3535
3535
Size ssize = _src.size (), dsize = _dst.size ();
3536
- int cn = _src.channels ();
3536
+ const int cn = _src.channels ();
3537
3537
const T* S0 = _src.ptr <T>();
3538
+ T cval[CV_CN_MAX];
3538
3539
size_t sstep = _src.step /sizeof (S0[0 ]);
3539
- Scalar_<T> cval (saturate_cast<T>(_borderValue[0 ]),
3540
- saturate_cast<T>(_borderValue[1 ]),
3541
- saturate_cast<T>(_borderValue[2 ]),
3542
- saturate_cast<T>(_borderValue[3 ]));
3543
- int dx, dy;
3540
+
3541
+ for (int k = 0 ; k < cn; k++ )
3542
+ cval[k] = saturate_cast<T>(_borderValue[k & 3 ]);
3544
3543
3545
3544
unsigned width1 = ssize.width , height1 = ssize.height ;
3546
3545
@@ -3550,14 +3549,14 @@ static void remapNearest( const Mat& _src, Mat& _dst, const Mat& _xy,
3550
3549
dsize.height = 1 ;
3551
3550
}
3552
3551
3553
- for ( dy = 0 ; dy < dsize.height ; dy++ )
3552
+ for (int dy = 0 ; dy < dsize.height ; dy++ )
3554
3553
{
3555
3554
T* D = _dst.ptr <T>(dy);
3556
3555
const short * XY = _xy.ptr <short >(dy);
3557
3556
3558
3557
if ( cn == 1 )
3559
3558
{
3560
- for ( dx = 0 ; dx < dsize.width ; dx++ )
3559
+ for (int dx = 0 ; dx < dsize.width ; dx++ )
3561
3560
{
3562
3561
int sx = XY[dx*2 ], sy = XY[dx*2 +1 ];
3563
3562
if ( (unsigned )sx < width1 && (unsigned )sy < height1 )
@@ -3583,9 +3582,9 @@ static void remapNearest( const Mat& _src, Mat& _dst, const Mat& _xy,
3583
3582
}
3584
3583
else
3585
3584
{
3586
- for ( dx = 0 ; dx < dsize.width ; dx++, D += cn )
3585
+ for (int dx = 0 ; dx < dsize.width ; dx++, D += cn )
3587
3586
{
3588
- int sx = XY[dx*2 ], sy = XY[dx*2 +1 ], k ;
3587
+ int sx = XY[dx*2 ], sy = XY[dx*2 +1 ];
3589
3588
const T *S;
3590
3589
if ( (unsigned )sx < width1 && (unsigned )sy < height1 )
3591
3590
{
@@ -3602,7 +3601,7 @@ static void remapNearest( const Mat& _src, Mat& _dst, const Mat& _xy,
3602
3601
else
3603
3602
{
3604
3603
S = S0 + sy*sstep + sx*cn;
3605
- for ( k = 0 ; k < cn; k++ )
3604
+ for (int k = 0 ; k < cn; k++ )
3606
3605
D[k] = S[k];
3607
3606
}
3608
3607
}
@@ -3622,7 +3621,7 @@ static void remapNearest( const Mat& _src, Mat& _dst, const Mat& _xy,
3622
3621
sy = borderInterpolate (sy, ssize.height , borderType);
3623
3622
S = S0 + sy*sstep + sx*cn;
3624
3623
}
3625
- for ( k = 0 ; k < cn; k++ )
3624
+ for (int k = 0 ; k < cn; k++ )
3626
3625
D[k] = S[k];
3627
3626
}
3628
3627
}
@@ -3852,16 +3851,15 @@ static void remapBilinear( const Mat& _src, Mat& _dst, const Mat& _xy,
3852
3851
typedef typename CastOp::rtype T;
3853
3852
typedef typename CastOp::type1 WT;
3854
3853
Size ssize = _src.size (), dsize = _dst.size ();
3855
- int k, cn = _src.channels ();
3854
+ const int cn = _src.channels ();
3856
3855
const AT* wtab = (const AT*)_wtab;
3857
3856
const T* S0 = _src.ptr <T>();
3858
3857
size_t sstep = _src.step /sizeof (S0[0 ]);
3859
3858
T cval[CV_CN_MAX];
3860
- int dx, dy;
3861
3859
CastOp castOp;
3862
3860
VecOp vecOp;
3863
3861
3864
- for ( k = 0 ; k < cn; k++ )
3862
+ for (int k = 0 ; k < cn; k++ )
3865
3863
cval[k] = saturate_cast<T>(_borderValue[k & 3 ]);
3866
3864
3867
3865
unsigned width1 = std::max (ssize.width -1 , 0 ), height1 = std::max (ssize.height -1 , 0 );
@@ -3871,15 +3869,15 @@ static void remapBilinear( const Mat& _src, Mat& _dst, const Mat& _xy,
3871
3869
width1 = std::max (ssize.width -2 , 0 );
3872
3870
#endif
3873
3871
3874
- for ( dy = 0 ; dy < dsize.height ; dy++ )
3872
+ for (int dy = 0 ; dy < dsize.height ; dy++ )
3875
3873
{
3876
3874
T* D = _dst.ptr <T>(dy);
3877
3875
const short * XY = _xy.ptr <short >(dy);
3878
3876
const ushort* FXY = _fxy.ptr <ushort>(dy);
3879
3877
int X0 = 0 ;
3880
3878
bool prevInlier = false ;
3881
3879
3882
- for ( dx = 0 ; dx <= dsize.width ; dx++ )
3880
+ for (int dx = 0 ; dx <= dsize.width ; dx++ )
3883
3881
{
3884
3882
bool curInlier = dx < dsize.width ?
3885
3883
(unsigned )XY[dx*2 ] < width1 &&
@@ -3948,7 +3946,7 @@ static void remapBilinear( const Mat& _src, Mat& _dst, const Mat& _xy,
3948
3946
int sx = XY[dx*2 ], sy = XY[dx*2 +1 ];
3949
3947
const AT* w = wtab + FXY[dx]*4 ;
3950
3948
const T* S = S0 + sy*sstep + sx*cn;
3951
- for ( k = 0 ; k < cn; k++ )
3949
+ for (int k = 0 ; k < cn; k++ )
3952
3950
{
3953
3951
WT t0 = S[k]*w[0 ] + S[k+cn]*w[1 ] + S[sstep+k]*w[2 ] + S[sstep+k+cn]*w[3 ];
3954
3952
D[k] = castOp (t0);
@@ -4012,7 +4010,7 @@ static void remapBilinear( const Mat& _src, Mat& _dst, const Mat& _xy,
4012
4010
(sx >= ssize.width || sx+1 < 0 ||
4013
4011
sy >= ssize.height || sy+1 < 0 ) )
4014
4012
{
4015
- for ( k = 0 ; k < cn; k++ )
4013
+ for (int k = 0 ; k < cn; k++ )
4016
4014
D[k] = cval[k];
4017
4015
}
4018
4016
else
@@ -4046,7 +4044,7 @@ static void remapBilinear( const Mat& _src, Mat& _dst, const Mat& _xy,
4046
4044
v2 = sx0 >= 0 && sy1 >= 0 ? S0 + sy1*sstep + sx0*cn : &cval[0 ];
4047
4045
v3 = sx1 >= 0 && sy1 >= 0 ? S0 + sy1*sstep + sx1*cn : &cval[0 ];
4048
4046
}
4049
- for ( k = 0 ; k < cn; k++ )
4047
+ for (int k = 0 ; k < cn; k++ )
4050
4048
D[k] = castOp (WT (v0[k]*w[0 ] + v1[k]*w[1 ] + v2[k]*w[2 ] + v3[k]*w[3 ]));
4051
4049
}
4052
4050
}
@@ -4064,16 +4062,16 @@ static void remapBicubic( const Mat& _src, Mat& _dst, const Mat& _xy,
4064
4062
typedef typename CastOp::rtype T;
4065
4063
typedef typename CastOp::type1 WT;
4066
4064
Size ssize = _src.size (), dsize = _dst.size ();
4067
- int cn = _src.channels ();
4065
+ const int cn = _src.channels ();
4068
4066
const AT* wtab = (const AT*)_wtab;
4069
4067
const T* S0 = _src.ptr <T>();
4070
4068
size_t sstep = _src.step /sizeof (S0[0 ]);
4071
- Scalar_<T> cval (saturate_cast<T>(_borderValue[0 ]),
4072
- saturate_cast<T>(_borderValue[1 ]),
4073
- saturate_cast<T>(_borderValue[2 ]),
4074
- saturate_cast<T>(_borderValue[3 ]));
4075
- int dx, dy;
4069
+ T cval[CV_CN_MAX];
4076
4070
CastOp castOp;
4071
+
4072
+ for (int k = 0 ; k < cn; k++ )
4073
+ cval[k] = saturate_cast<T>(_borderValue[k & 3 ]);
4074
+
4077
4075
int borderType1 = borderType != BORDER_TRANSPARENT ? borderType : BORDER_REFLECT_101;
4078
4076
4079
4077
unsigned width1 = std::max (ssize.width -3 , 0 ), height1 = std::max (ssize.height -3 , 0 );
@@ -4084,21 +4082,20 @@ static void remapBicubic( const Mat& _src, Mat& _dst, const Mat& _xy,
4084
4082
dsize.height = 1 ;
4085
4083
}
4086
4084
4087
- for ( dy = 0 ; dy < dsize.height ; dy++ )
4085
+ for (int dy = 0 ; dy < dsize.height ; dy++ )
4088
4086
{
4089
4087
T* D = _dst.ptr <T>(dy);
4090
4088
const short * XY = _xy.ptr <short >(dy);
4091
4089
const ushort* FXY = _fxy.ptr <ushort>(dy);
4092
4090
4093
- for ( dx = 0 ; dx < dsize.width ; dx++, D += cn )
4091
+ for (int dx = 0 ; dx < dsize.width ; dx++, D += cn )
4094
4092
{
4095
4093
int sx = XY[dx*2 ]-1 , sy = XY[dx*2 +1 ]-1 ;
4096
4094
const AT* w = wtab + FXY[dx]*16 ;
4097
- int i, k;
4098
4095
if ( (unsigned )sx < width1 && (unsigned )sy < height1 )
4099
4096
{
4100
4097
const T* S = S0 + sy*sstep + sx*cn;
4101
- for ( k = 0 ; k < cn; k++ )
4098
+ for (int k = 0 ; k < cn; k++ )
4102
4099
{
4103
4100
WT sum = S[0 ]*w[0 ] + S[cn]*w[1 ] + S[cn*2 ]*w[2 ] + S[cn*3 ]*w[3 ];
4104
4101
S += sstep;
@@ -4123,21 +4120,21 @@ static void remapBicubic( const Mat& _src, Mat& _dst, const Mat& _xy,
4123
4120
(sx >= ssize.width || sx+4 <= 0 ||
4124
4121
sy >= ssize.height || sy+4 <= 0 ))
4125
4122
{
4126
- for ( k = 0 ; k < cn; k++ )
4123
+ for (int k = 0 ; k < cn; k++ )
4127
4124
D[k] = cval[k];
4128
4125
continue ;
4129
4126
}
4130
4127
4131
- for ( i = 0 ; i < 4 ; i++ )
4128
+ for (int i = 0 ; i < 4 ; i++ )
4132
4129
{
4133
4130
x[i] = borderInterpolate (sx + i, ssize.width , borderType1)*cn;
4134
4131
y[i] = borderInterpolate (sy + i, ssize.height , borderType1);
4135
4132
}
4136
4133
4137
- for ( k = 0 ; k < cn; k++, S0++, w -= 16 )
4134
+ for (int k = 0 ; k < cn; k++, S0++, w -= 16 )
4138
4135
{
4139
4136
WT cv = cval[k], sum = cv*ONE;
4140
- for ( i = 0 ; i < 4 ; i++, w += 4 )
4137
+ for (int i = 0 ; i < 4 ; i++, w += 4 )
4141
4138
{
4142
4139
int yi = y[i];
4143
4140
const T* S = S0 + yi*sstep;
@@ -4169,16 +4166,16 @@ static void remapLanczos4( const Mat& _src, Mat& _dst, const Mat& _xy,
4169
4166
typedef typename CastOp::rtype T;
4170
4167
typedef typename CastOp::type1 WT;
4171
4168
Size ssize = _src.size (), dsize = _dst.size ();
4172
- int cn = _src.channels ();
4169
+ const int cn = _src.channels ();
4173
4170
const AT* wtab = (const AT*)_wtab;
4174
4171
const T* S0 = _src.ptr <T>();
4175
4172
size_t sstep = _src.step /sizeof (S0[0 ]);
4176
- Scalar_<T> cval (saturate_cast<T>(_borderValue[0 ]),
4177
- saturate_cast<T>(_borderValue[1 ]),
4178
- saturate_cast<T>(_borderValue[2 ]),
4179
- saturate_cast<T>(_borderValue[3 ]));
4180
- int dx, dy;
4173
+ T cval[CV_CN_MAX];
4181
4174
CastOp castOp;
4175
+
4176
+ for (int k = 0 ; k < cn; k++ )
4177
+ cval[k] = saturate_cast<T>(_borderValue[k & 3 ]);
4178
+
4182
4179
int borderType1 = borderType != BORDER_TRANSPARENT ? borderType : BORDER_REFLECT_101;
4183
4180
4184
4181
unsigned width1 = std::max (ssize.width -7 , 0 ), height1 = std::max (ssize.height -7 , 0 );
@@ -4189,21 +4186,20 @@ static void remapLanczos4( const Mat& _src, Mat& _dst, const Mat& _xy,
4189
4186
dsize.height = 1 ;
4190
4187
}
4191
4188
4192
- for ( dy = 0 ; dy < dsize.height ; dy++ )
4189
+ for (int dy = 0 ; dy < dsize.height ; dy++ )
4193
4190
{
4194
4191
T* D = _dst.ptr <T>(dy);
4195
4192
const short * XY = _xy.ptr <short >(dy);
4196
4193
const ushort* FXY = _fxy.ptr <ushort>(dy);
4197
4194
4198
- for ( dx = 0 ; dx < dsize.width ; dx++, D += cn )
4195
+ for (int dx = 0 ; dx < dsize.width ; dx++, D += cn )
4199
4196
{
4200
4197
int sx = XY[dx*2 ]-3 , sy = XY[dx*2 +1 ]-3 ;
4201
4198
const AT* w = wtab + FXY[dx]*64 ;
4202
4199
const T* S = S0 + sy*sstep + sx*cn;
4203
- int i, k;
4204
4200
if ( (unsigned )sx < width1 && (unsigned )sy < height1 )
4205
4201
{
4206
- for ( k = 0 ; k < cn; k++ )
4202
+ for (int k = 0 ; k < cn; k++ )
4207
4203
{
4208
4204
WT sum = 0 ;
4209
4205
for ( int r = 0 ; r < 8 ; r++, S += sstep, w += 8 )
@@ -4226,21 +4222,21 @@ static void remapLanczos4( const Mat& _src, Mat& _dst, const Mat& _xy,
4226
4222
(sx >= ssize.width || sx+8 <= 0 ||
4227
4223
sy >= ssize.height || sy+8 <= 0 ))
4228
4224
{
4229
- for ( k = 0 ; k < cn; k++ )
4225
+ for (int k = 0 ; k < cn; k++ )
4230
4226
D[k] = cval[k];
4231
4227
continue ;
4232
4228
}
4233
4229
4234
- for ( i = 0 ; i < 8 ; i++ )
4230
+ for (int i = 0 ; i < 8 ; i++ )
4235
4231
{
4236
4232
x[i] = borderInterpolate (sx + i, ssize.width , borderType1)*cn;
4237
4233
y[i] = borderInterpolate (sy + i, ssize.height , borderType1);
4238
4234
}
4239
4235
4240
- for ( k = 0 ; k < cn; k++, S0++, w -= 64 )
4236
+ for (int k = 0 ; k < cn; k++, S0++, w -= 64 )
4241
4237
{
4242
4238
WT cv = cval[k], sum = cv*ONE;
4243
- for ( i = 0 ; i < 8 ; i++, w += 8 )
4239
+ for (int i = 0 ; i < 8 ; i++, w += 8 )
4244
4240
{
4245
4241
int yi = y[i];
4246
4242
const T* S1 = S0 + yi*sstep;
0 commit comments