ellipse-to-3d-circle

Reconstructs 3D circle geometry from 2D ellipse projections using camera intrinsics and prior constraints.

6|1|Updated May 11, 2026
One-click install
npx skills add https://github.com/yakeworld/Synthos --skill ellipse-to-3d-circle-yakeworld
Or copy as Structured Prompt for Agentā–¼
Please help me install this Agent Skill.
Skill: ellipse-to-3d-circle
Source: https://github.com/yakeworld/Synthos/tree/main/skills/private/ellipse-to-3d-circle
Command: npx skills add https://github.com/yakeworld/Synthos --skill ellipse-to-3d-circle-yakeworld

SYSTEM DOCUMENTATION & REQUIREMENTS

šŸ’” This Skill requires numpy, and includes scripts (resource) components.

What problem does it solve? Recovering the 3D position, orientation, and radius of a circle from its 2D elliptical projection is a classic computer vision problem with inherent ambiguities. This Skill solves it for eye-tracking scenarios, converting pupil or iris ellipses into 3D corneal surface normals and gaze geometry while explicitly handling depth and azimuth ambiguities. ## Core Features & Use Cases - Ellipse-to-3D Inversion: Computes tilt angle via arccos(b/a), resolves azimuth from the ellipse major-axis direction, and builds a right-handed orthonormal basis for the 3D circle plane. - Ambiguity Handling: Detects and labels depth ambiguity, azimuth degeneracy when the circle faces the camera directly, and resolves depth using eyeball sphere priors, stereo views, or depth sensors. - Validated CLI Tool: Ships a runnable Python script with input validation (b/a in (0,1]), unit conversion from pixels to millimeters, and golden test cases for regression checking. - Use Case: In an eye-tracking pipeline, feed a detected pupil ellipse (center, axes, rotation) plus camera intrinsics and a known iris radius to obtain the 3D normal vector of the corneal plane for gaze estimation. ## Quick Start Run the ellipse_to_3d_circle.py script with your ellipse parameters, camera focal length, and known circle radius to get the 3D circle center, normal vector, tilt angle, and confidence flags.

Frequently Asked Questions about ellipse-to-3d-circle

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a 2D ellipse back to a 3D circle in computer vision?ā–¼

Compute the tilt angle as arccos(b/a) from the ellipse axes, derive the azimuth from the major-axis direction using phi = theta ± pi/2, then build the normal vector in spherical coordinates. Depth requires an additional constraint such as a sphere prior or second camera view.

How to estimate gaze direction from a pupil ellipse in eye tracking?ā–¼

Fit an ellipse to the pupil, then invert it to a 3D circle whose normal gives the corneal plane orientation. With the anatomical constraint that the eyeball radius is twice the iris radius, a single frame yields the normal and multiple frames yield the eyeball center.

Why is the 3D circle depth ambiguous from a single ellipse?ā–¼

A single ellipse constrains the normal direction but not the circle center depth along the ray, since any depth produces a similar projection. Resolve it with an eyeball sphere model, a stereo second view, a depth sensor, or temporal smoothness assumptions.

What happens when the ellipse is actually a circle facing the camera?ā–¼

When a equals b the projection degenerates to a circle with zero tilt, so the azimuth angle cannot be determined from that single frame. The skill flags this as azimuth ambiguity and requires texture features on the circle or a second viewpoint.

Can I use the major axis length as the true circle radius?ā–¼

Only under orthographic projection with known geometry. Under perspective projection the major axis differs from the true radius, so you must use the full camera projection model K[R|t] with known depth instead of assuming a equals R.