Giter Site home page Giter Site logo

real-time-photometric-stereo-and-surface-reconstruction-on-personal-devices's Introduction

Real-time-photometric-stereo-and-surface-reconstruction-on-personal-devices

Photometric stereo is a method that estimates an object’s surface depth and orientation from images of the same view taken under different light directions. Conceptually, three images with distinct light directions are sufficient in obtaining the surface normal map. However, noise is a prevalent factor in many facets of this process and industrial practice often require multiple images taken in a controlled environment. We propose to explore the robustness of shape from shading algorithms and adapt them such that real-time surface reconstruction can be achieved on personal devices. This entails using minimal input data and computation. In following sections we show that we retrieved accurate 3D surfaces of objects in real-time from a webcam live video, using only light sources from a computer screen.

Prerequisites

  • cv2
  • screeninfo
  • mayavi
  • mpl_toolkits

Usage

Run

$python main.py 

and input as prompted.

Example

  • Sample object:

alt text

  • Initial estimate:

alt text

  • Output:

alt text

License

see the LICENSE.md file for details

References

This project is generally implemented based on:

  1. Schindler, Photometric Stereo via Computer Screen Lighting for Real-time Surface Reconstruction. (2008)
  2. H. Hideki, “Photometric stereo under a light-source with arbitrary motion”(1994)
  3. A. Yuille, D. Snow, R. Epstein, and P. Belhumeur, “Determining generative models of objects under varying illumination: Shape and albedo from multiple images using SVD and integrability”(1999)
  4. V. Nozick, I. Daribo, and H. Saito, “Gpu-based photometric reconstruction from screen light” (2008)
  5. V. Nozick, “Pyramidal Normal Map Integration for Real-time Photometric Stereo”(2010)

Contact me for more detailed report on the implementation.

Contact

[email protected]

real-time-photometric-stereo-and-surface-reconstruction-on-personal-devices's People

Contributors

hyc96 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

real-time-photometric-stereo-and-surface-reconstruction-on-personal-devices's Issues

Suggestions to get good results

Hi,

Thanks for sharing your code.

I have been playing with photometric stereo for some time now and wanted to ask for your suggestions to get reasonable results (like shown in this repository). I have been unable to replicate those results. I tried with my face and with other objects, at various distances from the camera and screen, using a dark background and placing the camera either at the top and at the center of the screen, but with no success.

See for example the following images, each one for each lighting direction. They do not look that different:
1
2
3
4

And the result (using python main.py 2):

res_view1
res_view2

I was wondering if you could please comment about any step, setup or special care I am missing to get reasonable results.

Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.