aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
blob: dacd44f5147004a95b17b9763854315fc4f96f63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
2019/04/01: release libxcam version 1.2.2
 * DNN inference framwork enabling.
   - enable pedestrian and vehicle detection based on OpenVino

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