Depth from Focus
From MMVLWiki
Table of contents |
|
Depth from Focus
3D surface metrology
- You need to grab the focus stack with your microscope and digital camera.
- The results will be even better, if the illumination optics of the microscope can project a pattern.
- Non-destructive measurement of surface profiles
- With our experimental settings we observed (of course the result will depend on the quality of the microscope)
- Vertical resolution (depending on aperture-size, magnification, projection-pattern and the surface properties of the object).
- Lateral resolution (depends).
- Open Source (you are free to improve the code yourself if you redistribute it).
In general one can say: The lower the depth of field, the higher the resolution of the reconstruction. With high magnification (assuming constant numerical aperture) the resolution of the reconstruction goes up. The trade-off is that the reconstruction will cover a smaller area. This can be overcome by lateral stitching (e.g. cogwheel below).
Demonstration
Here are some typical microscope images (Surfi-Sculpt refers to objects, which has been shaped using a power beam (https://www.twi.co.uk/j32k/unprotected/band_1/surfi-sculpt_index.html)).
Using a focus-stack one can compute images with extended depth of focus:
If the surface can be illuminated properly, one can even do a 3D-reconstruction of the surface:
As the idea for the algorithm was fixed already, it was possible to implement the algorithm as a command-line tool in less than 4 days, using existing Mimas-software (exspecially the operators for boost::multi_array (https://vision.eng.shu.ac.uk/jan/mimas/docs/arrayOperators.html)).
As this is a "quick hack", there's still lots of space for improvements.
Download
Old C++ Implementation
The software for estimating height-maps and images with extended depth-of-field is available for free (under the LGPL)! You first need to install version 2.0 of the Mimas Real-Time Computer Vision Library to be able to compile and run depthoffocus-0.1 (https://vision.eng.shu.ac.uk/jan/depthoffocus-0.1.tar.bz2) (652 kByte). The software also comes with sample files to generate photo-realistic 3D-reconstruction using POVRay (https://www.povray.org/)!
New Ruby Implementation
I've ported the program to Ruby (https://www.ruby-lang.org/). The new implementation is based on the HornetsEye Ruby-extension. It also requires TrollOp (https://trollop.rubyforge.org/). You can copy-and-paste the source code from the depth from focus example (https://www.wedesoft.demon.co.uk/hornetseye-api/files/stack-txt.html) page. The source code also comes with the HornetsEye source package.
See Also
External Links
- Publications
- M. Boissenin, J. Wedekind, A.N. Selvan, B.P. Amavasai, F. Caparrelli, J.R. Travis: Computer vision methods for optical microscopes (https://dx.doi.org/10.1016/j.imavis.2006.03.009)
- J. Wedekind: Focus set based reconstruction of micro-objects (https://vision.eng.shu.ac.uk/jan/MechRob-paper.pdf)
- Further Reading
- Wikipedia article on anaglyph images (https://en.wikipedia.org/wiki/Anaglyph_image)
- Ishita De, Bhabatosh Chanda, Buddhajyoti Chattopadhyay: Enhancing effective depth-of-field by image fusion using mathematical morphology (https://dx.doi.org/10.1016/j.imavis.2006.04.005)
- Focus stitching software CombineZ5 (https://www.hadleyweb.pwp.blueyonder.co.uk/) and some impressive examples by Rik Littlefield (https://www.janrik.net/insects/ExtendedDOF/LepSocNewsFinal/EDOF_NewsLepSoc_2005summer.htm).
- NASA anaglyph images of Mars (https://hirise.lpl.arizona.edu/anaglyph/index.php)
- 3D videos on Youtube (https://www.youtube.com/results?search_query=yt3d%3Aenable%3Dtrue)
- Helicon (https://www.heliconsoft.com/) proprietary focus stitching software