pupil-labs / hmd-eyes

Building blocks for eye tracking in AR and VR.
GNU Lesser General Public License v3.0
153 stars 64 forks source link

Multiple ellipse data for one frame in pupil.pldata #109

Closed ruw001 closed 2 years ago

ruw001 commented 2 years ago

I looked into pupil.pldata recorded by Pupil Capture. I found that for each frame, there are two ellipse data produced with different methods (2d c++ and pye3d 0.1.1 real-time) but with exactly same confidence. Which one should I use then? And when I use pupil listener to get pupil data in real time, which ellipse data do I receive? Thanks!

papr commented 2 years ago

Hi,

The 2d pupil detector runs once per frame and generates an ellipse for each one of them (2d c++ ellipse). These ellipses are combined to a time series which is used to fit the 3d model. Once the model is fit, the ellipses are unprojected and adjusted onto the model and then back projected. This results in a new pye3d 2d ellipse.

The 2d c++ ellipse can be noisy due to errors in the ellipse fitting. The pye3d ellipse can be inaccurate if the 3d model is not fit well.

The pupil listener subscribes to pupil., receiving both, 2d c++ and pye3d pupil data. This is where the ellipse is parsed, for both data types.