Ask Your Question

Optimizations on opencv hog implementation(interp_weight, gaussian)

asked 2020-12-07 07:00:10 -0600

Alican Özeloğlu gravatar image

updated 2020-12-08 00:12:21 -0600


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 . 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.

edit retag flag offensive close merge delete

3 answers

Sort by » oldest newest most voted

answered 2020-12-11 05:59:55 -0600

you can also take a look at

do you have a dataset you already trained a detector?

you can train with both OpenCV and Dlib and compare results

edit flag offensive delete link more

answered 2020-12-07 12:59:15 -0600

crackwitz gravatar image

I would suggest that you find the original scientific paper that describes the Histogram of Oriented Gradients

the wikipedia article is a bearable starting point

edit flag offensive delete link more


Thank you for your suggestion.

Alican Özeloğlu gravatar imageAlican Özeloğlu ( 2020-12-08 00:31:40 -0600 )edit

answered 2020-12-07 08:12:06 -0600

berak gravatar image

updated 2020-12-07 08:16:14 -0600

looking at optimized opencl code, when trying to understand an algorithm is always a bad idea ...

rather read the official docs, there are a lot of explanatory links !

edit flag offensive delete link more


Thank you for your answer. I have already read this articles but couldnt build an algorithm which produces output exact same with opencv.

Alican Özeloğlu gravatar imageAlican Özeloğlu ( 2020-12-08 00:35:41 -0600 )edit

Question Tools

1 follower


Asked: 2020-12-07 07:00:10 -0600

Seen: 814 times

Last updated: Dec 11 '20