Enabled Intel-specific optimizations for HOG detector.
This commit is contained in:
@@ -1085,8 +1085,8 @@ static bool ocl_compute_gradients_8UC1(int height, int width, InputArray _img, f
|
||||
size_t globalThreads[3] = { width, height, 1 };
|
||||
char correctGamma = (correct_gamma) ? 1 : 0;
|
||||
int grad_quadstep = (int)grad.step >> 3;
|
||||
int qangle_step_shift = 0;
|
||||
int qangle_step = (int)qangle.step >> (1 + qangle_step_shift);
|
||||
int qangle_elem_size = CV_ELEM_SIZE1(qangle.type());
|
||||
int qangle_step = (int)qangle.step / (2 * qangle_elem_size);
|
||||
|
||||
int idx = 0;
|
||||
idx = k.set(idx, height);
|
||||
@@ -1137,9 +1137,9 @@ static bool ocl_compute_hists(int nbins, int block_stride_x, int block_stride_y,
|
||||
int img_block_height = (height - CELLS_PER_BLOCK_Y * CELL_HEIGHT + block_stride_y)/block_stride_y;
|
||||
int blocks_total = img_block_width * img_block_height;
|
||||
|
||||
int qangle_step_shift = 0;
|
||||
int qangle_elem_size = CV_ELEM_SIZE1(qangle.type());
|
||||
int grad_quadstep = (int)grad.step >> 2;
|
||||
int qangle_step = (int)qangle.step >> qangle_step_shift;
|
||||
int qangle_step = (int)qangle.step / qangle_elem_size;
|
||||
|
||||
int blocks_in_group = 4;
|
||||
size_t localThreads[3] = { blocks_in_group * 24, 2, 1 };
|
||||
@@ -1316,11 +1316,12 @@ static bool ocl_extract_descrs_by_cols(int win_height, int win_width, int block_
|
||||
static bool ocl_compute(InputArray _img, Size win_stride, std::vector<float>& _descriptors, int descr_format, Size blockSize,
|
||||
Size cellSize, int nbins, Size blockStride, Size winSize, float sigma, bool gammaCorrection, double L2HysThreshold)
|
||||
{
|
||||
Size imgSize = _img.size();
|
||||
Size imgSize = _img.size();
|
||||
Size effect_size = imgSize;
|
||||
|
||||
UMat grad(imgSize, CV_32FC2);
|
||||
UMat qangle(imgSize, CV_8UC2);
|
||||
int qangle_type = ocl::Device::getDefault().isIntel() ? CV_32SC2 : CV_8UC2;
|
||||
UMat qangle(imgSize, qangle_type);
|
||||
|
||||
const size_t block_hist_size = getBlockHistogramSize(blockSize, cellSize, nbins);
|
||||
const Size blocks_per_img = numPartsWithin(imgSize, blockSize, blockStride);
|
||||
@@ -1720,7 +1721,8 @@ static bool ocl_detect(InputArray img, std::vector<Point> &hits, double hit_thre
|
||||
Size imgSize = img.size();
|
||||
Size effect_size = imgSize;
|
||||
UMat grad(imgSize, CV_32FC2);
|
||||
UMat qangle(imgSize, CV_8UC2);
|
||||
int qangle_type = ocl::Device::getDefault().isIntel() ? CV_32SC2 : CV_8UC2;
|
||||
UMat qangle(imgSize, qangle_type);
|
||||
|
||||
const size_t block_hist_size = getBlockHistogramSize(blockSize, cellSize, nbins);
|
||||
const Size blocks_per_img = numPartsWithin(imgSize, blockSize, blockStride);
|
||||
|
Reference in New Issue
Block a user