Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
07729e39
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
07729e39
编写于
12月 25, 2019
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
imgproc(resize): avoid unnecessary type conversions
上级
5e2bcc91
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
68 deletion
+39
-68
modules/imgproc/src/resize.cpp
modules/imgproc/src/resize.cpp
+37
-63
modules/imgproc/src/resize.hpp
modules/imgproc/src/resize.hpp
+1
-1
modules/imgproc/src/resize.sse4_1.cpp
modules/imgproc/src/resize.sse4_1.cpp
+1
-4
未找到文件。
modules/imgproc/src/resize.cpp
浏览文件 @
07729e39
...
...
@@ -1109,23 +1109,29 @@ resizeNN( const Mat& src, Mat& dst, double fx, double fy )
struct
VResizeNoVec
{
int
operator
()(
const
uchar
**
,
uchar
*
,
const
uchar
*
,
int
)
const
{
return
0
;
}
template
<
typename
WT
,
typename
T
,
typename
BT
>
int
operator
()(
const
WT
**
,
T
*
,
const
BT
*
,
int
)
const
{
return
0
;
}
};
struct
HResizeNoVec
{
int
operator
()(
const
uchar
**
,
uchar
**
,
int
,
const
int
*
,
const
uchar
*
,
int
,
int
,
int
,
int
,
int
)
const
{
return
0
;
}
template
<
typename
T
,
typename
WT
,
typename
AT
>
inline
int
operator
()(
const
T
**
,
WT
**
,
int
,
const
int
*
,
const
AT
*
,
int
,
int
,
int
,
int
,
int
)
const
{
return
0
;
}
};
#if CV_SIMD
struct
VResizeLinearVec_32s8u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
int
**
src
,
uchar
*
dst
,
const
short
*
beta
,
int
width
)
const
{
const
int
**
src
=
(
const
int
**
)
_src
;
const
short
*
beta
=
(
const
short
*
)
_beta
;
const
int
*
S0
=
src
[
0
],
*
S1
=
src
[
1
];
int
x
=
0
;
v_int16
b0
=
vx_setall_s16
(
beta
[
0
]),
b1
=
vx_setall_s16
(
beta
[
1
]);
...
...
@@ -1153,12 +1159,9 @@ struct VResizeLinearVec_32s8u
struct
VResizeLinearVec_32f16u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
];
ushort
*
dst
=
(
ushort
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]);
...
...
@@ -1183,12 +1186,9 @@ struct VResizeLinearVec_32f16u
struct
VResizeLinearVec_32f16s
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
short
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
];
short
*
dst
=
(
short
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]);
...
...
@@ -1213,12 +1213,9 @@ struct VResizeLinearVec_32f16s
struct
VResizeLinearVec_32f
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
float
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
];
float
*
dst
=
(
float
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]);
...
...
@@ -1237,10 +1234,8 @@ struct VResizeLinearVec_32f
struct
VResizeCubicVec_32s8u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
int
**
src
,
uchar
*
dst
,
const
short
*
beta
,
int
width
)
const
{
const
int
**
src
=
(
const
int
**
)
_src
;
const
short
*
beta
=
(
const
short
*
)
_beta
;
const
int
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
];
int
x
=
0
;
float
scale
=
1.
f
/
(
INTER_RESIZE_COEF_SCALE
*
INTER_RESIZE_COEF_SCALE
);
...
...
@@ -1274,12 +1269,9 @@ struct VResizeCubicVec_32s8u
struct
VResizeCubicVec_32f16u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
];
ushort
*
dst
=
(
ushort
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
b2
=
vx_setall_f32
(
beta
[
2
]),
b3
=
vx_setall_f32
(
beta
[
3
]);
...
...
@@ -1300,12 +1292,9 @@ struct VResizeCubicVec_32f16u
struct
VResizeCubicVec_32f16s
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
short
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
];
short
*
dst
=
(
short
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
b2
=
vx_setall_f32
(
beta
[
2
]),
b3
=
vx_setall_f32
(
beta
[
3
]);
...
...
@@ -1326,12 +1315,9 @@ struct VResizeCubicVec_32f16s
struct
VResizeCubicVec_32f
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
float
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
];
float
*
dst
=
(
float
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
b2
=
vx_setall_f32
(
beta
[
2
]),
b3
=
vx_setall_f32
(
beta
[
3
]);
...
...
@@ -1351,10 +1337,12 @@ struct VResizeCubicVec_32f
struct
VResizeLanczos4Vec_32f16u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
)
const
{
if
(
CV_CPU_HAS_SUPPORT_SSE4_1
)
return
opt_SSE4_1
::
VResizeLanczos4Vec_32f16u_SSE41
(
_src
,
_dst
,
_beta
,
width
);
else
return
0
;
if
(
CV_CPU_HAS_SUPPORT_SSE4_1
)
return
opt_SSE4_1
::
VResizeLanczos4Vec_32f16u_SSE41
(
src
,
dst
,
beta
,
width
);
else
return
0
;
}
};
...
...
@@ -1362,13 +1350,10 @@ struct VResizeLanczos4Vec_32f16u
struct
VResizeLanczos4Vec_32f16u
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_
beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
],
*
S4
=
src
[
4
],
*
S5
=
src
[
5
],
*
S6
=
src
[
6
],
*
S7
=
src
[
7
];
ushort
*
dst
=
(
ushort
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
b2
=
vx_setall_f32
(
beta
[
2
]),
b3
=
vx_setall_f32
(
beta
[
3
]),
...
...
@@ -1401,13 +1386,10 @@ struct VResizeLanczos4Vec_32f16u
struct
VResizeLanczos4Vec_32f16s
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_
beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
short
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
],
*
S4
=
src
[
4
],
*
S5
=
src
[
5
],
*
S6
=
src
[
6
],
*
S7
=
src
[
7
];
short
*
dst
=
(
short
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
b2
=
vx_setall_f32
(
beta
[
2
]),
b3
=
vx_setall_f32
(
beta
[
3
]),
...
...
@@ -1438,13 +1420,10 @@ struct VResizeLanczos4Vec_32f16s
struct
VResizeLanczos4Vec_32f
{
int
operator
()(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_
beta
,
int
width
)
const
int
operator
()(
const
float
**
src
,
float
*
dst
,
const
float
*
beta
,
int
width
)
const
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
],
*
S4
=
src
[
4
],
*
S5
=
src
[
5
],
*
S6
=
src
[
6
],
*
S7
=
src
[
7
];
float
*
dst
=
(
float
*
)
_dst
;
int
x
=
0
;
v_float32
b0
=
vx_setall_f32
(
beta
[
0
]),
b1
=
vx_setall_f32
(
beta
[
1
]),
...
...
@@ -1489,12 +1468,9 @@ typedef VResizeNoVec VResizeLanczos4Vec_32f;
template
<
typename
ST
,
typename
DT
,
typename
AT
,
typename
DVT
>
struct
HResizeLinearVec_X4
{
int
operator
()(
const
uchar
**
_src
,
uchar
**
_
dst
,
int
count
,
const
int
*
xofs
,
const
uchar
*
_
alpha
,
int
,
int
,
int
cn
,
int
,
int
xmax
)
const
int
operator
()(
const
ST
**
src
,
DT
**
dst
,
int
count
,
const
int
*
xofs
,
const
AT
*
alpha
,
int
,
int
,
int
cn
,
int
,
int
xmax
)
const
{
const
ST
**
src
=
(
const
ST
**
)
_src
;
const
AT
*
alpha
=
(
const
AT
*
)
_alpha
;
DT
**
dst
=
(
DT
**
)
_dst
;
const
int
nlanes
=
4
;
const
int
len0
=
xmax
&
-
nlanes
;
int
dx
=
0
,
k
=
0
;
...
...
@@ -1549,11 +1525,9 @@ struct HResizeLinearVec_X4
struct
HResizeLinearVecU8_X4
{
int
operator
()(
const
uchar
**
src
,
uchar
**
_
dst
,
int
count
,
const
int
*
xofs
,
const
uchar
*
_alpha
,
int
smax
,
int
,
int
cn
,
int
,
int
xmax
)
const
int
operator
()(
const
uchar
**
src
,
int
**
dst
,
int
count
,
const
int
*
xofs
,
const
short
*
alpha
/*[xmax]*/
,
int
smax
,
int
/*dmax*/
,
int
cn
,
int
/*xmin*/
,
int
xmax
)
const
{
const
short
*
alpha
=
(
const
short
*
)
_alpha
;
int
**
dst
=
(
int
**
)
_dst
;
int
dx
=
0
,
k
=
0
;
if
(
cn
==
1
)
...
...
@@ -1827,8 +1801,8 @@ struct HResizeLinear
int
dx
,
k
;
VecOp
vecOp
;
int
dx0
=
vecOp
(
(
const
uchar
**
)
src
,
(
uchar
**
)
dst
,
count
,
xofs
,
(
const
uchar
*
)
alpha
,
swidth
,
dwidth
,
cn
,
xmin
,
xmax
);
int
dx0
=
vecOp
(
src
,
dst
,
count
,
xofs
,
alpha
,
swidth
,
dwidth
,
cn
,
xmin
,
xmax
);
for
(
k
=
0
;
k
<=
count
-
2
;
k
+=
2
)
{
...
...
@@ -1881,7 +1855,7 @@ struct VResizeLinear
CastOp
castOp
;
VecOp
vecOp
;
int
x
=
vecOp
(
(
const
uchar
**
)
src
,
(
uchar
*
)
dst
,
(
const
uchar
*
)
beta
,
width
);
int
x
=
vecOp
(
src
,
dst
,
beta
,
width
);
#if CV_ENABLE_UNROLLED
for
(
;
x
<=
width
-
4
;
x
+=
4
)
{
...
...
@@ -1912,7 +1886,7 @@ struct VResizeLinear<uchar, int, short, FixedPtCast<int, uchar, INTER_RESIZE_COE
const
buf_type
*
S0
=
src
[
0
],
*
S1
=
src
[
1
];
VResizeLinearVec_32s8u
vecOp
;
int
x
=
vecOp
(
(
const
uchar
**
)
src
,
(
uchar
*
)
dst
,
(
const
uchar
*
)
beta
,
width
);
int
x
=
vecOp
(
src
,
dst
,
beta
,
width
);
#if CV_ENABLE_UNROLLED
for
(
;
x
<=
width
-
4
;
x
+=
4
)
{
...
...
@@ -1994,7 +1968,7 @@ struct VResizeCubic
CastOp
castOp
;
VecOp
vecOp
;
int
x
=
vecOp
(
(
const
uchar
**
)
src
,
(
uchar
*
)
dst
,
(
const
uchar
*
)
beta
,
width
);
int
x
=
vecOp
(
src
,
dst
,
beta
,
width
);
for
(
;
x
<
width
;
x
++
)
dst
[
x
]
=
castOp
(
S0
[
x
]
*
b0
+
S1
[
x
]
*
b1
+
S2
[
x
]
*
b2
+
S3
[
x
]
*
b3
);
}
...
...
@@ -2066,7 +2040,7 @@ struct VResizeLanczos4
{
CastOp
castOp
;
VecOp
vecOp
;
int
x
=
vecOp
(
(
const
uchar
**
)
src
,
(
uchar
*
)
dst
,
(
const
uchar
*
)
beta
,
width
);
int
x
=
vecOp
(
src
,
dst
,
beta
,
width
);
#if CV_ENABLE_UNROLLED
for
(
;
x
<=
width
-
4
;
x
+=
4
)
{
...
...
modules/imgproc/src/resize.hpp
浏览文件 @
07729e39
...
...
@@ -67,7 +67,7 @@ namespace opt_SSE4_1
void
resizeNN2_SSE4_1
(
const
Range
&
,
const
Mat
&
,
Mat
&
,
int
*
,
int
,
double
);
void
resizeNN4_SSE4_1
(
const
Range
&
,
const
Mat
&
,
Mat
&
,
int
*
,
int
,
double
);
int
VResizeLanczos4Vec_32f16u_SSE41
(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_
beta
,
int
width
);
int
VResizeLanczos4Vec_32f16u_SSE41
(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
);
#endif
}
}
...
...
modules/imgproc/src/resize.sse4_1.cpp
浏览文件 @
07729e39
...
...
@@ -186,13 +186,10 @@ void resizeNN4_SSE4_1(const Range& range, const Mat& src, Mat &dst, int *x_ofs,
parallel_for_
(
range
,
invoker
,
dst
.
total
()
/
(
double
)(
1
<<
16
));
}
int
VResizeLanczos4Vec_32f16u_SSE41
(
const
uchar
**
_src
,
uchar
*
_dst
,
const
uchar
*
_
beta
,
int
width
)
int
VResizeLanczos4Vec_32f16u_SSE41
(
const
float
**
src
,
ushort
*
dst
,
const
float
*
beta
,
int
width
)
{
const
float
**
src
=
(
const
float
**
)
_src
;
const
float
*
beta
=
(
const
float
*
)
_beta
;
const
float
*
S0
=
src
[
0
],
*
S1
=
src
[
1
],
*
S2
=
src
[
2
],
*
S3
=
src
[
3
],
*
S4
=
src
[
4
],
*
S5
=
src
[
5
],
*
S6
=
src
[
6
],
*
S7
=
src
[
7
];
short
*
dst
=
(
short
*
)
_dst
;
int
x
=
0
;
__m128
v_b0
=
_mm_set1_ps
(
beta
[
0
]),
v_b1
=
_mm_set1_ps
(
beta
[
1
]),
v_b2
=
_mm_set1_ps
(
beta
[
2
]),
v_b3
=
_mm_set1_ps
(
beta
[
3
]),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录