VIC·TORIPROJECTS
← Geometry & Pattern Algorithms
GEOMETRIC VISION / HISTORICAL IMPLEMENTATION

AXES / Perspective Geometry

Recovering geometrically consistent perspective rectangles from a set of image lines.

AXES tests whether groups of observed lines can represent the projection of a rectangle, and estimates the associated vanishing points and horizon geometry. Its purpose is geometric inference, not object classification by appearance.

SOURCE / axes.py v0.4EXPLICIT PROJECTIVE GEOMETRYCONTROLLED DEMONSTRATION
City street with explanatory vanishing point, horizontal receding edges, verticals and horizon lines
Illustrative overlay of projective geometry. This is an explanatory image, not a screenshot of AXES detection output.

Problem and representation

A rectangular surface generally appears as an irregular quadrilateral under perspective projection. The useful evidence is not a visually rectangular silhouette, but the relationships between two families of parallel edges and their vanishing points.

Input

A set of candidate lines represented by distance and orientation, an image center, a vertical field-of-view parameter, and selection tolerances.

Output

Geometrically admissible quadruples of lines, candidate vanishing points, the horizon position and orientation, and a ranked set of hypotheses.

V1V2Horizon candidate Four-line quadrilateral candidate
Concept diagram: two candidate vanishing points, a horizon, and four observed lines.

How the method works

1. Choose four lines

The candidate generator examines combinations of four distinct lines. Two pairs are interpreted as images of two directions parallel within a hypothesized rectangular plane.

2. Recover vanishing geometry

The two line-pair intersections give vanishing points. Their connecting line is the candidate horizon. Intersections of the four boundaries define the prospective projected quadrilateral.

3. Reject impossible configurations

The geometry is checked against horizon position, ray ordering and an approximate right-angle constraint in the assumed camera model.

4. Rank plausible candidates

Surviving rectangles are sorted using an explicit heuristic rather than a trained classifier. The script also provides a controlled synthetic demonstration with unrelated distractor lines.

Scope and evidence

The archived implementation includes axes.py and supporting projective-geometry utilities. The demonstration uses constructed rectangles and added random lines. Full evaluation on arbitrary natural imagery is not documented.

Boundary: the recovered horizon and geometric configuration do not establish absolute world position or a complete six-degree-of-freedom camera pose. A dense pool of candidate lines also makes exhaustive four-line combinations computationally expensive.