Virtual Showroom Car Backgrounding

Composite dealership and inventory photos onto a pre-rendered turntable. The car layers API returns a cutout, a separate shadow mask, and pose sidecars (azimuth, elevation, touch points) so you can match a showroom plate. Start from a car cutout when you only need background removal. Live demo below. Endpoint: /v1.0/car-layers-base64.

How it works#

  1. Upload a vehicle photo. The pipeline segments the car and returns an RGBA cutout plus a grayscale shadow mask.
  2. Read view.azimuth_deg and view.elevation_deg to select a matching showroom background angle.
  3. Optionally align the vehicle using scored ground-contact touch points from touch.
  4. Composite cutout and shadow client-side, or in your catalog pipeline, onto the virtual showroom plate.

Car orientation#

The layers response includes a view object with azimuth_deg and elevation_deg. The car stays fixed in world space. The camera orbits. This is not a full camera extrinsic or focal length, just the orbit needed to pick a matching background plate.

Azimuth detection#

Azimuth is the camera heading around the car, in degrees, range [0, 360). Counterclockwise is positive when viewed from above. 0 looks at the front of the car.

Example: a 270° view means the front of the car is heading to the right of the frame. 90° is the opposite side view. 180° looks at the rear.

Car fixed, camera orbits. Click a heading or use the azimuth slider. Current: azimuth 0°.

Elevation detection#

Elevation is the look angle above the horizon. is a level camera at look-at height, not at ground level. Positive values put the camera above the car.

The coordinate system assumes a car that is 1.5 m tall. The body center, the look-at point, sits 0.75 m above the ground. Because that center is above the ground plane, a shallow negative elevation is valid: the camera can sit slightly below mid-body and still look at the car.

Reported elevation is in the closed range -5° to 90°.

Same 3/4 azimuth, different camera height. -5° is just below a level mid-body look. Current: azimuth 45°, elevation 25°.

Touch points#

When include_touch_points is true (the default), the response includes touch: up to 4 ground-contact keypoints in processed-image pixels, the same space as the returned PNG. Points are unordered. They have no wheel or corner identity.

Use them when the destination background has an annotated ground plane, or when you want to aim and scale a shadow. Each point is x, y, and score. Occluded contacts usually come back with a low score. Filter on score before you trust a point; the value is a heatmap peak, not a calibrated probability.

Set include_touch_points=false to skip detection and omit touch. Full field list: Car layers (Base64).

FAQ#

What is virtual showroom car backgrounding?#

Car backgrounding composites a vehicle cutout onto a pre-rendered showroom or turntable plate. The car layers API returns camera pose (azimuth and elevation) so you can pick a matching background angle, plus a separate shadow mask and optional ground-contact touch points for alignment.

What does the car layers API return?#

A typical response includes the RGBA cutout, a grayscale shadow mask (`shadow_base64`), a `view` object with `azimuth_deg` and `elevation_deg`, and up to four scored touch points in processed-image pixels when `include_touch_points` is true (the default).

How does azimuth detection work for vehicles?#

Azimuth is the camera heading around the car in degrees, range [0, 360). Counterclockwise is positive when viewed from above. 0° looks at the front of the car, 90° at the driver side, 180° at the rear, and 270° at the passenger side.

What are ground-contact touch points?#

Touch points are up to four keypoints where the vehicle meets the ground plane, returned as x, y, and score in the same pixel space as the cutout PNG. Use them to align the car on an annotated showroom floor or to aim and scale a cast shadow. Filter on score before trusting a point.

Do I need a car cutout before backgrounding?#

The car layers endpoint returns the cutout as part of the same call, so you do not need a separate cutout request first. If you only need background removal without pose or shadow layers, use the car cutout endpoints instead.

Car layers (Base64)/docs/pro-model/car-layers-base64
Car cutout demo/car/cutout
Car background removal (Base64)/docs/pro-model/car-background-removal-base64
Pro Model car results/pro-model/results/car