projects
/
profile
/
ivi
/
opencv.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2627c91
)
edited misprint
author
Ilya Lavrenov
<ilya.lavrenov@itseez.com>
Mon, 24 Sep 2012 09:46:09 +0000
(13:46 +0400)
committer
Ilya Lavrenov
<ilya.lavrenov@itseez.com>
Mon, 24 Sep 2012 09:46:09 +0000
(13:46 +0400)
modules/imgproc/src/imgwarp.cpp
patch
|
blob
|
history
diff --git
a/modules/imgproc/src/imgwarp.cpp
b/modules/imgproc/src/imgwarp.cpp
index
6752d22
..
b899ae0
100644
(file)
--- a/
modules/imgproc/src/imgwarp.cpp
+++ b/
modules/imgproc/src/imgwarp.cpp
@@
-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
template <typename T, typename WT>
#endif
template <typename T, typename WT>
@@
-1412,21
+1416,19
@@
class resizeArea_Invoker :
public:
resizeArea_Invoker(const Mat& _src, Mat& _dst, const DecimateAlpha* _xofs,
int _xofs_count, double _scale_y_
public:
resizeArea_Invoker(const Mat& _src, Mat& _dst, const DecimateAlpha* _xofs,
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
#endif
) :
ParallelLoopBody(), src(_src), dst(_dst), xofs(_xofs),
xofs_count(_xofs_count), scale_y_(_scale_y_)
, const int* _cur_dy_ofs, const std::vector<std::pair<int, int> >& _bands
#endif
) :
ParallelLoopBody(), src(_src), dst(_dst), xofs(_xofs),
xofs_count(_xofs_count), scale_y_(_scale_y_)
-#ifdef HAVE_
TBB
+#ifdef HAVE_
PARALLEL
, cur_dy_ofs(_cur_dy_ofs), bands(_bands)
#endif
{
, cur_dy_ofs(_cur_dy_ofs), bands(_bands)
#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
#else
virtual void operator() (const Range& range) const
void resize_signle_band(const Range& range) const
#else
virtual void operator() (const Range& range) const
@@
-1444,7
+1446,7
@@
public:
for( dx = 0; dx < dsize.width; dx++ )
buf[dx] = sum[dx] = 0;
for( dx = 0; dx < dsize.width; dx++ )
buf[dx] = sum[dx] = 0;
-#ifdef HAVE_
TBB
+#ifdef HAVE_
PARALLEL
cur_dy = cur_dy_ofs[range.start];
#endif
for (sy = range.start; sy < range.end; sy++)
cur_dy = cur_dy_ofs[range.start];
#endif
for (sy = range.start; sy < range.end; sy++)
@@
-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 beta1 = 1 - beta;
T* D = (T*)(dst.data + dst.step*cur_dy);
WT beta = std::max(sy + 1 - (cur_dy+1)*scale_y, (WT)0);
WT beta1 = 1 - beta;
T* D = (T*)(dst.data + dst.step*cur_dy);
@@
-1507,14
+1506,6
@@
public:
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)); //
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)); //
-// 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:
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)); //
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)); //
-// 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;
buf[dx] = 0;
}
sum[dx] = buf[dx]*beta;
buf[dx] = 0;
}
@@
-1554,7
+1536,7
@@
public:
}
}
}
}
-#ifdef HAVE_
TBB
+#ifdef HAVE_
PARALLEL
virtual void operator() (const Range& range) const
{
for (int i = range.start; i < range.end; ++i)
virtual void operator() (const Range& range) const
{
for (int i = range.start; i < range.end; ++i)
@@
-1571,7
+1553,7
@@
private:
const DecimateAlpha* xofs;
const int xofs_count;
const double scale_y_;
const DecimateAlpha* xofs;
const int xofs_count;
const double scale_y_;
-#ifdef HAVE_
TBB
+#ifdef HAVE_
PARALLEL
const int *cur_dy_ofs;
std::vector<std::pair<int, int> > bands;
#endif
const int *cur_dy_ofs;
std::vector<std::pair<int, int> > bands;
#endif
@@
-1582,7
+1564,7
@@
private:
template <typename T, typename WT>
static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, int xofs_count, double scale_y_)
{
template <typename T, typename WT>
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();
AutoBuffer<int> _yofs(ssize.height);
int *cur_dy_ofs = _yofs;
Size ssize = src.size(), dsize = dst.size();
AutoBuffer<int> _yofs(ssize.height);
int *cur_dy_ofs = _yofs;
@@
-1590,7
+1572,6
@@
static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
std::vector<std::pair<int, int> > bands;
// cur_dy_ofs - dy for the current sy
std::vector<std::pair<int, int> > bands;
// 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
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);
#else
Range range(0, src.rows);
resizeArea_Invoker<T, WT> invoker(src, dst, xofs, xofs_count, scale_y_, cur_dy_ofs, bands);
#else
Range range(0, src.rows);