menpo3d icon indicating copy to clipboard operation
menpo3d copied to clipboard

the cholesky_AAt in Non-Rigid ICP can't work

Open AzureSilent opened this issue 4 years ago • 5 comments

Hello, When there are many vertices whose matching reliability weight is set to 0, the Hessian ATA is not full rank. So only the slow solve method scipy_spsolve can work. The sksparse.cholmod.cholesky_AAt just throw an ERROR: sksparse.cholmod.CholmodNotPositiveDefiniteError: c:\cholmod-scikit-sparse-window\suitesparse-metis-for-windows-1.3.1\suitesparse\cholmod\supernodal\t_cholmod_super_numeric.c:911: matrix not positive definite (code 1)

how do you handle with this? or I got the wrong version of scikit-sparse?

AzureSilent avatar Mar 08 '20 02:03 AzureSilent

I am also meeting this problem, have u solved?

jiaxiangshang avatar Dec 07 '20 11:12 jiaxiangshang

The easiest thing to do would be to add some regularization to allow the matrix to be invertible. So just add a small number to the diagonal.

patricksnape avatar Jan 29 '21 23:01 patricksnape

Really thanks for your help

jiaxiangshang avatar Jan 31 '21 05:01 jiaxiangshang

hello,may i ask how to add numbers to the diagonal of a sparse matrix?and how to avoid ill-conditioned matrix?thanks a lot!

mihaoning avatar Feb 16 '21 04:02 mihaoning

Something like sparse_matrix.diagonal() += 1e-6?

patricksnape avatar Mar 16 '21 20:03 patricksnape