cv2cg
cv2cg copied to clipboard
A question about the source code
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!!
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.
I get it. Thanks so much. It's exactly that I didn't change the inverse one.^_^#