We have recently been working with a client in the dental space, which required working with 3D scans of teeth. While we had done facial landmark detection when working for Metamason, teeth identification and landmarking were proving to be much more difficult. There are a ton of white papers and open source solutions for facial recognition which make understanding approaches much easier.
After reading some white papers on teeth 3D scanning, we started scripting some workflows for identifying the individual teeth from a 3D scan. After a bit of trial and error, we eventually converged on a solution that has excellent repeatability. Many of the scans we have been using have crooked teeth, general misalignment, and even missing teeth, but the identification is able to converge on a correct solution.
On a high level, the teeth identification is an iterative process. Its basic steps are...
- Plot an initial estimation point for each tooth
- Search a given radius around each estimated location and approximate a new position
- Cross-reference with each tooth's neighbor to check for inaccuracies
- Repeat process using newly refined estimation points
Below are some animations showing the iterations step by step.