KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am working on a project which attempts to remove the perspective distortion from an image based on the known orientation of the camera. My thinking is that I can create a rotational matrix based on the known X, Y, and Z orientations of the camera. I can then apply those matrices to the image via the WarpPerspective method. In my script (written in Python) I have created three rotational matrices, each based on an orientation angle. I have gotten to a point where I am stuck on two issues. First, when I load each individual matrix into the WarpPerspective method, it doesn't seem to be working correctly. Whenever I warp an image on one axis it appears to significantly overwarp the image. The contents of the image are only recognizable if I limit the orientation angle to around 1 degree or less. Secondly, how do I combine the three rotational matrices into a single matrix to be loaded into the WarpPerspective method. Can I import a 3x3 rotational matrix into that method, or do I have to create a 4x4 projective matrix. Below is the code that I am working on. Thank you for your help. CR from numpy import * import cv #Sets angle of camera and converts to radians x = -14 * (pi/180) y = 20 * (pi/180) z = 15 * (pi/180) #Creates the Rotational Matrices rX = array([[1, 0, 0], [0, cos(x), -sin(x)], [0, sin(x), cos(x)]]) rY = array([[cos(y), 0, -sin(y)], [0, 1, 0], [sin(y), 0, cos(y)]]) rZ = array([[cos(z), sin(z), 0], [-sin(z), cos(z), 0], [0, 0, 1]]) #Converts to CVMat format X = cv.fromarray(rX) Y = cv.fromarray(rY) Z = cv.fromarray(rZ) #Imports image file and creates destination filespace im = cv.LoadImage("reference_image.jpg") dst = cv.CreateImage(cv.GetSize(im), cv.IPL_DEPTH_8U, 3) #Warps Image cv.WarpPerspective(im, dst, X) #Display cv.NamedWindow("distorted") cv.ShowImage("distorted", im) cv.NamedWindow("corrected") cv.ShowImage("corrected", dst) cv.WaitKey(0) cv.DestroyWindow("distorted") cv.Destroy
Tags (comma-separated)
Save Edits
Cancel