You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
7.6 KiB
183 lines
7.6 KiB
/*
|
|
* Copyright (c) 2020 Rockchip Corporation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
#ifndef __RKGENMESHVERSION_H__
|
|
/*!
|
|
* ==================== GENMESH VERSION HISTORY ====================
|
|
*
|
|
* v1.0.0
|
|
* - date: from 2020-09-11 to 2020-09-14
|
|
* - FEC & LDCH: Keep the max FOV in the horizontal(X direction)
|
|
* - FEC: 1) Add "correctX" and "correctY" flag:
|
|
a) correctX = 1, correctY = 1: correct both directions
|
|
b) correctX = 1, correctY = 0: correct x direction
|
|
c) correctX = 0, correctY = 1: correct y direction
|
|
d) correctX = 0, correctY = 0: no correct
|
|
2) Add "saveMesh4bin" flag: whether to save 4 mesh bins(meshxi,meshxf,meshyi,meshyf) or not
|
|
a) saveMesh4bin = 1: save
|
|
b) saveMesh4bin = 0: not save
|
|
3) Add "mesh4binPath" : set the path for saving 4 mesh bins, for example, mesh4binPath = "../data_out/"
|
|
when 4 mesh bins saved, the prefix file names of each group of bins are
|
|
a) level255_both_correct_: correct both directions
|
|
b) level255_x_correct_: correct x direction
|
|
c) level255_y_correct_: correct y direction
|
|
d) level255_no_correct_: no correct
|
|
* - LDCH: 1) Add judgment: calculate the max correction capability("maxLevel") of LDCH, and divide it into 255 levels.
|
|
so the value of level can still vary from 0 to 255 when the function is called.
|
|
2) Add "saveMeshX" flag: whether to save mesh bin or not
|
|
a) saveMeshX = 1: save
|
|
b) saveMeshX = 0: not save
|
|
3) Add "meshPath" : set the path for saving mesh bin, for example, meshPath = "../data_out/"
|
|
|
|
* v1.0.1
|
|
* - date: 2020-09-15
|
|
* - LDCH: optimize the "calcLdchMaxLevel" function to reduce the cost time,
|
|
and it takes about 160ms in PC
|
|
|
|
* v1.0.2
|
|
* - date: 2020-09-16
|
|
* - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time,
|
|
and it takes about 50ms in PC
|
|
|
|
* v1.0.3
|
|
* - date: 2020-09-17
|
|
* - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time,
|
|
and it takes about 8ms in PC
|
|
|
|
* v2.0.0
|
|
* - date: 2020-09-17
|
|
* - FEC&LDCH: change to use rho-cotTheta(or rho-tanTheta) in polynomial fitting,
|
|
and it saves some time in function "genFECMeshNLevel" and "genLDCMeshNLevel" for each level
|
|
* - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time,
|
|
and it only takes 4ms in PC
|
|
|
|
* v2.0.1
|
|
* - date: 2020-09-18
|
|
* - FEC&LDCH: due to a bug in polynomial fitting, last version will returns error when the I/O resolutions are different,
|
|
it has been solved in this version
|
|
- FEC: the fixed-point number is changed from 7 to 8
|
|
|
|
* v2.0.2
|
|
* - date: 2020-09-23
|
|
* - FEC&LDCH: adjust some code to facilitate branch prediction logic and reduce unnecessary memory references to improve efficiency
|
|
|
|
* v2.0.3
|
|
* - date: 2020-10-10
|
|
* - FEC&LDCH: fix some small bugs
|
|
|
|
* v2.0.4
|
|
* - date: 2020-10-15
|
|
* - FEC: change mesh border from (srcW-3, srcH-3) to (srcW-1, srcH-1)
|
|
|
|
* v2.0.5
|
|
* - date: 2020-10-28
|
|
* - FEC: consider the case when the width and height of the output image are different from the input,
|
|
the naming rules of mesh table are specified as(using "meshxi, level=0, input=3840x2160, output=1920x1080, both x and y direction are corrected" as an example):
|
|
level000_1920x1080from3840x2160_both_correct_meshxi.bin
|
|
|
|
* v3.0.0
|
|
* - date: 2020-11-10
|
|
* - FEC: add an option: saveMaxFovX--flag of retaining maximum FOV in X direction(horizontal direction)
|
|
so there are 6 options when combined with correctX and correctY flags:
|
|
correctX correctY saveMaxFovX
|
|
1 0 (0 or 1)
|
|
0 1 (0 or 1)
|
|
1 1 (0 or 1)
|
|
* - LDCH: add an option: saveMaxFovX
|
|
users can choose whether to retain the max FOV in X direction or not.
|
|
when saveMaxFovX=1, users choose to save max FOV in X direction and tolerate slight compression distortion in middle part.
|
|
|
|
* v3.0.1
|
|
* - date: 2020-11-12
|
|
* - FEC & LDCH: add a Macro definition "INV_POLY_COEFF_NUM" to define the coefficients' number of polynomial fitting
|
|
* - FEC: the code was test in the case when the horizontal FOV is close to 180 degrees and the result is OK.
|
|
|
|
* v3.0.2
|
|
* - date: 2020-11-27
|
|
* - FEC: add an option: isFecOld--flag for different versions of FEC hardware
|
|
isFecOld = 1: for old FEC
|
|
isFecOld = 0: for new FEC
|
|
|
|
* v3.0.3
|
|
* - date: 2020-12-22
|
|
* - LDCH: add an option: isLdchOld--flag for different versions of LDCH hardware
|
|
isLdchOld = 1: for old LDCH
|
|
isLdchOld = 0: for new LDCH
|
|
|
|
* v4.0.0
|
|
* - date: 2021-01-19
|
|
* - genScaleMeshNLevel:
|
|
add a new function interface: LDCH mesh(for x direction) + FEC mesh(for y direction)
|
|
1) CameraCoeff of original resolution, e.g. 3840*2160 --> LDCH mesh --> LDCH
|
|
2) CameraCoeff of original resolution, e.g. 3840*2160 --> 1920*1080 FEC mesh + 1920*1080 image data --> FEC
|
|
|
|
* v4.0.1
|
|
* - date: 2021-01-21
|
|
* - genCropScaleMeshNLevel:
|
|
add a new function interface: LDCH mesh(for x direction) + FEC mesh(for y direction)
|
|
1) CameraCoeff of original resolution, e.g. 3840*2160 --> LDCH mesh --> LDCH
|
|
2) CameraCoeff of original resolution, e.g. 3840*2160 --> crop at any position(pW,pH) to get any size, e.g. 1600*900 --> scale to 1920*1080 FEC mesh + 1920*1080 image data --> FEC
|
|
|
|
* v4.0.2
|
|
* - date: 2021-06-23
|
|
* - LDCH: add genLdchMeshFixedZeroCorrect function
|
|
|
|
* v4.0.3
|
|
* - date: 2021-06-28
|
|
* - LDCH: modify the last row of zero correct mesh for LDCH bug.
|
|
|
|
* v4.0.4
|
|
* - date: 2021-07-05
|
|
* - LDCH: modify the middle row of mesh(minus 6 pixels) when saveMaxFovX == 1 for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).
|
|
valid flag: need to set isLdchOld = 1.
|
|
|
|
* v4.0.5
|
|
* - date: 2021-08-12
|
|
* - LDCH: last version didnot completely solve this bug: the middle row of mesh(minus 6 pixels) when saveMaxFovX == 1 for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).
|
|
valid flag: need to set isLdchOld = 1.
|
|
|
|
* v4.0.6
|
|
* - date: 2021-08-14
|
|
* - LDCH: consider these case:
|
|
1.rhoMaxW < rohMaxH for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).
|
|
2.identity mesh between penultimate and last rows may cause old LDCH bug when interpolation.
|
|
valid flag: need to set isLdchOld = 1.
|
|
|
|
* v5.0.0
|
|
* - date: 2021-09-23
|
|
* - FEC: add function cropFecMesh:
|
|
the mesh wiil be cropped according to the ROI parameters of the output image.
|
|
|
|
* v5.0.1
|
|
* - date: 2021-10-09
|
|
* - FEC: add function genFecMeshInit8kTo4k: generate FEC mesh for 8k image ---> 2 images of 4k.
|
|
* - LDCH: add function genLdchMeshInit8kTo4k: generate LDCH mesh for 8k image ---> 2 images of 4k.
|
|
- FEC & LDCH: some other changes.
|
|
*/
|
|
|
|
#define RK_GENMESH_VERSION_REAL_V "v5.0.1"
|
|
#define RK_GENMESH_RELEASE_DATE "2021-10-09"
|
|
|
|
/******* DO NOT EDIT THE FOLLOWINGS *******/
|
|
|
|
#define RK_GENMESH_VERSION_HEAD "GENMESH "
|
|
#define RK_GENMESH_VERSION \
|
|
RK_GENMESH_VERSION_HEAD\
|
|
RK_GENMESH_VERSION_REAL_V
|
|
|
|
#endif // !__RKGENMESHVERSION_H__
|