Skip to content
Zong Wei edited this page Sep 8, 2021 · 61 revisions

Introduction

libXCam is a project for extended camera features and focus on image/video quality improvement. There are lots of features supported in image reprocessing and smart analysis. This library makes GPU/CPU/ISP working together to improve image quality. OpenCL is used to improve performance in different platforms.

libXCam code is accepted by Google and merged into AOSP (Android Open Source Project). Android EVS (Exterior View System) automotive features of surround view integration with libXCam stitching is WIP.

Features:

  • Image processing features.

    • Advanced features.
      • 360-degree video stitching.
        • support ultra-high resolution (8K) video stitching.
        • support 2/3/4 fish-eye cameras (FoV >180 degree) video stitching.
        • stitching image adopts equirectangular projection (ERP).
        • algorithms are optimized by AVX512 instruction, GLES and Vulkan.
        • stitching quality tuning supports OpenCV fisheye camera calibration parameters.
      • Automotive surround view (360-degree) stitching (OpenCL/CPU/GLES/Vulkan).
        • support bowl view mode 3D-stitching by 4 intput videos.
        • enable geometry remap for WFoV camera calibration(intrinsic and extrinsic data).
        • enable 3D surround view scene rendering and manipulation (CPU/GLES/Vulkan).
        • quality and performance improved (OpenCL/CPU/GLES).
        • CPU version upstreamed into AOSP for automotive surround view.
      • Digital video stabilization.
        • OpenCV feature-match homograph based video stabilization.
        • gyroscope 3-DoF (orientation) based video stabilization.
      • Multi-band Blender (OpenCL/CPU/GLES/Vulkan).
      • Noise reduction (OpenCL).
        • adaptive NR based on wavelet with Bayersian shrinkage.
        • 3D-NR with inter-block and intra-block reference.
      • Wide dynamic range (WDR) (OpenCL).
        • histogram adjustment local tone-mapping.
        • gaussian-based tone-mapping (obsolete).
      • Fog removal (OpenCL).
        • dark channel prior based defog.
        • retinex based. (obsolete)
    • Basic features (OpenCL, AtomISP).
      • Gamma correction, MACC, color space, demosaicing, simple bilateral noise reduction, edge enhancement and temporal noise reduction.
    • 3A features.
      • Auto whitebalance, auto exposure, auto focus, black level correction, color correction, 3a-statistics calculation.
  • Support DMA buffer-sharing from capture, image processing to HW encoder.

  • Support 3rd party 3A lib which can be loaded dynamically. (hybrid 3a plugin)

  • Support smart analysis framework.

  • Enable gstreamer plugin.

    • xcamsrc; capture from usb/isp camera, process 3a/basic/advanced features.
    • xcamfilter; improve image quality by advanced features and smart analysis.
  • Enable ffmpeg-xcam modules and webRTC VR stitching (WIP)

LibXCam Stitch Processing Flow

  • 3 cameras input stitching 3 cameras input stitching dataflow

  • 2 cameras input stitching 2 cameras input stitching dataflow

GSoC (Google Summer of Code) sponsored students work

Mailing List

Report Bugs

Framework Overview

xcam framework

LibXCam OCL Image Processing Pipeline

xcam ocl pipeline

LibXCam IPU/GPU Dataflow Diagram

xcam dataflow