cv2cg icon indicating copy to clipboard operation
cv2cg copied to clipboard

A question about the source code

Open hgpvision opened this issue 7 years ago • 2 comments

Hi, I have a question about the source code, and that is about the struct Normalize2D in which the function getTransform try to make mean zero and unit variance 2D points: inline void getTransform(double T[3][3]) const { ... double stddevX = sqrt(mXX / N + eX*eX); //sf: this has to be done! double stddevY = sqrt(mYY / N + eY*eY); ... } The way to compute the standard deviation looks a bit of strange to me. Should not it be: double stddevX = sqrt(mXX / N - eX*eX); double stddevY = sqrt(mYY / N - eY*eY); I changed and executed but I got a totally wrong result. I don't know why. Are there any skills? Thanks!!

hgpvision avatar Feb 07 '18 02:02 hgpvision

Thanks for the good catch. I believe this bug is inherited from the original Java code. In fact, according to experiments, setting the scaleX (1./stddevX) to 1 won't affect much of the performance. I'll fix this later.

As about your wrong results, I think it might be due to the fact that you only changed this part but didn't change the getInverseTransform function accordingly.

simbaforrest avatar Feb 07 '18 04:02 simbaforrest

I get it. Thanks so much. It's exactly that I didn't change the inverse one.^_^#

hgpvision avatar Feb 07 '18 08:02 hgpvision