Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
7ec59fc0
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
7ec59fc0
编写于
9月 17, 2017
作者:
C
Christof Kaufmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert changes of mean and meanStdDev
上级
46a668c5
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
132 addition
and
310 deletion
+132
-310
modules/core/include/opencv2/core.hpp
modules/core/include/opencv2/core.hpp
+2
-2
modules/core/src/stat.cpp
modules/core/src/stat.cpp
+113
-271
modules/core/test/test_arithm.cpp
modules/core/test/test_arithm.cpp
+2
-2
modules/ts/src/ts_func.cpp
modules/ts/src/ts_func.cpp
+15
-35
未找到文件。
modules/core/include/opencv2/core.hpp
浏览文件 @
7ec59fc0
...
...
@@ -608,7 +608,7 @@ CV_EXPORTS_W void findNonZero( InputArray src, OutputArray idx );
The function cv::mean calculates the mean value M of array elements,
independently for each channel, and return it:
\f[\begin{array}{l} N
_c = \sum _{I: \; {\texttt{mask} (I)_c} \ne 0} 1 \\ M_c = \left ( \sum _{I: \; {\texttt{mask} (I)_c} \ne 0}{ \texttt{src} (I)_c} \right )/N_c
\end{array}\f]
\f[\begin{array}{l} N
= \sum _{I: \; \texttt{mask} (I) \ne 0} 1 \\ M_c = \left ( \sum _{I: \; \texttt{mask} (I) \ne 0}{ \texttt{mtx} (I)_c} \right )/N
\end{array}\f]
When all the mask elements are 0's, the function returns Scalar::all(0)
@param src input array that should have from 1 to 4 channels so that the result can be stored in
Scalar_ .
...
...
@@ -622,7 +622,7 @@ CV_EXPORTS_W Scalar mean(InputArray src, InputArray mask = noArray());
The function cv::meanStdDev calculates the mean and the standard deviation M
of array elements independently for each channel and returns it via the
output parameters:
\f[\begin{array}{l} N
_c = \sum _{I, {\texttt{mask} (I)_c} \ne 0} 1 \\ \texttt{mean} _c = \frac{\sum_{ I: \; {\texttt{mask} (I)_c} \ne 0} \texttt{src} (I)_c}{N_c} \\ \texttt{stddev} _c = \sqrt{\frac{\sum_{ I: \; {\texttt{mask} (I)_c} \ne 0} \left ( \texttt{src} (I)_c - \texttt{mean} _c \right )^2}{N_c
}} \end{array}\f]
\f[\begin{array}{l} N
= \sum _{I, \texttt{mask} (I) \ne 0} 1 \\ \texttt{mean} _c = \frac{\sum_{ I: \; \texttt{mask}(I) \ne 0} \texttt{src} (I)_c}{N} \\ \texttt{stddev} _c = \sqrt{\frac{\sum_{ I: \; \texttt{mask}(I) \ne 0} \left ( \texttt{src} (I)_c - \texttt{mean} _c \right )^2}{N
}} \end{array}\f]
When all the mask elements are 0's, the function returns
mean=stddev=Scalar::all(0).
@note The calculated standard deviation is only the diagonal of the
...
...
modules/core/src/stat.cpp
浏览文件 @
7ec59fc0
此差异已折叠。
点击以展开。
modules/core/test/test_arithm.cpp
浏览文件 @
7ec59fc0
...
...
@@ -1162,7 +1162,7 @@ struct CartToPolarToCartOp : public BaseElemWiseOp
struct
MeanOp
:
public
BaseElemWiseOp
{
MeanOp
()
:
BaseElemWiseOp
(
1
,
FIX_ALPHA
+
FIX_BETA
+
FIX_GAMMA
+
SUPPORT_MASK
+
S
UPPORT_MULTICHANNELMASK
+
S
CALAR_OUTPUT
,
1
,
1
,
Scalar
::
all
(
0
))
MeanOp
()
:
BaseElemWiseOp
(
1
,
FIX_ALPHA
+
FIX_BETA
+
FIX_GAMMA
+
SUPPORT_MASK
+
SCALAR_OUTPUT
,
1
,
1
,
Scalar
::
all
(
0
))
{
context
=
3
;
};
...
...
@@ -1244,7 +1244,7 @@ struct MeanStdDevOp : public BaseElemWiseOp
Scalar
sqmeanRef
;
int
cn
;
MeanStdDevOp
()
:
BaseElemWiseOp
(
1
,
FIX_ALPHA
+
FIX_BETA
+
FIX_GAMMA
+
SUPPORT_MASK
+
S
UPPORT_MULTICHANNELMASK
+
S
CALAR_OUTPUT
,
1
,
1
,
Scalar
::
all
(
0
))
MeanStdDevOp
()
:
BaseElemWiseOp
(
1
,
FIX_ALPHA
+
FIX_BETA
+
FIX_GAMMA
+
SUPPORT_MASK
+
SCALAR_OUTPUT
,
1
,
1
,
Scalar
::
all
(
0
))
{
cn
=
0
;
context
=
7
;
...
...
modules/ts/src/ts_func.cpp
浏览文件 @
7ec59fc0
...
...
@@ -2598,11 +2598,11 @@ void divide(const Mat& src1, const Mat& src2, Mat& dst, double scale)
template
<
typename
_Tp
>
static
void
mean_
(
const
_Tp
*
src
,
const
uchar
*
mask
,
size_t
total
,
int
cn
,
int
mcn
,
Scalar
&
sum
,
Scalar_
<
int
>
&
nz
)
mean_
(
const
_Tp
*
src
,
const
uchar
*
mask
,
size_t
total
,
int
cn
,
Scalar
&
sum
,
int
&
nz
)
{
if
(
!
mask
)
{
nz
+=
Scalar_
<
int
>::
all
((
int
)
total
)
;
nz
+=
(
int
)
total
;
total
*=
cn
;
for
(
size_t
i
=
0
;
i
<
total
;
i
+=
cn
)
{
...
...
@@ -2610,41 +2610,23 @@ mean_(const _Tp* src, const uchar* mask, size_t total, int cn, int mcn, Scalar&
sum
[
c
]
+=
src
[
i
+
c
];
}
}
else
if
(
mcn
==
1
)
else
{
for
(
size_t
i
=
0
;
i
<
total
;
i
++
)
if
(
mask
[
i
]
)
{
nz
++
;
for
(
int
c
=
0
;
c
<
cn
;
c
++
)
{
nz
[
c
]
++
;
sum
[
c
]
+=
src
[
i
*
cn
+
c
];
}
}
}
else
{
total
*=
cn
;
for
(
size_t
i
=
0
;
i
<
total
;
i
+=
cn
)
{
for
(
int
c
=
0
;
c
<
cn
;
c
++
)
{
if
(
mask
[
i
+
c
]
)
{
nz
[
c
]
++
;
sum
[
c
]
+=
src
[
i
+
c
];
}
}
}
}
}
Scalar
mean
(
const
Mat
&
src
,
const
Mat
&
mask
)
{
CV_Assert
(
mask
.
empty
()
||
(
mask
.
depth
()
==
CV_8U
&&
mask
.
size
==
src
.
size
&&
(
mask
.
channels
()
==
1
||
mask
.
channels
()
==
src
.
channels
())));
CV_Assert
(
mask
.
empty
()
||
(
mask
.
type
()
==
CV_8U
&&
mask
.
size
==
src
.
size
));
Scalar
sum
;
Scalar_
<
int
>
nz
=
Scalar_
<
int
>::
all
(
0
)
;
int
nz
=
0
;
const
Mat
*
arrays
[]
=
{
&
src
,
&
mask
,
0
};
Mat
planes
[
2
];
...
...
@@ -2652,7 +2634,7 @@ Scalar mean(const Mat& src, const Mat& mask)
NAryMatIterator
it
(
arrays
,
planes
);
size_t
total
=
planes
[
0
].
total
();
size_t
i
,
nplanes
=
it
.
nplanes
;
int
c
,
depth
=
src
.
depth
(),
cn
=
src
.
channels
(),
mcn
=
mask
.
channels
();
int
depth
=
src
.
depth
(),
cn
=
src
.
channels
();
for
(
i
=
0
;
i
<
nplanes
;
i
++
,
++
it
)
{
...
...
@@ -2662,34 +2644,32 @@ Scalar mean(const Mat& src, const Mat& mask)
switch
(
depth
)
{
case
CV_8U
:
mean_
((
const
uchar
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
uchar
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_8S
:
mean_
((
const
schar
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
schar
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_16U
:
mean_
((
const
ushort
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
ushort
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_16S
:
mean_
((
const
short
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
short
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_32S
:
mean_
((
const
int
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
int
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_32F
:
mean_
((
const
float
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
float
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
case
CV_64F
:
mean_
((
const
double
*
)
sptr
,
mptr
,
total
,
cn
,
mcn
,
sum
,
nz
);
mean_
((
const
double
*
)
sptr
,
mptr
,
total
,
cn
,
sum
,
nz
);
break
;
default:
CV_Error
(
Error
::
StsUnsupportedFormat
,
""
);
}
}
for
(
c
=
0
;
c
<
cn
;
c
++
)
sum
[
c
]
*=
(
1.
/
std
::
max
(
nz
[
c
],
1
));
return
sum
;
return
sum
*
(
1.
/
std
::
max
(
nz
,
1
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录