Ask Your Question
1

Some trouble with Perspective Transform

asked 2013-03-09 01:39:17 -0500

Andreyk6 gravatar image

updated 2013-03-09 10:15:35 -0500

Hello, i use PerspectiveTransform and as a result have matrix of transformation. I need transform coordinates of ONE point using this matrix, i read that i can use coficient of matrix for calculate it, and matrix buil like this image description

x'i = (Ax + By + C)/(ax+ by + c)

y'i = (Dx + Ey + F)/(ax+ by + c)

CvPoint2D32f srcQuad[4], dstQuad[4];
CvMat* warp_matrix = cvCreateMat(3,3,CV_32FC1);
srcQuad... some code here
dstQuad... and here
cvGetPerspectiveTransform(srcQuad,dstQuad,matrix);

But when i use this formula it don`t work corectly every time

p.x=(matrix[0][0]*p.x+matrix[0][1]*p.y+matrix[0][2])/(matrix[2][0]*p.x+matrix[2][1]*p.y+matrix[2][2]);
p.y=(matrix[1][0]*p.x+matrix[1][1]*p.y+matrix[1][2])/(matrix[2][0]*p.x+matrix[2][1]*p.y+matrix[2][2]);

I think that the transformation matrix in OpenCV has a different structure, or I made ​​a mistake somewhere. Perhaps there is other variant coordinate transformation one point? And Sorry for my english)

edit retag flag offensive close merge delete

Comments

have you compared your result with the output of cv::transform(...) ?

Guanta gravatar imageGuanta ( 2013-03-09 05:40:51 -0500 )edit

1 answer

Sort by » oldest newest most voted
2

answered 2013-03-09 07:40:14 -0500

Daniil Osokin gravatar image

Hi! You should transpose your matrix on image to get the formula below it. OpenCV uses this formula: image description
where (Mij) - transformation matrix. About perspective transformation in OpenCV you can read here.

edit flag offensive delete link more

Comments

1

Thank you.

Andreyk6 gravatar imageAndreyk6 ( 2013-03-09 10:34:32 -0500 )edit
Login/Signup to Answer

Question Tools

Stats

Asked: 2013-03-09 01:39:17 -0500

Seen: 619 times

Last updated: Mar 09 '13