提交 9c899474 编写于 作者: I Ilya Lavrenov

edited misprint

上级 2627c91c
...@@ -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.
先完成此消息的编辑!
想要评论请 注册