Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
e75056a0
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,发现更多精彩内容 >>
提交
e75056a0
编写于
11月 21, 2017
作者:
M
Maksim Shabunin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
static init
上级
51fc891a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
13 deletion
+17
-13
modules/core/include/opencv2/core/private.hpp
modules/core/include/opencv2/core/private.hpp
+4
-0
modules/imgproc/src/color.cpp
modules/imgproc/src/color.cpp
+13
-13
未找到文件。
modules/core/include/opencv2/core/private.hpp
浏览文件 @
e75056a0
...
...
@@ -159,6 +159,10 @@ static inline cv::Size cvGetMatSize( const CvMat* mat )
namespace
cv
{
CV_EXPORTS
void
scalarToRawData
(
const
cv
::
Scalar
&
s
,
void
*
buf
,
int
type
,
int
unroll_to
=
0
);
//! Allocate all memory buffers which will not be freed, ease filtering memcheck issues
template
<
typename
T
>
CV_EXPORTS
T
*
allocSingleton
(
size_t
count
)
{
return
new
T
[
count
];
}
}
// property implementation macros
...
...
modules/imgproc/src/color.cpp
浏览文件 @
e75056a0
...
...
@@ -140,23 +140,24 @@ const int CB2GI = -5636;
const
int
CR2GI
=
-
11698
;
const
int
CR2RI
=
22987
;
static
void
splineBuild
(
const
softfloat
*
f
,
int
n
,
float
*
tab
)
static
const
float
*
splineBuild
(
const
softfloat
*
f
,
size_t
n
)
{
float
*
tab
=
cv
::
allocSingleton
<
float
>
(
n
*
4
);
const
softfloat
f2
(
2
),
f3
(
3
),
f4
(
4
);
softfloat
cn
(
0
);
softfloat
*
sftab
=
reinterpret_cast
<
softfloat
*>
(
tab
);
int
i
;
tab
[
0
]
=
tab
[
1
]
=
0.0
f
;
for
(
i
=
1
;
i
<=
n
-
1
;
i
++
)
for
(
size_t
i
=
1
;
i
<
n
;
i
++
)
{
softfloat
t
=
(
f
[
i
+
1
]
-
f
[
i
]
*
f2
+
f
[
i
-
1
])
*
f3
;
softfloat
l
=
softfloat
::
one
()
/
(
f4
-
sftab
[(
i
-
1
)
*
4
]);
sftab
[
i
*
4
]
=
l
;
sftab
[
i
*
4
+
1
]
=
(
t
-
sftab
[(
i
-
1
)
*
4
+
1
])
*
l
;
}
for
(
i
=
n
-
1
;
i
>=
0
;
i
--
)
for
(
size_t
j
=
0
;
j
<
n
;
++
j
)
{
size_t
i
=
n
-
j
-
1
;
softfloat
c
=
sftab
[
i
*
4
+
1
]
-
sftab
[
i
*
4
]
*
cn
;
softfloat
b
=
f
[
i
+
1
]
-
f
[
i
]
-
(
cn
+
c
*
f2
)
/
f3
;
softfloat
d
=
(
cn
-
c
)
/
f3
;
...
...
@@ -164,8 +165,10 @@ static void splineBuild(const softfloat* f, int n, float* tab)
sftab
[
i
*
4
+
2
]
=
c
;
sftab
[
i
*
4
+
3
]
=
d
;
cn
=
c
;
}
return
tab
;
}
// interpolates value of a function at x, 0 <= x <= n using a cubic spline.
template
<
typename
_Tp
>
static
inline
_Tp
splineInterpolate
(
_Tp
x
,
const
_Tp
*
tab
,
int
n
)
{
...
...
@@ -5820,11 +5823,11 @@ static const softdouble D65[] = {softdouble::fromRaw(0x3fee6a22b3892ee8),
softdouble
::
fromRaw
(
0x3ff16b8950763a19
)};
enum
{
LAB_CBRT_TAB_SIZE
=
1024
,
GAMMA_TAB_SIZE
=
1024
};
static
float
*
LabCbrtTab
;
static
const
float
*
LabCbrtTab
=
0
;
static
const
float
LabCbrtTabScale
=
softfloat
(
LAB_CBRT_TAB_SIZE
*
2
)
/
softfloat
(
3
);
static
float
*
sRGBGammaTab
;
static
float
*
sRGBInvGammaTab
;
static
const
float
*
sRGBGammaTab
=
0
;
static
const
float
*
sRGBInvGammaTab
=
0
;
static
const
float
GammaTabScale
((
int
)
GAMMA_TAB_SIZE
);
static
ushort
sRGBGammaTab_b
[
256
],
linearGammaTab_b
[
256
];
...
...
@@ -5911,8 +5914,7 @@ static void initLabTabs()
softfloat
x
=
scale
*
softfloat
(
i
);
f
[
i
]
=
x
<
lthresh
?
mulAdd
(
x
,
lscale
,
lbias
)
:
cbrt
(
x
);
}
LabCbrtTab
=
new
float
[
LAB_CBRT_TAB_SIZE
*
4
];
splineBuild
(
f
,
LAB_CBRT_TAB_SIZE
,
LabCbrtTab
);
LabCbrtTab
=
splineBuild
(
f
,
LAB_CBRT_TAB_SIZE
);
scale
=
softfloat
::
one
()
/
softfloat
(
GammaTabScale
);
for
(
i
=
0
;
i
<=
GAMMA_TAB_SIZE
;
i
++
)
...
...
@@ -5922,10 +5924,8 @@ static void initLabTabs()
ig
[
i
]
=
applyInvGamma
(
x
);
}
sRGBGammaTab
=
new
float
[
GAMMA_TAB_SIZE
*
4
];
sRGBInvGammaTab
=
new
float
[
GAMMA_TAB_SIZE
*
4
];
splineBuild
(
g
,
GAMMA_TAB_SIZE
,
sRGBGammaTab
);
splineBuild
(
ig
,
GAMMA_TAB_SIZE
,
sRGBInvGammaTab
);
sRGBGammaTab
=
splineBuild
(
g
,
GAMMA_TAB_SIZE
);
sRGBInvGammaTab
=
splineBuild
(
ig
,
GAMMA_TAB_SIZE
);
static
const
softfloat
intScale
(
255
*
(
1
<<
gamma_shift
));
for
(
i
=
0
;
i
<
256
;
i
++
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录