0

I am trying to complete a relatively basic photogrammetry project where we are trying to locate 3D points of an object in world coordinates from 2D pictures given the locations of the pictures in world coordinates. The angle of projection of the camera is known. The pictures were taken at 8 equally spaced distances around the object in a known radius so the coordinates of the projection centres are known.

I then identify corresponding keypoints on the object from different pictures. The keypoint identified on the image plane will form a 3D line with the projection centre and this line will be used for triangulation from another orientation. This is under the pinhole camera model assumption.

My problem is identifying where this keypoint is in 3D world coordinates.

I don't think I'll have time to programme this before deadline (was working in Python with OpenCV) but just want to be able to understand how to complete this triangulation.

My thinking is that I can put the camera coordinates origin at the camera's projection centre, thus giving the virtual image plane at a distance of the focal length of the camera. Now the pixel coordinates can be converted to mm and give the other two coordinates of the keypoint on that plane. I now have a 3D coordinate of a keypoint in the camera's local coordinate system. I am having trouble mapping the camera's local coordinate system to the world coordinate frame, even though I know the rotation and translation between them.

Is this representable with just rotation and translation matricies? How can I define a relationship that can convert a 3D point in the local camera coordinate system to global world coordinate system?

Another problem I'm encountering is that two rotation matricices applied to a 3D point will net a different result depending on the order of multiplication. So for a coordinate frame that needs rotating around two axes to define in the world coordinate frame, how do I know which order to apply the rotations in? Do I need to use quaternions?

Peterqt
  • 1
  • 1
  • Welcome to Stack Overflow. Please read the information guides in the **help center** (https://stackoverflow.com/help), in particular, "How to Ask A Good Question" (https://stackoverflow.com/help/how-to-ask) and "How to create a Minimal, Reproducible Example" (https://stackoverflow.com/help/minimal-reproducible-example). One question at a time, please! – fmw42 May 13 '23 at 15:55
  • Probably the quickest way is to read existing {books, papers, websites} rather than hoping someone will explain all the theory/geometry/mathematics etc. – fana May 18 '23 at 06:39
  • > how do I know which order to apply the rotations in? --> it depend on why you rotate(definition/meaning of each rotation). You will need to consider "what is this rotation result?". In other word, "How you define/model the representation of rotation(coordinate transformation) mathematically". – fana May 18 '23 at 06:54
  • e.g. When you use Euler Angle to represent pose(rotation), you are the only one who knows about "how to use the set of angle values? (correct multiplying order of 3 matrices)". – fana May 18 '23 at 07:02

0 Answers0