sensics / OSVR-RenderManager

Apache License 2.0
64 stars 45 forks source link

osvr_display_config_built_in_osvr_hdk20_v1 distortion mesh doesn't work well enough #181

Open lonetech opened 8 years ago

lonetech commented 8 years ago

While it corrects some gross geometric distortions toward the corners, it produces a drastic shift in angles with a circular shape, and some minor CA also. The circular distortion change has been described as a bubble or fisheye effect. I tried simply disabling the mesh because I wasn't sure it even worked!

Looking at a static image it's clear this smear is part of how the optics work; I see features that should be dots stretched out into curvy lines. In addition, it shifts with focus/eye relief adjustment, so a single static FoV+distortion map can't do a perfect job. Is this normal for the HDK2?

russell-taylor commented 8 years ago

Agreed. We've got two engineers working on that now, doing a camera-based calibration instead of a theoretical-parameters-based calibration.

lonetech commented 8 years ago

I was thinking about trying to map the distortion. I figured a per channel sequence of binary refinement combined with a synchronized high resolution camera, for instance a networked mobile phone, could be used to build a displacement map given a few minutes. The tricky portions might be placing it and doing reasonable averaging for a range of placements (I expect, for instance, I'd never get it head on, and I'd first calculate rectification of the camera using Hugin). But I guess you've already got a better start.

russell-taylor commented 8 years ago

Our current work is at https://github.com/sensics/Optical-measurements and it is based on work at https://github.com/OSVR/distortionizer/tree/master/angles_to_config whose operation is described at https://github.com/OSVR/distortionizer/blob/master/angles_to_config/doc/anglesToConfig.md with the theory described at a link pointed to by that last document. We're doing basically as you suggest, and are close to a solution. We're not using a mobile phone app; if you build one let us know because that could be really cool.