Git Product home page Git Product logo

semicalibratedps's Introduction

Semi-calibrated Photometric Stereo in Python

written by Yasuyuki Matsushita ([email protected]) supported by Osaka University and JSPS KAKENHI Grant Number JP16H01732, Japan

based on a part of photometric stereo works in 2010-2018 conducted at Microsoft Research Asia and Osaka University together with external collaborators listed in the publication list below.

What is Photometric Stereo?

Photometric Stereo is an approach to determining surface normal of a scene from a set of images recorded from a fixed viewpoint but under varying lighting conditions, originally proposed by Woodham [1].

โ†’

What is Semi-calibrated Photoemtric Stereo?

Conventional Photometric Stereo assumes calibration of both light directions and intensities. Semi-calibrated photometric stereo only assumes the known light directions, but the light intensities (and camera exposures as well) are treated unknown. The unknown light intensities are simultaneously estimated together with surface normal. It eliminates the need for calibrating light intensities, and allows the use of auto-exposure of the camera without remembering the camera parameter, such as shutter-speed.

How to use?

Download this package and run the demo code:

python demo.py

To switch solution methods, look into demo.py and choose any of the following one when calling SCPS.solve

LINEAR            # Linear solution method
FACTORIZATION     # Factorization based method
ALTERNATE         # Alternating minimization method

Conditions of use

This package is distributed under the GNU General Public License. For information on commercial licensing, please contact the authors at the contact address below. If you use this code for a publication, please consider citing the following papers:

@inproceedings{SCPS2018,
    title   = {Semi-Calibrated Photometric Stereo},
    author  = {DongHyeon Cho, Yasuyuki Matsushita, Yu-Wing Tai, and In So Kweon},
    journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI)},
    year    = {2018}
}

@inproceedings{SCPS2016,
    title     = {Photometric Stereo Under Non-uniform Light Intensities and Exposures},
    author    = {Donghyeon Cho, Yasuyuki Matsushita, Yu-Wing Tai, and In So Kweon},
    booktitle = {European Conference on Computer Vision (ECCV)},
    year      = {2016},
    volume    = {II},
    pages     = {170--186}
}  

Dependencies

The code is written in Python 3.6 but should be able to adapt it to Python 2.x if needed. You might need the following Python packages installed:

  • cv2 (OpenCV, used for image I/O)
  • glob (used for reading out a list of images)
  • numpy (main computation depends on matrix operations)
  • sklearn (scikit-learn, used for normalization of array)

Acknowledgements

This code implementation work is supported by Osaka University and JSPS KAKENHI Grant Number JP16H01732, Japan.

Contact information

Questions / Comments? Bug reports? Please contact Yasuyuki Matsushita at [email protected].

References

[1] Woodham, R.J. Photometric method for determining surface orientation from multiple images. Optical Engineerings 19, I, 139-144, 1980

semicalibratedps's People

Contributors

yasumat avatar

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.