NaughtyZZ / 3D_face_dense_registration

Towards Fine-Grained Optimal 3D Face Dense Registration: An Iterative Dividing and Diffusing Method (IJCV2023)
https://github.com/NaughtyZZ/3D_face_dense_registration/tree/main
52 stars 4 forks source link

Dose it applicable to arbitrary facial mesh? #1

Closed dragonylee closed 1 year ago

dragonylee commented 1 year ago

I scanned a facial mesh and tried to perform non-rigid registration using your method, but the program throws an exception. I want to know if your method is applicable to arbitrary facial point cloud (or mesh) data or if it requires the vertex count to be the same?

NaughtyZZ commented 1 year ago

Which program do you use? It supports arbitary mesh for the target face. The C++ version currently provides a program to start the registeration from an intialization. I suggest that you can use the matlab version first to start the registration from scratch. I will update the C++ version afterwards.

dragonylee commented 1 year ago

Thanks for your reply!

I used C++ version and encountered an exception. Then I used the matlab version which can run normally. And I want to ask how the matlab version uses my custom target and template? How to generate the target.pp and template.pp files in this demo?

Also, when will the code for the C++ version be updated? The matlab version is indeed a bit slow :)

NaughtyZZ commented 1 year ago

Thanks for your reply!

I used C++ version and encountered an exception. Then I used the matlab version which can run normally. And I want to ask how the matlab version uses my custom target and template? How to generate the target.pp and template.pp files in this demo?

Also, when will the code for the C++ version be updated? The matlab version is indeed a bit slow :)

The template is an arbitary one and you can customize it yourself, e.g. use the one in this demo. The target face is from raw scanning data. You can convert it to triangle mesh if the raw scanning data is discrete point file. The target.pp and template.pp are landmark locations. I manually annotate them with the opensource meshLab software (in Edit->PickPoints Menu). Please also see the pp1.png file to see the anatomical meanings.

I will update the new version for C++ within a month, Since I'm busy with some other affairs. Thank you for you attention!

dragonylee commented 1 year ago

If I use a custom template and target, how can I generate the data file "Dfield.mat"? (As the point number differs)

NaughtyZZ commented 1 year ago

Dfield.mat is a matrix of which each element is the geodesic distance from each point to each landmark on the template. We precompute it using a heat-flow based method [Crane et al. ACM TOG 2013. Geodesics in heat: A new approach to computing distance based on heat flow]. Other method for the computation is OK. It only requires to be computed once only on the template.

dragonylee commented 1 year ago

Successfully run C++ code. Thanks for your helpful work! (๑๑)