ICP Docs
* add first info
* add main info
* minor fix
* defgroup fix
* move docs to rgbd.hpp
* try to fix
* add f
* fix with f
* minor fix
* final fix
* whitespace fix
* info fix
* uppercase letter
* create md docs
* try to do math in md
* first draft
* minor fix | add to the web docs
* minor fixes
* minor fixes
* add T
* minor fix of meaning
* Update kinfu_icp.markdown
* Update kinfu_icp.markdown
* More edits
* whitespace
* minor changes
Co-authored-by: Rostislav Vasilikhin <savuor@gmail.com>
Pose Graph rewritten without Ceres
* Works well on g2o dataset, cumulative:
1. Pose3d done w/o Eigen types;
2. PoseGraph nodes vector<Node> -> map<int, Node>
3. Eigen is not used in cost function or parametrization
4. Cost function debugged & fixed (original one was wrong), rewritten from Automatic to Analytic
* g2o dataset reading added to PoseGraph
* sparse solver fixes from DynaFu draft
* Eigen cost function and parametrization removed + g2o reading fixed
* refactored: pose error, pose graph edge, pose graph node
* sparse solve: templated
* MyOptimize(): 1st version
* several fixes and TODOs for future
* sparse block matrix: val functions, template type
* works at Ceres quality (cleanup needed)
* MyOptimize() is set to default optimizer
* Ceres thrown away, PoseGraph class and header/source code reorganized
* pose, node, edge -> nested for PoseGraph
* warnings fixed
* jacobiScaling disabled for better performance + minors
* trailing whitespace fixed
* more warnings fixed
* message added: Eigen is required for build + minors
* trying to fix warning
* try to fix "unreachable code" warning
* trying to fix unreachable code, pt.3
* trying to fix unreachable code, pt. 5
* trying to fix unreachable code, pt. the worst + minors
* try to fix unreachable code, pt. the ugliest
* trying to fix unreachable code, pt. the grumpiest
* cout -> CV_LOG_INFO
* quat matrix functions moved outside cv and kinfu namespaces
* unused function fix
* pose graph made public (but in detail namespace) + test for pose graph
* minor: prints
* Pose Graph interface settled
* Pose graph interface and its use updated
* cos -> std::cos
* cout -> CV_LOG_INFO
* pose graph interface updated: implementation
* Pose Graph Node and Edge: extra fields dropped
* more minor refactor-like fixes
* return and finish condition fixed
* more updates to test
* test disabled for Debug builds because 400 sec is too much
* whitespace
* Disable pose graph test if there's no Eigen
* more unused vars
* fixing unused function warning
* less includes
* "verbose" removed
* write obj to file only when debug level is raised
* License + include guard
* skip test using tags and SkipTestException
* suppress "unused function" warning
* minor
RGBD tests refactoring
* add GPU and CPU versions of tests
* reduce time for demo show
* add assert info and scene minor fix
* add display to perf_test
* replace extra code by function in perf_test
* add display func for tests
* add settings class for test
* remove extra code
* replace scene in perf test
* main dug fixed
* fix the same bug
* fix
* docs fix
* minor fix
* namespace fix
* tsdf cpu getnormal fix
* add folder ocl with simple tests
* build error fix
New HashTSDFVolumeGPU class
* create new class
* rewrite makeHashTSDFVolume
* it builds
* minor fi
* raycast - done
* all code builds
* Docs fix
* fetch_normals fix
* I want it to work
* minor fix
* valid points checking passed
* it works!
* minor fixes
* warning fix
* last replacements
* warning fix
* create hash_tsdf.cl
* add preCalculationPixNormGPU
* add integrateVolumeUnitGPU
* Docs fix
* create simple volume table
* add functionality to the table
* add new functions
* create new hash table implementation
* minor fix
* create new hash tsdf implementaton
* add expand feature
* minorfix
* error fix
* it builds
* new hash table work
* Docs fix
* warnings fix
* warning fix 1
* warning fix 2
* warning fix
* remove extra coments
* create new function integrateAllVolumeUnitsGPU
* add hash table function
* extend kernel signature
* minor fix
* extent Volume_NODE signature and add functionality
* kernel args fix
* smth
* minor fix
* kernal args fix
* try to fix reading bug
* hash table fix
* add totalVolUnits feature
* it builds
* minor fix
* integrate fix
* fix work with table
* minor table fi
* I am stumped
* try to fix
* add checking to find error
* add copyto
* vol2cam fix
* try to fix
* we are the champions
* remove some comments
* remove last comments
* docs fix
* warning fix
* warning fix 1
* warning fix 2
* create raycast kernel
* extend raycast gpu signature
* minor fix
* integrate all volUnits - done
* docs fix
* warning fix
* extend raycast signature
* raycast work
* bug fix
* calc point4 fix
* minor fix
* add _at function
* raycast done, but work incorrect
* fin dug
* bug fix
* getNorm works correctly
* minor fix
* raycast - done
* minor fixes
* docs fix
* warning fix
* minor fix
* minor fix
* warning fix
* warning fix 1
* win warning fix
* mac fix
* win debug fix
* mac cl warning fix
* allCam2vol fix
* rename num with bufferNum
* remove nums hardcode
* minor fix
* change logic of calculating hash
* replace float16 by vload16
* replace true with false in zFirstMemOrder
* poses fix
* add new tests
* debug print
* debug print 1
* replace [] with .s
* minor fix
* minor fix 1
* remove print
* hashtsdf work fix
* hashtable fix
* resrite hashtasble update
* test_tsdf fix
* override warning fix
* docs fix
* mutex fix
* setUseOptimizes replace false with true
* minor fix
* merge with master
* all minor fixes
* add CPU code for debug
* settings set
* move code from hpp to cpp
* minor opencl fix
* fid bug
* coment fix
* minor fix
* bug fix
* integrate fixed
* speed up
* remove extra code
* raycast fix, but still not work
* raycast fix
* HT refactoring: constants
* HT refactoring: calc_hash()
* HT refactoring: methods set shortened
* no typedef VolumeIndex
* fix a bug in CPU version
* VolumeIndex
* identation
* HashTSDF refactoring: a lot of things
* less TODOs
* lastVisibleIndex dropped from HT
* HT refactor: find -> findRow
* interpolate & getNormal small hash: no queried
* totalVolUnits, indexes -> volumeUnitIndices, better iteration
* raycast artifacts fixed
* interpolation in getNormal is on
* minors
* findRow() refactored
* volStrides, lastVolIndex, volDims, neighbourCoords
* normals, vectorization
* interpolation in getNormalVoxel()
* no 16*16*16, use volumeUnitResolution instead
* resolution, stride...
* raycast: cur idx, etc.
* CPU debugging code removed
* volUnitsData moved to OpenCL memory
* raycast: no copy
* allocate accelerated a bit
* hash_tsdf.cl: pointers fixed
* allVol2cam, poses moved to kernel; rowRange for volUnitsData init
* TSDF voxel: constructor; row range fixed
* rowRange
* pixNorms fix + minors
* depth is now UMat
* markActive is done on GPU, lastVisibleIndices and isActiveFlags moved to GPU
* CL: minor
* volumeUnitIndices -> GPU
* ToyHashMap instead of HT, volumeUnitIndices removed, lastVolIndex removed,
+ a lot of debugging code
* warning about local pix capacity
* CPU allocation: find in global HT first
* ToyHashMap: -> tsdf_functions.hpp
* debugging code + to be removed
* ptr -> at
* volumeUnitResolution is limited to a power of 2
* rename ToyHashMap to ToyHashSet, hashMap to hashTable
* minor
* getNormalVoxel .cl: no float conversions
* getNormalVoxel does not need voxelSizeInv anymore; orig and dir pre-scaled to get rid of extra multiplication
* minor fix
* linux critical bug fix
* docs fix
* mac warning fix
* remove extra test code
* linux warning fix
* remove comments
* capacity = 2048
* capacity = 1024
* hashtables fixes
* minor code removement
* change pixNorm calculation
* remove buff_lvl and neighboorCoords; rename degree
* move volStrides to HashTSDFVolume
* HashTSDFVolumeGPU constructor fix
* move preCalculatePixNormsGPU to tsdf_functions
* minor code removement
* replace copyto() with getUMat()
* remove debug code
* replace copyTo with getUmat again
* replace types in cl
* remove NAN_ELEMENT
* remove Volume_NODE struct and findRow()
* make hash_divisor constant
* uncomment camTrans
* rename data; remove extra val
* fix merge conflict
* create empty UMat
* cl fix
* build error fix
* clear HashTSDFVolumeGPU()
* use constuctor delegation at HashTSDFVolumeCPU
* remove cam2volTransGPU
* add minor fix
Co-authored-by: Saratovtsev <artem.saratovtsev@intel.com>
Co-authored-by: Rostislav Vasilikhin <rostislav.vasilikhin@intel.com>
Add depth_factor argument in rescaleDepth and typedef dynafu::Params for backwards compatibility
* Add depth factor argument (default = 1000.0) to rescaleDepth to
potentially support TUM type datasets
* typedef dynafu::Params as kinfu::Params for compatibility
Fixes the following compiler error:
rgbd/test/test_dynafu.cpp:44:17: error: 'Params' is not a member of 'cv::dynafu'
44 | Ptr<dynafu::Params> params;
| ^~~~~~
New HashTSDF implementation
* create new variables
* rewrite reset()
* first valid version of new HasHTSDF
* some warning fixes
* create lambda raycast
* reduce time raycast
* minor fix
* minor fix volDims
* changed _atVolumeUnit, reduce memory consumption
* delete older inmplemetation of atVolumeUnit
* changes _at
* AAA, I want to cry!
* it works!
* it works twice o_o
* minor fix
* new adding to volumes
* delete volDims at strust VolumeUnit
* new names of vars
* rename one var
* minor fix
* new resize volumes
* rename volUnitsMatrix
* minor fix in at function
* add tsdf_functions.hpp
* minor fix
* remove two args at _at function signature
* solved the link problem with tsdf_functions
* build fix
* build fix 1
* build fix 2
* build fix 3
* build fix 4
* replace integrateVolumeUnit to tsdf_functions and fix 2 warnings
* docs fix
* remove extra args at atVolumeUnit signature
* change frame params checking
* move volStrides to CPU class
* inline convertion functions in tsdf_functions
* minor fix
* add SIMD version of integrateVolumeUnit
* fix something :)
* docs fix
* warning fix
* add degub asserts
* replace vars initialization with reset()
* remove volDims var
* new resize buffer
* minor vars name fix
* docs fix
* warning fix
* minor fix
* minor fix 1
* remove dbg asserts
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
[GSoC] Add Submaps and PoseGraph optimization for Large Scale Depth Fusion
* - Add HashTSDF class
- Implement Integrate function (untested)
* Integration seems to be working, raycasting does not
* Update integration code
* Integration and Raycasting fixes, (both work now)
* - Format code
- Clean up comments and few fixes
* Add Kinect Fusion backup file
* - Add interpolation for vertices and normals (slow and unreliable!)
- Format code
- Delete kinfu_back.cpp
* Bug fix for integration and noisy odometry
* - Create volume abstract class
- Address Review comments
* - Add getPoints and getNormals function
- Fix formatting according to comments
- Move volume abstract class to include/opencv2/rgbd/
- Write factory method for creating TSDFVolumes
- Small bug fixes
- Minor fixes according to comments
* - Add tests for hashTSDF
- Fix raycasting bug causing to loop forever
- Suppress warnings by explicit conversion
- Disable hashTsdf test until we figure out memory leak
- style changes
- Add missing license in a few files, correct precomp.hpp usage
* - Use CRTP based static polymorphism to choose between CPU and GPU for
HashTSDF volume
* Create submap and submapMgr
Implement overlap_ratio check to create new submaps
* Early draft of posegraph and submaps (Doesn't even compile)
* Minor cleanup (no compilation)
* Track all submaps (no posegraph update yet)
* Return inliers from ICP for weighting the constraints
(Huber threshold based inliers pending)
* Add updating constraints between submaps and retain same current map
* Fix constraints creation between submaps and allow for switching between
submaps
* - Fix bug in allocate volumeUnits
- Simplify calculation of visibleBlocks
* Remove inlier calculation in fast_icp (not required)
* Modify readFile to allow reading other datasets easily
* - Implement posegraph update, Gauss newton is unstable
- Minor changes to Gauss newton and Sparse matrix. Residual still
increases slightly over iterations
* Implement simplified levenberg marquardt
* Bug fixes for Levenberg Marquardt and minor changes
* minor changes
* Fixes, but Optimizer is still not well behaved
* Working Ceres optimizer
* - Reorganize IO code for samples in a separate file
- Minor fix for Ceres preprocessor definition
- Remove unused generatorJacobian, will be used for opencv implementation
of levenberg marquardt
- Doxygen docs fix
- Minor preprocessor fixes
* - Reorganize IO code for samples in a separate file
- Minor fix for Ceres preprocessor definition
- Remove unused generatorJacobian, will be used for opencv implementation
of levenberg marquardt
- Doxygen docs fix
- Minor preprocessor fixes
- Move inline functions to header, and make function params const
references
* - Add Python bindings for volume struct
- Remove makeVolume(const VolumeParams&) Python binding due to compilation
issues
- Minor changes according to comments
* - Remove dynafu::Params() since it is identical to kinfu::Params()
- Use common functions for dynafu_demo
- Suppress "unreachable code" in volume.cpp
* Minor API changes
* Minor
* Remove CRTP for HashTSDF class
* Bug fixes for HashTSDF integration
TSDF preCalculation pixNorm
* create preCalculation function
* warning fix
* minor fix
* gpu preCalculation fix
* fix resolution bag in CPU
* gpu minor fix
* add pixNorms to intrinsics code
* minor fix
* minor fixes
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
TSDF Optimization
* getMat using fix
* min/max fix
* create WeightType
* create normals test
* bug fix
* complete normals test
* fix makeVolume and rewrite tests
* minor fixes
* add new normal tests
* replace operator() on lambda expressions
* make a valid points test
* minor fixes
* getNormalVoxel fix in tsdf and hashTsdf
* create renderPointsNormals
* replace Affine3f with Matx44f oin make volume
* minor fixes
* minor fix
* tmp
* create function interpolateVoxel for hashTSDF
* tmp
* right interpolation for HashTSDF
* rewrite intrinsics normalize
* minor fix
* rewrite GPU normalize
* start to write perf tests
* make Volume fix
* GPU normalize fix
* minor fix
* create perf test for raycast
* fix LNK2019 problem in perf test
* made all perf tests
* replace all Affine3f with Matx44f
* replace Point3i with Vec3i
* minor fix
* minor fix
* add CV_EXPORT_W
* build fix 1
* build fix 2
* build fix 3
* warning fix
* build test
* win test
* tests without HashTSDF
* create noparallel normals checking
* test without fetch
* test without fetch points normals
* add end line
* revert rotation() in hash_tsdf
* fix matrix multiplication order
* fetch points normals invoker fix
* warning fix
* warning fix
* Docs fix
* Hash push normals fix
* replace operator() with lambda in PushNormals
* warning fix
* create half type and types conversion
* error fix and preparation for CPU optimization
* replace all TsdfType with half
* minor fixes
* minor fix
* raycast fix
* conversion bug fix
* delete cout
* it's alive!
* improve conversion CPU
* warning fix
* warning fix 1
* intrinsics optimization
* minor fixes
* warning fix
* interpolate improve
* start to optimize GPU version
* vectorize tsdfToFloat
* CPU optimization
* GPU optimization
* minor fix
* minor fix
* Docs fix
* minor fixes
* add perf tests HashTSDF
* hashTSDF optimization
* minor fix
* interpolate improvement
* getNormalVoxel improvement
* added a new calculation pixNorm
* tsdfToFloat improve
* add flag USE_INTERPOLATION_IN_GETNORMAL to HashTSDF
* minor fix
* minor fix
* replace int with uchar
* getNormal improve
* minor fix
* minor fixes
* inline _at()
* inline _at()
* vectorize interpolation
* i tried :(
* minor fix
* try to improve _getNormalVoxel
* minor fix
* create new struct for tests
* minor test fix
* minor fix
* minor fix 1
* minor fix 2
* minor fix 3
* minor fix 4
* minor fix 5
* minor fix 6
* minor fix 7
* monor test fix
* monor test fix 1
* integrate improve
* rewrite interpolation in getNormalVoxel in HashTSDF
* intergrate improve tsdf
* minor Docs fix
* change autolock mutex place
* reduce interpolation calls
* new getNormal
* minor fix
* tmp mutex optimization
* rewrite mutex lock
* rewrite Settings structure as class
* minor Docs fix
* new inteprolateVoxel debug
* new inteprolateVoxel
* minor fix
* add new voxelToVolumeUnitIdx
* new integrate with lambda functions
* new integrate minor fix
* minor fix
* minor fix 1
* pixNorm, I try :(
* need to rewrite [][] part
* It's Alive
* omg? it works!
* minor fix
* minor fix 1
* minor fix
* add new environment check
* minor fix
* minor fix 1
* Docs fix
* minor fix 3
* minor fix
* minor fix 1
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
TSDF fixes and tests
* getMat using fix
* min/max fix
* create WeightType
* create normals test
* bug fix
* complete normals test
* fix makeVolume and rewrite tests
* minor fixes
* add new normal tests
* replace operator() on lambda expressions
* make a valid points test
* minor fixes
* getNormalVoxel fix in tsdf and hashTsdf
* create renderPointsNormals
* replace Affine3f with Matx44f oin make volume
* minor fixes
* minor fix
* tmp
* create function interpolateVoxel for hashTSDF
* tmp
* right interpolation for HashTSDF
* rewrite intrinsics normalize
* minor fix
* rewrite GPU normalize
* start to write perf tests
* make Volume fix
* GPU normalize fix
* minor fix
* create perf test for raycast
* fix LNK2019 problem in perf test
* made all perf tests
* replace all Affine3f with Matx44f
* replace Point3i with Vec3i
* minor fix
* minor fix
* add CV_EXPORT_W
* build fix 1
* build fix 2
* build fix 3
* warning fix
* build test
* win test
* tests without HashTSDF
* create noparallel normals checking
* test without fetch
* test without fetch points normals
* add end line
* revert rotation() in hash_tsdf
* fix matrix multiplication order
* fetch points normals invoker fix
* warning fix
* warning fix
* Docs fix
* Hash push normals fix
* replace operator() with lambda in PushNormals
* warning fix
* comments fix
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
[GSoC] Add new Hashtable based TSDF volume to RGBD module
* - Add HashTSDF class
- Implement Integrate function (untested)
* Integration seems to be working, raycasting does not
* Update integration code
* Integration and Raycasting fixes, (both work now)
* - Format code
- Clean up comments and few fixes
* Add Kinect Fusion backup file
* - Add interpolation for vertices and normals (slow and unreliable!)
- Format code
- Delete kinfu_back.cpp
* Bug fix for integration and noisy odometry
* - Create volume abstract class
- Address Review comments
* - Add getPoints and getNormals function
- Fix formatting according to comments
- Move volume abstract class to include/opencv2/rgbd/
- Write factory method for creating TSDFVolumes
- Small bug fixes
- Minor fixes according to comments
* - Add tests for hashTSDF
- Fix raycasting bug causing to loop forever
- Suppress warnings by explicit conversion
- Disable hashTsdf test until we figure out memory leak
- style changes
- Add missing license in a few files, correct precomp.hpp usage
* Adding constructor for kinfu_Params(). Allows users to configure parameters for KinFu Algorithm
* Trailing whitespace correct
* Add constructor for TSDF Initial Pose. Allowed parameters are Matx33f,Vec3f and Matx44f. Also added function setInitialVolumePose to handle Matx44f param data type.