Commit 5fad2a3f authored by wykvictor's avatar wykvictor Committed by Yakun Wang

Speedup MedianFilter::apply() when calling repeatedly

Speedup MedianFilter::apply(), avoid to newly create the two GpuMat every time calling filter->apply(), which is very time consuming.
parent 7dd3723a
...@@ -1068,6 +1068,8 @@ namespace ...@@ -1068,6 +1068,8 @@ namespace
private: private:
int windowSize; int windowSize;
int partitions; int partitions;
GpuMat devHist;
GpuMat devCoarseHist;
}; };
MedianFilter::MedianFilter(int srcType, int _windowSize, int _partitions) : MedianFilter::MedianFilter(int srcType, int _windowSize, int _partitions) :
...@@ -1098,10 +1100,13 @@ namespace ...@@ -1098,10 +1100,13 @@ namespace
// Note - these are hardcoded in the actual GPU kernel. Do not change these values. // Note - these are hardcoded in the actual GPU kernel. Do not change these values.
int histSize=256, histCoarseSize=8; int histSize=256, histCoarseSize=8;
int devHistCols = src.cols*histSize*partitions, devCoarseHistCols = src.cols*histCoarseSize*partitions;
BufferPool pool(_stream); if(devHist.empty() || devCoarseHist.empty() || devHist.cols != devHistCols || devCoarseHist.cols != devCoarseHistCols)
GpuMat devHist = pool.getBuffer(1, src.cols*histSize*partitions,CV_32SC1); {
GpuMat devCoarseHist = pool.getBuffer(1,src.cols*histCoarseSize*partitions,CV_32SC1); BufferPool pool(_stream);
devHist = pool.getBuffer(1, devHistCols, CV_32SC1);
devCoarseHist = pool.getBuffer(1, devCoarseHistCols, CV_32SC1);
}
devHist.setTo(0, _stream); devHist.setTo(0, _stream);
devCoarseHist.setTo(0, _stream); devCoarseHist.setTo(0, _stream);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment