Thursday, 31 May 2012

Forensic facial reconstruction with free software

Introduction

Although it have a couple of tools that aid archeologists today, unfortunately  for us, defenders and enthusiasts of free software, the majority of them are proprietary software.

It is really important to have access to open source tools, since they can make a bunch of projects and research fields more feasible and less spendable. Here I will expose how this could be achieved using some of them to do forensic facial reconstruction.

We have several good software, like InVesalius, that helps us converting computed tomography in 3D meshes. The problem is that is very expensive to make a tomography and some workgroups don't have neither acess at this tool, or money to invest of this projects making unfeasible the whole work.

Since you have the reconstructed skull, and if you have the knowledge to make the reconstruction, is quite easy to make the rest of the work, because we have Blender to make 3D modeling, Gimp to make the textures and treat the image, and a couple of other software to finish a well made work.

I already have done some facial reconstructions using only free software, but this is especial, because for the very first time, we used SfM in the process.

The ARC TEAM was able to reconstruct a skull with a series of pictures with great riches of details. This is very important because the process is now viable to be used in all regions of the world, mainly by those groups doesn't have a lot of money to spend, but have a computer, a picture machine and a big wish to make things happen.


Describing the Process

The first step consists to get the skull to reconstruct.

Here in this site was described how to make this: http://arc-team-open-research.blogspot.it/2011/07/python-photogrammetry-toolbox-ppt-and.html


Once that I got the points cloud of the skull, I opened it on the MeshLab.


I converted the points cloud in a mesh using the Poisson algorithm. The quality was pretty good, but when you reconstruct a face, you have some informations that appear in the texture of the skull. With the Poisson, you have only the mesh, without the details of the color and the texture.


To "paint" the mesh I used a MeshLab command called "Vertex Attribute Transfer".




With the skull properly reconstructed and textured, I imported it on Blender.


I made a previous study, using the Inkscape to see the way to go through.

And I made the reconstruction of the face.

Using a mix of american method (Taylor 2001) and the Manchester method (Wilkinson 2008) positioning the tissue depth and reconstructing the facial muscles.



After to modeled the muscles, was the time to modeling the skin.


Using the skin configuration of a caucasian male, the face texture was created and the hair too.



Finally the work was done. We choiced for the name of the man: Alberto di Trento. Because Alberto reminds "open" in Portuguese (aberto), my native language. This "open" represent opensource, because all the software uses this philosophy:

Skull: Python Photogrammetry Toolbox
Modeling: Blender 3D
Previous facial study: Inkscape
Texturing: Gimp
OS: Linux Ubuntu 12.04 (I would use Archeos, but I like to use 64-bits version in my notebook, and the current Archeos version is only 32-bits).

With this case was showed that is possible to make good reconstructions using only free and open source software. I hope the information be useful for you.

Thanks for the attention, good studies and have a nice day!


17 comments:

  1. It is great to see how far open source software have evolved.
    Nice article, congratulations. I hope you can share more materials on the this amazing field of facial reconstruction.

    ReplyDelete
  2. interesting article, great modelling :D, but, where can i find more info about "the manchester method"? perhaps this could be an interesting way to approach a more real artistic character creation, or could you explain it for a normal 3d artist?

    ReplyDelete
    Replies
    1. Hi belofilms,
      I am not an anthropologist, but I guess a good starting point could be this: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2815945/

      Delete
  3. Hi,

    what settings did you use for Poisson algorithm?
    I get in Meshlab either a poor mesh or a crashing Meshlab.
    Thank you!!

    ReplyDelete
  4. Hi,
    I don't know what settings Cicero (the author of the post) used for the Poisson filter. In my computer, when I do the same operation, I use this settings:

    Octree Depth 9
    Solver Divide 9
    Samples per Node 1
    Surface offsetting 1

    The setting should be related with the power of your PC (for example I can not set values bigger than 9 on my laptop, if not MeshLab crashes). I hope it was useful.

    PS
    I am sorry if your comment was not directly visualized in the blog, but I can not shut down the spam filter due to some fake comments (spam) coming from time to time. For this reason I have to check the comment before to publish them.
    Ciao.

    ReplyDelete
  5. Hi,

    Thank you for the reply! I thought I could not post here.
    I guess my problem with poisson is the large cloud. I used an outside scan for meshing.
    With ball pivoting I got nice results.

    Best regards

    ReplyDelete
  6. Hi,

    how did you export the files for blender, which format did you use?
    How did you get the texture into blender?
    I tried some methods, eg. *.dae, *.obj ... etc. I never got the texture from MeshLab into blender.
    I only get the colored vertexes.
    Thank you for some hints.


    Best regards

    Immi

    ReplyDelete
  7. HiAnonymous!

    I didn't understand well what you want to do. When I need to import some objetc with texture on Blender I prefer use Collada (.dae) and .obj, because usually the mesh came with texture well formated. If came with some problem, I only edit the file and solve. If I import a binary type like .3ds I see the texture setup and looking for the texture. Almost ever this works.

    ReplyDelete
  8. Hi,

    when I transfer my mesh from MeshLab to blender as *.dae or *.obj I just get uncolored models. As *.ply I can transfer the color of mesh but the model does not have any textures.
    Is there any possibility in MeshLab to include the textures?


    Best regards

    Immi

    ReplyDelete
  9. Immi, when you work with textures I advise you to use Blender. I think it is easier. A big hug!

    ReplyDelete
  10. Hi Immi,
    with the new release of MeshLab (as Matteo Dellepiane told me, http://vcg.isti.cnr.it/~dellepiane/index.html) will allow you to do real high quality texture form pictures (e.g. working with SfM and IBM). Untill the new version will reach a stabile level, you can add textures (low-quality) from the point cloud to the mseh with a "workaround". Please note that when you transfer the colour from the 3D poincloud to the white mesh, this do not generate automatically a texture, but only a coloured mesh (when you will export it from Meshlab it will be without texture). To transform these colour information into a real texture you have to do this "workaround" using both Blender and Meshlab. I have a short tutorial about this, which was kindly given to me by Carolina Larsson (of Lund University Humanities Lab, http://www.humlab.lu.se/en/people/personnel/carolinalarsson), but before to share it through internet I should ask her... I will try to send her an email about it. If she agree, I could write a post about this topic (or better she could do it).
    Ciao.

    ReplyDelete
  11. Hi Luca and cogitas3d,

    thank you for your comments and your help!!
    I was on holidays past weeks.

    I'm trying to make a virtual world based on a laserscan.
    I was hoping that I can generate a mesh and a texture and export the textured model into Blender.

    @cogitas3d: I've tried it out with Blender. I think my mesh was too complex to generate textures.

    @Luca: So I came right back to test new MeshLab Version. Thank you for the hint.


    Best regards

    Immi

    ReplyDelete
  12. Hi to all, nice work, and nice article...
    My name is Fernando Almeida
    Can anyone tell me how to do a TEXTURE merge from diferent textured mesh of a object scan...
    Or how can i use one texture from one reference mesh and project it on other mesh,(aligned but with diferent faces or points) using meshlab or blender ??

    best regards
    Fernando Almeida ( fga.almeida@gmail.com )

    ReplyDelete
    Replies
    1. Hi Fernando!

      I do this process on Blender. The first time I did I used this videotutorial: http://www.youtube.com/watch?v=liWluJimWM0 (1 of 2).

      I hope be useful.

      Thanks to report the comment to me Luca!

      A big hug for all!

      Delete
  13. Hi Fernando,
    I will forward you questions to Cicero, who is the "Blender specialist".

    ReplyDelete
  14. In a murder case I have a skull and 10 Pics.Can u please tell me how to proceed for Superimposition.Please give links of all softwares as your reply will make a difference.
    Thanks

    ReplyDelete
    Replies
    1. Hi!

      I never made a superimposition befora, but I read about it on a book: Forensic Art and Illustration by Karen Taylor.

      This book have one chapter only about this issue.

      I hope this tip had been useful.

      A big hug!

      Delete

BlogItalia - La directory italiana dei blog Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.