Home / Products / Camera Modules / 360° Panoramic Stitching Camera

360° Panoramic
Stitching Camera

Dual-lens sync capture · Single stitched panorama

360° panoramic stitching camera: dual back-to-back 220° fisheye lenses cover 360° in a single unit. Raspberry Pi 5 + dual Sony IMX477 — no physical sync cable, all computation in GPU memory, 33 ms end-to-end latency, 28.05 FPS steady state.

CORE SPEC
Lens LayoutDual lenses back-to-back
SyncHardware-level sync, same frame
OutputStitched into a single panoramic frame
SoC PlatformRaspberry Pi 5
Use CasesImmersive monitoring / virtual tour / panoramic streaming
Resolution, lens and interfaces customizable — sample verified before mass production
PRODUCT HIGHLIGHTS

360° Panoramic Stitching Camera

220° fisheye · No physical sync cable · GPU-memory pipeline · 28.05 FPS · 33 ms latency
  • Compute platformRaspberry Pi 5 (Broadcom BCM2712, VideoCore VII GPU, 8 GB RAM)
  • Image sensorsDual Sony IMX477 HQ, CSI-2 wired to both CAM ports
  • OpticsDual M12 220° fisheye, 13 mm baseline back-to-back
  • Output resolution2048 × 1024 (standard 2:1 equirectangular), native mode up to 4096 × 2048
  • Frame rate28.05 FPS (rated 30 FPS); high-res native profile 18 ~ 20 FPS
  • End-to-end latency33 ms (GPU frame 27 ~ 29.5 ms)
  • Sync offset< 100 μs (measured min -2 μs), software PLL with no physical link
  • FOV & overlap220° ultra-wide, 40° spatial overlap
  • StreamingWeb HTTP MJPEG (port 8080), V4L2 virtual camera
  • Power / OSDC powered · Raspberry Pi OS Bookworm 64-bit (Linux 6.6+)
Request a quote with MOQ & tiers →
CORE SPEC · 核心参数
以实际配置为准 · 支持 ODM 定制
ARCHITECTURE

Imaging Chain: Dual Capture to Single Panorama

Two lenses capture in sync, are stitched on-device, then output as one standard video stream for recording and streaming

STEP 1

Dual-lens synchronized capture

Back-to-back lenses expose on the same frame moment, preventing misalignment and tearing — the basis for accurate stitching.

STEP 2

On-device stitching

Stitching and dewarp run on the device, merging both views into one continuous panoramic frame locally.

STEP 3

Single-stream output

The panorama is output as one standard video stream — record, stream, feed a platform or run analytics directly.

Key point: stitch quality depends on synchronization. If the two views differ in time, moving objects tear at the seam — no algorithm fully fixes this, which is why hardware-level sync is used.
SCENARIOS

Where It Fits

Anywhere you need one viewpoint to see everything is within its reach

Robot omnidirectional avoidance

28 FPS steady state and 33 ms latency feed the avoidance loop directly; the spherical view gives full spatial awareness

Unmanned vehicle / surround view

One device covers 360° with back-to-back lenses and no external trigger cable, tolerant of motion and vibration

VR headset immersion

Full 360° spherical view straight out, with Web streaming on port 8080 for browsers and headsets

Industrial vision & inspection

2:1 equirectangular images embed directly into web UIs and algorithm frames; the V4L2 node feeds OBS and line systems

Remote operation & video

33 ms end-to-end latency with synchronized viewing on any PC, mobile or VR browser on the LAN

High-quality mapping & offline recording

High-res native profile at 2028 × 1520 input, configurable to 4096 × 2048 output for static modelling and archiving

SPEC

Technical Specifications

Platform capabilities and customization range — exact model parameters confirmed by sampling

ItemSpecification
ItemSpecification
Compute platformRaspberry Pi 5 (Broadcom BCM2712, VideoCore VII GPU, 8 GB RAM)
Operating systemRaspberry Pi OS Bookworm 64-bit (Linux 6.6 kernel), pure headless DRM/GBM EGL rendering
Image sensorsDual Sony IMX477 HQ cameras, CSI-2 wired to both mainboard CAM ports
OpticsDual M12-mount 220° fisheye lenses, 13 mm baseline back-to-back
Lens distortion modelEquidistant fisheye (r = f·θ) + Kannala-Brandt 4th-order radial polynomial
FOV & overlap220° ultra-wide, 40° spatial overlap
Input resolution1536 × 1536 (fast profile) / 2028 × 1520 (native profile)
Panorama output2048 × 1024 (standard 2:1 equirectangular), native mode configurable to 4096 × 2048
Steady-state frame rate28.05 FPS (rated 30 FPS); high-res native profile 18 ~ 20 FPS
End-to-end latency33 ms (GPU single-frame render 27 ~ 29.5 ms)
Sync offset< 100 μs (measured min -2 μs) via libcamera software master-slave PLL
Sync methodNo physical sync cable and no external trigger chip; frame period trimmed dynamically
Seam handlingDistance-transform Gaussian feathering 55 px (fast) / 50 px (native), optimal midline auto-located
Spherical mesh180 × 360 lat-long slices, 65,341 vertices, 129,600 triangles
Capture formatNV12 (Y / UV dual plane), libcamera native DMABUF zero-copy mapping
Render output formatBGRA / BGR (channel order straight from the shader)
Streaming & accessWeb HTTP MJPEG (port 8080), V4L2 virtual camera node, direct frame tap for algorithms / recording
Form factorPrototype unit (final enclosure per project)
DETAIL

In Detail

How panoramic stitching works, why sync is the deciding factor, and where it fits

01

Why no physical sync cable

No sync cable and no external trigger chip between the two cameras — the master-slave pair dynamically trims the frame period through a libcamera software PLL so exposure centres coincide exactly, and dynamic scenes no longer tear at the seam. No cable means no loose connectors and no cable tug, which is what makes it usable on moving and vibrating platforms.

要点Sync offset converges to |Δt| < 100 μs, measured minimum -2 μs
02

Why everything stays in GPU memory

Raw NV12 frames bind directly to GPU texture units as Y / UV planes; colour conversion, Y flip and BGR channel ordering all happen in the shader, and frames never land in CPU memory for reprocessing. That frees the CPU from pixel shuttling entirely.

要点Saves cvtColor 9ms + memory upload 18ms + flip 13ms versus the original chain
03

What low latency buys you

The whole GPU pipeline runs 27~29.5 ms per frame, 33 ms end to end, 28.05 FPS steady state. That lets the panorama feed avoidance and recognition loops directly instead of being recorded and reviewed later.

要点From 3.7 FPS up to 28.05 FPS
04

Choosing between the two profiles

Fast real-time: 1536 × 1536 input, 1536-byte stride perfectly aligned, 28.05 FPS, 55 px feathering — for live streaming, low-latency video and robot avoidance. High-res native: 2028 × 1520 full frame, 18~20 FPS, configurable to 4096 × 2048 output — for high-resolution stills, offline recording and quality mapping.

要点Both share one stitching architecture, switched by a launch flag
05

How the seam is made invisible

A distance transform over the 40° overlap automatically locates the optimal stitching midline and feathers it; exposure and white-balance gain balancing removes brightness steps caused by lighting differences between the two lenses.

要点55 px feathering (fast) / 50 px (native)
06

How to consume the output

The Web MJPEG server on port 8080 opens in any modern PC, mobile or VR browser; the V4L2 virtual camera writes to /dev/videoX for OBS and live-streaming software; with no web client the 15~18ms per-frame JPEG compression sleeps and panorama frames feed algorithms or recording directly.

要点Web stream / V4L2 / direct frame tap
MODELS

Hardware & Configuration

Available as full device or module — final parameters confirmed by sampling

Model: All Models
ProductModelSpec & Buy
Dual-lens panoramic camera (device)Per projectDetailsInquiry
Dual-lens panoramic camera (module)Per projectDetailsInquiry
Raspberry Pi 5 dual-lens panoramic unitRaspberry Pi 5DetailsInquiry
HOW TO BUY

How to Buy

MOQFrom 1 unit
SamplingVerified before mass production
SoCRaspberry Pi 5
CustomizationLens / resolution / housing / interfaces
Lead TimeConfirmed after sampling
SCENARIOS

Typical Scenarios

Need a Plan and Quote?

Tell us the field of view, resolution and interface needs — you'll get a configuration and sampling plan within 1 business day

Request Quote

Inquiry

Fill in the form and we reply within 1 business day

Click “Generate Inquiry Email” to open your mail client with the content pre-filled; if no mail client is configured, click “Copy Content” and paste it into a webmail. Recipient: sunshiyang@xstrive.com.