The homography transformation is based on the following formulae[4]:
A Homography is a transformation ( a 3×3 matrix ) that maps the points
in one image to the corresponding points in the other image.[5]
Image Alignment Using Homography
Translation[6]
Rotation[6]
Affine Transformation[6]
Perspective Transformation[6]
-------------------------------------------------------
How to find angle between two images[10]
cv::Point3d findOrientation(const cv::Mat& src){
cv::Moments m = cv::moments(src, true);
double cen_x=m.m10/m.m00;
double cen_y=m.m01/m.m00;
double m_11= 2*m.m11-m.m00*(cen_x*cen_x+cen_y*cen_y);// m.mu11/m.m00;
double m_02=m.m02-m.m00*cen_y*cen_y;// m.mu02/m.m00;
double m_20=m.m20-m.m00*cen_x*cen_x;//m.mu20/m.m00;
double theta = m_20==m_02?0:atan2(m_11, m_20-m_02)/2.0;
// theta = (theta / PI) * 180.0; //if you want in radians.(or vice versa, not sure)
return cv::Point3d(cen_x,cen_y,theta);
}
參考資料
1. OpenCV: Fitting an object into a scene using homography and perspective transform in Java
2. Sector Projection Fourier Descriptor
3. Affine Transformations
4. The Homography transformation
5. Homography Examples using OpenCV ( Python / C ++ )
6. Geometric Transformations of Images
7. Features2D + Homography to find a known object
8. scale and rotation Template matching
9. How to find the rotated angle of object
10.How to find angle between two images
全站熱搜
留言列表