|
|
|
@ -47,6 +47,8 @@ |
|
|
|
|
// */
|
|
|
|
|
|
|
|
|
|
#include "precomp.hpp" |
|
|
|
|
#include <iostream> |
|
|
|
|
#include <vector> |
|
|
|
|
|
|
|
|
|
namespace cv |
|
|
|
|
{ |
|
|
|
@ -1414,6 +1416,8 @@ public: |
|
|
|
|
, 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 |
|
|
|
@ -1437,7 +1441,7 @@ public: |
|
|
|
|
#ifdef HAVE_TBB |
|
|
|
|
cur_dy = cur_dy_ofs[range.start]; |
|
|
|
|
#endif |
|
|
|
|
for( sy = range.start; sy < range.end; sy++ ) |
|
|
|
|
for (sy = range.start; sy < range.end; sy++) |
|
|
|
|
{ |
|
|
|
|
const T* S = (const T*)(src.data + src.step*sy); |
|
|
|
|
if( cn == 1 ) |
|
|
|
@ -1484,6 +1488,9 @@ public: |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
@ -1493,14 +1500,31 @@ public: |
|
|
|
|
return; |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
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; |
|
|
|
|
buf[dx] = 0; |
|
|
|
|
} |
|
|
|
@ -1579,11 +1603,20 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in |
|
|
|
|
cur_dy++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
bands.push_back(std::make_pair(index, ssize.height)); |
|
|
|
|
// bands.push_back(std::make_pair(index, ssize.height));
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_TBB |
|
|
|
|
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); |
|
|
|
|