2018/12/19: release libxcam version 1.2.1 * Vulkan surround-view stitching enabling.    - enable features of multi-band blender and geometry remap.    - enable Vulkan image stitching. (feature-match may support later) * Surrond-view texture rendering. - enable 3D surround view scene rendering and manipulation. * require OpenSceneGraph minimal version 3.3.2 2018/10/16: release libxcam version 1.2.0 * GLES compute framework enabling. - enable GL image processing framework. - enable features of multi-band blender, geometry remap and data-copy. * GLES surround-view stitching enabling. - GLES stitching enabled (feature-match may support later). - performance optimized on compute shaders. * Vulkan compute framework enabling. - enabled Vulkan image processing under xcam framework. - vk-copy-handler as sample code. * suggest OpenCV version [3.0.0 - 3.4.3] * support CPU stitching based on dual-const and dual-curve scaling factors. * support OpenCL stitching based on auto-scale in vertical 2D-direction. * change test-soft-image to test-surround-view 2018/03/01: release libxcam version 1.1.0 * CPU stitching enabled for automotive surround view in Linux/Android. - enable CPU multi-thread image processing framework. - enable multi-band blender, geometry remap, data-copy, OpenCV feature match. - enable 3D-bowl model stitching. - support generic Android platform. - CPU version of surround view stitching upstream to Android Open Source Project. * surround-view OpenCL stitching feature enabled and quality improvement. - add dewarp process based on bowl view model in geometry map. - support multiple (4) cameras stitching. - add new selection method based on clustering in feature match to improve quality of stitching. - auto scale in x direction is done and y direction is WIP. - quality tune on different datasets, both indoor and outdoor. * support standard OpenCL 2.0+ driver (VPG OCL driver) - support standard OpenCL buffer. - remove libdrm dependency. - drm preview removed from test-device-manager, test-pipe-manager and usb camera. * enable deblurring feature based on OpenCV. (GSoC program) - based on deconvolution algorithm filters - support noise estimation - support edgetaper * sourround view solution will be integrated into Android EVS (exterior view system) WIP * add sample recipe for yocto build (libxcam/doc/yocto). 2017/07/10: release libxcam version 1.0.0 * 360 video stitching performance and quality improvement. - enable geometry map to improve performance. - quality tuned on different resolutions (1080P and 4K). - support CPU and OpenCL path in feature match. - enable lens shading correction based on fisheye image. * gyroscope-based video stabilization enabling. - enable gyroscope 3-DoF (orientation) assist video stabilization. - orientation (gyro) data should be measured by quaternion as the pose of target frame reference to base frame * CL framework refine. - enable CL argument template instead of member variables in kernel. - CL kernel support async mode. - image handler take over input/output buffer management from image kernel. * prepare libxcam debian package and fix most warnings. 2017/04/01: release libxcam version 0.9.0 * 360 video stitching improvement. - remove sharp boundary in sphere mode by local/global area resize. - tune algorithm parameters to preserve blinking. - integrate 360 stitching pipeline into libxcam module. - gst-xcam-filter supports 360 stitching case. * export C APIs for each OpenCL feature. - support stich/3d-nr/wavelet-nr/defog features by xcam handle. - be designed for FFmpeg xcam video filter usage. 2016/12/30: release libxcam version 0.8.0 * Digital Video Stabilization (DVS) - enable DVS smart analysis plugin. - algorithms used in DVS (feature detect, optical flow, motion model estimation) are based on OpenCV. - implement image warp perspective algorithm in CL kernel. * Image stitching to create panorama photography - implement fisheye calculation which map location to equirectangular. - enable feature detection and match based on OpenCV optical flow algorithm. - enable seam mask to improve the quality of blender. * gstreamer plugin xcamfilter can co-work with xcamsrc 2016/09/30: release libxcam version 0.7.0 * 3D-NR quality and performance improvement. - use image exposure parameters to adjust global denoise strength. - calculate image local variation to adjust local denoise strength. - optimize OCL kernel by shared local memory and sub-group to improve performance. * defog/dehaze quality improvement based on DCP(dark channel prior). - enable dark channel prior to improve hazy image quality. - fix image corruption in recover step. - add lateral-range filter to smooth dark channel and remove halo effect. * enable multi-band blender for image stitching. - based on gaussian and laplacian pyramid and blend images in each band, then reconstruct stitching image from pyramid level. - blender can smooth seams and prevent ghosting. * enable geometry correction. - map 2D image from src to dst image based on coordinate table which is center aligned. - prevent sawtooth edge by OCL sampler. * gst-xcamfilter feature supports. - xcamfilter can co-work with different camera source. 2016/07/29: release libxcam version 0.6.1 * enable 3D noise reduction, performance stay tuned. - suppress image noise in both temporal and spatial domain. - the algorithm applies denoise filter based on pixel-block differences in neighbor blocks and previous frames. - the processed image is much more clean and preserves motion objects edge in low-light conditions. * support gst xcamfilter plugin which is independent from camera source. - xcamfilter plugin can work with gstreamer source plugins, e.g. videotestsrc/filesrc/v4l2src. - xcamfilter features support defog/wireframe/waveletNR/3d-denoise. - sink pad supports format NV12, src pad supports DMA buffer-sharing for performace if links to HW plugin(encoder). - wireframe/scaler/waveletNR moved to post image processor which can co-work with isp processor(as pre-image processor) 2016/06/30: release libxcam version 0.6.0 * enable block-split version of histogram based WDR tone-mapping algorithm. - divide image into several blocks and apply bidirectional log based function on luminance to improve the contrast inside each block. - apply weight function based on distance between target pixel and center pixel of each neighbor block to smooth and eliminate block boundaries. - apply weight function based on pixel intensity deviation between neighbor blocks keep differentiation and weaken boundaries. - image quality is improved and more details in both over-exposured and under-exposured area can be shown clearly on screen. * Bayesian wavelet shrinkage for adaptive noise filtering. - enable adaptive noise filtering based on Bayesian shrinkage estimation - estimate the image’s background noise level by analyzing. wavelet coefficient. - optimize the threshold T which minimizes the Bayesian risk, i.e, the expected value of the mean square error. * Haar wavelet tuning improvement. - fine tuning the threshold statistic data for ultra-low light condition. to prevent edge from over smoothing. * face detection supports. - enable face detection framework and support FD plugins. - enable wire-frame to track faces. * fog removal improvement based on Retinex algorithm. - support multi-scale algorithm to reduce halo effects. - tune parameters to keep brightness and clear edge. - improve saturation based on chroma enhancement. * image processing service framework. - add pipe-manager to support smart-analysis and post image processor. - separate major code into different modules, e.g. xcore/isp/ocl/3a. - support NV12 stream as fake input instead of camera sensor. 2016/03/28: release libxcam version 0.5.0 * enable new WDR tone mapping based on histogram adjustment. - apply bidirectional log based function on luminance to improve image contrast. - transmit wide dynamic range image data to 8-bit color data by novel histogram adjustment algorithm. - details in both over-exposured and under-exposured area clearly show up on screen. * enable wavelet-based algorithm for noise reduction. - decompose image into multiple-scales by wavelet transform with low pass and high pass filters. - perform soft threshold on smaller coefficients(high-pass) to reduce noise. - threshold should be suitably decided by tuned parameters. - reconstruct image from scaled low-pass and high-pass images. - enable Haar-wavelet and Hat-wavelet NR filters. * enable fog removal feature based on retinex algorithm. - base on retinex single-scale algorithm. - scale down image for gaussian blur to improve performance. - scale up blured image and amplify log differences with original image. * improve sharpness in normal light with extreme profile. * support cl post processing with isp mode. * support swap-buffer on nv12 format if only single plane need to process. 2015/12/30: release libxcam version 0.4.0 * improve performance on OCL pipeline. - design new formats and pipeline to save memory IO. - improve bayer noise reduction with bilateral filter. - support edge enhancement into bayer pipe. - make gpu/cpu working together for 3a-statistics calculation. - move tonemapping kernel from RBG to bayer format. * improve WDR-tonemapping algorithm for quality. - utilize an new adaptive local tone mapping algorithm. - provide the mapping between 16-bit wide dynamic range images to 8-bit images to have “nice looking”. - preserve more information on luminance values of the scene especially for high contrast images. * tonemapping parameters calculated to increase the contrast between high light and low light. - tone mapping regularization parameters are calculated according to the distribution of brightness histogram. - the local adaptive parameter are calculated by weighting the neighbor pixels with a Gaussian blur filter. * add bayer raw video input to simulate camera sensor. 2015/10/19: release libxcam version 0.3.0 * improved OCL pipeline on basic and advanced/extreme pipeline - add new bayer noise-reduction into demosaic - merged yuv-tnr into yuv-pipe kernel - merged TNR-yuv and TNR-rgb together * support WDR(wide dynamic range) feature * add 3a analysis tuner framework for more features tunning, e.g TNR * add hybrid 3a analysis framework - support partial customized 3a algorith, e.g AWB/AE * add smart analysis framework - generate small scaled picture - support customized to analyze small picture and feedback results - support loading user-defined method on smart analysis 2015/07/31: release libxcam version 0.2.1 * improved OCL pipeline on basic 3a image processing - merged bayer kernels with blc, wb, gamma, demosaic and 3a stats. - merged yuv kernerls with rgb2yuv color conversion and macc. - support async framework as option on cl features - support OCL buffer allocation which can choose tiling mode. * support different AIQ versions. * fix capture of dead-loop and sensor format setting. 2015/07/02: release libxcam version 0.2.0 * add gstreamer plugin 'xcamsrc' for Linux media framework support * support loading user-defined 3a algorithm lib dynamically * support more manual 3a features on ISP, e.g multiple-ae-window, ae/awb speed... * add OpenCL pipeline for 3a image processing - bayer format features, black level correction, defect pixel correction, whitebalance, 3a statistics calculation, demosaic, gamma correction, HDR(high dynamic range) - RGBA format features, bilateral NR(noise reduction), simple NR, temporal NR, macc, color correction - YUV format features, temporal NR, edge enhancement, color conversion - support any user-defined 3a algorithms(e.g AIQ) * rich test cases, e.g. test-device-manager, test-cl-image 2015/01/15: Initial xcam version 0.1