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
private:
int windowSize;
int partitions;
GpuMat devHist;
GpuMat devCoarseHist;
};
MedianFilter::MedianFilter(int srcType, int _windowSize, int _partitions) :
......@@ -1098,10 +1100,13 @@ namespace
// Note - these are hardcoded in the actual GPU kernel. Do not change these values.
int histSize=256, histCoarseSize=8;
int devHistCols = src.cols*histSize*partitions, devCoarseHistCols = src.cols*histCoarseSize*partitions;
if(devHist.empty() || devCoarseHist.empty() || devHist.cols != devHistCols || devCoarseHist.cols != devCoarseHistCols)
{
BufferPool pool(_stream);
GpuMat devHist = pool.getBuffer(1, src.cols*histSize*partitions,CV_32SC1);
GpuMat devCoarseHist = pool.getBuffer(1,src.cols*histCoarseSize*partitions,CV_32SC1);
devHist = pool.getBuffer(1, devHistCols, CV_32SC1);
devCoarseHist = pool.getBuffer(1, devCoarseHistCols, CV_32SC1);
}
devHist.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