Ask Your Question

Revision history [back]

Optimizations on opencv hog implementation(interp_weight, gaussian)

Hello,

I'm trying to implement hog descriptor algorithm on FPGA. I will use pure(without using any library) C++ code to synthesize design with Vivado HLS. So, i need to know what is the general formula which includes interp_weight, gaussian coefficients. The related opencl code is as follows;

int dist_center_y = dist_y - 4 * (1 - 2 * cell_y);
int idx = (dist_center_y + 8) * 16 + (dist_center_x + 8);
float gaussian = gauss_w_lut[idx];
idx = (dist_y + 8) * 16 + (dist_x + 8);
float interp_weight = gauss_w_lut[256+idx];
hist[bin.x * 48] += gaussian * interp_weight * vote.x;
hist[bin.y * 48] += gaussian * interp_weight * vote.y;

Its hard for me to read this opencl code, because i am unfamiliar to this language.

Is there any paper or guide which explaines steps of opencv hog implementation? I should create a C++ code which is fully compatible with opencv.

Optimizations on opencv hog implementation(interp_weight, gaussian)

Hello,

I'm trying to implement hog descriptor algorithm on FPGA. I will use pure(without using any library) C++ code to synthesize design with Vivado HLS. So, i need to know what is the general formula which includes interp_weight, gaussian coefficients. The related opencl code is as follows;

int dist_center_y = dist_y - 4 * (1 - 2 * cell_y);
int idx = (dist_center_y + 8) * 16 + (dist_center_x + 8);
float gaussian = gauss_w_lut[idx];
idx = (dist_y + 8) * 16 + (dist_x + 8);
float interp_weight = gauss_w_lut[256+idx];
hist[bin.x * 48] += gaussian * interp_weight * vote.x;
hist[bin.y * 48] += gaussian * interp_weight * vote.y;

Its hard for me to read this opencl code, because i am unfamiliar to this language.

Is there any paper or guide which explaines steps of opencv hog implementation? I should create a C++ code which is fully compatible with opencv.

Necessary addition: I have already implemented my own hog algorithm by looking at explanatory links from https://docs.opencv.org/master/d5/d33/structcv_1_1HOGDescriptor.html#details . But the output is not same as the opencv. I checked opencv source code and realized that only difference between my algorithm and opencv implementation is the code section i posted above. I'm getting best accuracy on svm with opencv hog, so i need fully same algorithm with opencv. I couldnt find any mathematical formula, i m not good at getting mathematical formula from verbal expression.