Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
9c899474
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,发现更多精彩内容 >>
提交
9c899474
编写于
9月 24, 2012
作者:
I
Ilya Lavrenov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
edited misprint
上级
2627c91c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
43 deletion
+14
-43
modules/imgproc/src/imgwarp.cpp
modules/imgproc/src/imgwarp.cpp
+14
-43
未找到文件。
modules/imgproc/src/imgwarp.cpp
浏览文件 @
9c899474
...
@@ -1400,9 +1400,13 @@ struct DecimateAlpha
...
@@ -1400,9 +1400,13 @@ struct DecimateAlpha
};
};
#ifdef __APPLE__
#ifdef __APPLE__
#define HAVE_
TBB HAVE_
GDC
#define HAVE_GDC
#elif defined _MSC_VER && _MSC_VER >= 1600
#elif defined _MSC_VER && _MSC_VER >= 1600
#define HABE_TBB HAVE_CONCURRENCY
#define HAVE_CONCURRENCY
#endif
#if defined(HAVE_TBB) || defined(HAVE_OPENMP) || defined(HAVE_GDC) || defined(HAVE_CONCURRENCY)
#define HAVE_PARALLEL
#endif
#endif
template
<
typename
T
,
typename
WT
>
template
<
typename
T
,
typename
WT
>
...
@@ -1412,21 +1416,19 @@ class resizeArea_Invoker :
...
@@ -1412,21 +1416,19 @@ class resizeArea_Invoker :
public:
public:
resizeArea_Invoker
(
const
Mat
&
_src
,
Mat
&
_dst
,
const
DecimateAlpha
*
_xofs
,
resizeArea_Invoker
(
const
Mat
&
_src
,
Mat
&
_dst
,
const
DecimateAlpha
*
_xofs
,
int
_xofs_count
,
double
_scale_y_
int
_xofs_count
,
double
_scale_y_
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
,
const
int
*
_cur_dy_ofs
,
const
std
::
vector
<
std
::
pair
<
int
,
int
>
>&
_bands
,
const
int
*
_cur_dy_ofs
,
const
std
::
vector
<
std
::
pair
<
int
,
int
>
>&
_bands
#endif
#endif
)
:
)
:
ParallelLoopBody
(),
src
(
_src
),
dst
(
_dst
),
xofs
(
_xofs
),
ParallelLoopBody
(),
src
(
_src
),
dst
(
_dst
),
xofs
(
_xofs
),
xofs_count
(
_xofs_count
),
scale_y_
(
_scale_y_
)
xofs_count
(
_xofs_count
),
scale_y_
(
_scale_y_
)
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
,
cur_dy_ofs
(
_cur_dy_ofs
),
bands
(
_bands
)
,
cur_dy_ofs
(
_cur_dy_ofs
),
bands
(
_bands
)
#endif
#endif
{
{
// if (src.size() == Size(16, 16) && dst.size() == Size(5, 5))
// std::cout << "scale_y = " << scale_y_ << std::endl << std::endl;
}
}
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
void
resize_signle_band
(
const
Range
&
range
)
const
void
resize_signle_band
(
const
Range
&
range
)
const
#else
#else
virtual
void
operator
()
(
const
Range
&
range
)
const
virtual
void
operator
()
(
const
Range
&
range
)
const
...
@@ -1444,7 +1446,7 @@ public:
...
@@ -1444,7 +1446,7 @@ public:
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
buf
[
dx
]
=
sum
[
dx
]
=
0
;
buf
[
dx
]
=
sum
[
dx
]
=
0
;
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
cur_dy
=
cur_dy_ofs
[
range
.
start
];
cur_dy
=
cur_dy_ofs
[
range
.
start
];
#endif
#endif
for
(
sy
=
range
.
start
;
sy
<
range
.
end
;
sy
++
)
for
(
sy
=
range
.
start
;
sy
<
range
.
end
;
sy
++
)
...
@@ -1494,9 +1496,6 @@ public:
...
@@ -1494,9 +1496,6 @@ public:
if
(
(
cur_dy
+
1
)
*
scale_y
<=
sy
+
1
||
sy
==
ssize
.
height
-
1
)
if
(
(
cur_dy
+
1
)
*
scale_y
<=
sy
+
1
||
sy
==
ssize
.
height
-
1
)
{
{
// if (dsize == Size(5, 5) && ssize == Size(16, 16))
// std::cout << "Band: (" << range.start << ", " << range.end << ")" << std::endl;
WT
beta
=
std
::
max
(
sy
+
1
-
(
cur_dy
+
1
)
*
scale_y
,
(
WT
)
0
);
WT
beta
=
std
::
max
(
sy
+
1
-
(
cur_dy
+
1
)
*
scale_y
,
(
WT
)
0
);
WT
beta1
=
1
-
beta
;
WT
beta1
=
1
-
beta
;
T
*
D
=
(
T
*
)(
dst
.
data
+
dst
.
step
*
cur_dy
);
T
*
D
=
(
T
*
)(
dst
.
data
+
dst
.
step
*
cur_dy
);
...
@@ -1507,14 +1506,6 @@ public:
...
@@ -1507,14 +1506,6 @@ public:
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
{
{
D
[
dx
]
=
saturate_cast
<
T
>
((
sum
[
dx
]
+
buf
[
dx
])
/
min
(
scale_y
,
src
.
rows
-
cur_dy
*
scale_y
));
//
D
[
dx
]
=
saturate_cast
<
T
>
((
sum
[
dx
]
+
buf
[
dx
])
/
min
(
scale_y
,
src
.
rows
-
cur_dy
*
scale_y
));
//
// if (dsize == Size(5, 5) && ssize == Size(16, 16))
// {
// std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl;
// std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl;
// std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl;
// std::cout << "D[" << dx << "] = " << D[dx] << std::endl;
// std::cout << std::endl;
// }
sum
[
dx
]
=
buf
[
dx
]
=
0
;
sum
[
dx
]
=
buf
[
dx
]
=
0
;
}
}
}
}
...
@@ -1522,15 +1513,6 @@ public:
...
@@ -1522,15 +1513,6 @@ public:
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
for
(
dx
=
0
;
dx
<
dsize
.
width
;
dx
++
)
{
{
D
[
dx
]
=
saturate_cast
<
T
>
((
sum
[
dx
]
+
buf
[
dx
]
*
beta1
)
/
min
(
scale_y
,
src
.
rows
-
cur_dy
*
scale_y
));
//
D
[
dx
]
=
saturate_cast
<
T
>
((
sum
[
dx
]
+
buf
[
dx
]
*
beta1
)
/
min
(
scale_y
,
src
.
rows
-
cur_dy
*
scale_y
));
//
// if (dsize == Size(5, 5) && ssize == Size(16, 16))
// {
// std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl;
// std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl;
// std::cout << "beta1 = " << beta1 << std::endl;
// std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl;
// std::cout << "D[" << dx << "] = " << D[dx] << std::endl;
// std::cout << std::endl;
// }
sum
[
dx
]
=
buf
[
dx
]
*
beta
;
sum
[
dx
]
=
buf
[
dx
]
*
beta
;
buf
[
dx
]
=
0
;
buf
[
dx
]
=
0
;
}
}
...
@@ -1554,7 +1536,7 @@ public:
...
@@ -1554,7 +1536,7 @@ public:
}
}
}
}
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
virtual
void
operator
()
(
const
Range
&
range
)
const
virtual
void
operator
()
(
const
Range
&
range
)
const
{
{
for
(
int
i
=
range
.
start
;
i
<
range
.
end
;
++
i
)
for
(
int
i
=
range
.
start
;
i
<
range
.
end
;
++
i
)
...
@@ -1571,7 +1553,7 @@ private:
...
@@ -1571,7 +1553,7 @@ private:
const
DecimateAlpha
*
xofs
;
const
DecimateAlpha
*
xofs
;
const
int
xofs_count
;
const
int
xofs_count
;
const
double
scale_y_
;
const
double
scale_y_
;
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
const
int
*
cur_dy_ofs
;
const
int
*
cur_dy_ofs
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>
bands
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>
bands
;
#endif
#endif
...
@@ -1582,7 +1564,7 @@ private:
...
@@ -1582,7 +1564,7 @@ private:
template
<
typename
T
,
typename
WT
>
template
<
typename
T
,
typename
WT
>
static
void
resizeArea_
(
const
Mat
&
src
,
Mat
&
dst
,
const
DecimateAlpha
*
xofs
,
int
xofs_count
,
double
scale_y_
)
static
void
resizeArea_
(
const
Mat
&
src
,
Mat
&
dst
,
const
DecimateAlpha
*
xofs
,
int
xofs_count
,
double
scale_y_
)
{
{
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
Size
ssize
=
src
.
size
(),
dsize
=
dst
.
size
();
Size
ssize
=
src
.
size
(),
dsize
=
dst
.
size
();
AutoBuffer
<
int
>
_yofs
(
ssize
.
height
);
AutoBuffer
<
int
>
_yofs
(
ssize
.
height
);
int
*
cur_dy_ofs
=
_yofs
;
int
*
cur_dy_ofs
=
_yofs
;
...
@@ -1590,7 +1572,6 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
...
@@ -1590,7 +1572,6 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
std
::
vector
<
std
::
pair
<
int
,
int
>
>
bands
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>
bands
;
// cur_dy_ofs - dy for the current sy
// cur_dy_ofs - dy for the current sy
// yofs - a starting row for calculating a band according to the current sy
for
(
int
sy
=
0
;
sy
<
ssize
.
height
;
sy
++
)
for
(
int
sy
=
0
;
sy
<
ssize
.
height
;
sy
++
)
{
{
...
@@ -1609,20 +1590,10 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
...
@@ -1609,20 +1590,10 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
cur_dy
++
;
cur_dy
++
;
}
}
}
}
// bands.push_back(std::make_pair(index, ssize.height));
#endif
#endif
#ifdef HAVE_
TBB
#ifdef HAVE_
PARALLEL
Range
range
(
0
,
bands
.
size
());
Range
range
(
0
,
bands
.
size
());
// if (dsize == Size(5, 5) && ssize == Size(16, 16))
// {
// std::cout << "Bands" << std::endl;
// for (std::vector<std::pair<int, int> >::const_iterator i = bands.begin(), end = bands.end(); i != end; ++i)
// std::cout << i->first << " " << i->second << std::endl;
// std::cout << std::endl;
// }
resizeArea_Invoker
<
T
,
WT
>
invoker
(
src
,
dst
,
xofs
,
xofs_count
,
scale_y_
,
cur_dy_ofs
,
bands
);
resizeArea_Invoker
<
T
,
WT
>
invoker
(
src
,
dst
,
xofs
,
xofs_count
,
scale_y_
,
cur_dy_ofs
,
bands
);
#else
#else
Range
range
(
0
,
src
.
rows
);
Range
range
(
0
,
src
.
rows
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录