我正在使用OpenCV計算的單應性。我目前使用這種單應性來使用下面的函數來轉換點。這個函數執行我所需要的任務,但是我不知道它是如何工作的。OpenCV Homography,轉換一個觀點,這段代碼在做什麼?
誰能解釋,一行行正好,最後3行代碼背後的邏輯/理論,據我所知,這些將點x,y,但我不清楚爲什麼這個工程:
爲什麼Z
,px
和py
這樣計算,h
中的元素對應什麼?
您的意見是極大的讚賞:)
double h[9];
homography = cvMat(3, 3, CV_64F, h);
CvMat ps1 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points1);
CvMat ps2 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points2);
cvFindHomography(&ps1, &ps2, &homography, 0);
...
// This is the part I don't fully understand
double x = 10.0;
double y = 10.0;
double Z = 1./(h[6]*x + h[7]*y + h[8]);
px = (int)((h[0]*x + h[1]*y + h[2])*Z);
py = (int)((h[3]*x + h[4]*y + h[5])*Z);
您好,感謝您的意見,到目前爲止,還等什麼是Z-做什麼? – Jayson 2012-02-14 11:20:17
z是三維同質座標系中的第3個座標。 解釋同調座標的工作原理在這裏將會過分。但是p_homogenous(x,y,z)對應於p_cartesian(x/z,y/z)。 – Ben 2012-02-14 12:11:36
ahhh謝謝,現在開始有意義。 – Jayson 2012-02-14 12:39:03