Transformation of pose prior to reality capture

I have been experimenting with reality capture for some SfM workflows and have thus far been quite happy with the performance of the system. However, one area where I have been unsuccessful so far is in adding in a prior about my camera systems pose. I am using a custom imaging system, such that pose is not added automatically to the EXIF of the images, so I am adding it after the fact.

I have established that I am able to pass pose information to Reality Capture (RC) using EXIF tags commonly associated with drones (Gimbal Pitch/Yaw/Roll), as that changes the pose prior which shows up in the RC view pane. I suspect that there is a transformation occurring when moving between my specified pose prior to RC’s orientation co-ordinate system, however thus far have been unable to pin down exactly what that is. This is important as it seems my pose prior isn’t being transformed properly in some fundamental ways (i.e. camera is pointing away from the ground plane when it should be facing towards it).

 

Any assistance in understanding how prior pose is being transformed (i.e. what if any assumptions are made, should I be using a different EXIF tag?) and any pre-processing I can do before feeding in my prior to make it play nice with RC would be greatly appreciated. 

Hi Colin, this could help you in this case: https://support.capturingreality.com/hc/en-us/articles/360020679799-How-to-work-with-RealityCapture-registration-export 

Thanks Ondrej! That document is definitely useful, however it still doesn’t answer directly the questions I have. Which to be specific are:

  1. What is the standardized way that RC wants pose priors to be given to the system, as in how should I format the EXIF data? 
  2. What is the transform that’s happening between the EXIF and what I see in RC?

To try to understand this better I looked at some sample drone data provided by RC, however it appears the pose isn’t processed correctly there either! The prior has a YPR of -132/0/0, but the registration is -90/-55.6/-90, fairly far off as I can tell.

For reference this is a key feature in us evaluating RC for an enterprise license, as without pose RC makes bad assumptions about our camera pose.

Hi Colin,

I did some tests about this topic and this is what I found. But first, I tested the same dataset and I didn’t have value 55.6 as pitch, but just 5.6. Is it possible, that this is typo?

The EXIF YPR are some rotations. Yaw is rotation around Z axis from the north axis (mostly it is X, in RC it is Y axis). So yaw is about camera orientation to the north. Pitch is rotation in mostly cases around Y axis and when this value is 0, camera is pointing down (to the nadir). Roll is on mostly cases 0 (if you are using gimbal).

After first alignment in RC, the alignment is placed into RC coordinate system, where Y axis is pointing to the north and X axis to the east. The alignment is placed close to the 0.0 coordinates and rotated ideally to the axis. Then you will get new Yaw value computed from this Y axis. If you Set ground plane according to you, the Yaw values will change and will be again computed from Y axis.

If your images have GPS information, you can set Yes in Use camera priors for georeferencing in Alignment settings and after alignment, YPR values will be very similar to the original one (for example I had image with EXIF YPR 133.3/0/0 and after alignment I got 138.2/1.3/-2.9).