Git Product home page Git Product logo

cscalib's Introduction

A FAST SCREEN-CAMERA CALIBRATION METHOD USING A RGB-D SENSOR

Authors

Nicola Piccinelli, Marco Ruzzenente, Giacomo De Rossi

Abstract

Screen-camera calibration means localizing the screen position in the camera’s cartesian space. This allows to develop more endearing interactions with a user, such as holographic display applications. This article presents a novel approach to the screen-camera calibration which does not require any change in the positioning of either the screen or the sensor, and it is both fast and practical for the user to execute. Thanks to a RGB-D sensor and both a skeleton and face tracking system, it is possible to use the hand to point to each corner of the screen from different angles; the lines connecting the pointing eye and fingertip will have their fulcrum roughly on the corners of the screen. By using a mean squared error reduction, it is possible to determine the intersection point in the 3D space for each corner. Such approach is both fast and inexpensive.

Requirements

  • Unity 3D (5.3.3)
  • Kinect 2
  • Kinect 2 SDK
  • Microsoft Windows

Usage

  1. Clone the repository :)
  2. Open project in Unity (the build is not required) and open Scene/Calibration
  3. Setup the calibration parameters
  4. Run the application and follow the instructions
  5. The results of the calibration is placed in Assets/config.ini

Calibration Parameters

In KinectCalibrator game object you must define six parameters in order to achive a good results in your screen-camera calibration.

  1. Screen Height (in meters): for best results use the factory dimensions
  2. Screen Width (in meters): for best results use the factory dimensions
  3. Lines per corner: the amount of lines requested for each screen corner (total samples: lines_per_corner * 4)
  4. Ransac Threshold: the maximum distance between computed intersection point and inlier lines
  5. Ransac Probability: default 0.95
  6. Upper Left Corner Position Guess: the position of upper left corner w.r.t kinect depth frame

Result file Nomenclature

The calibration results is subdivided as follow:

  • CORNERS_POSITION_WITHOUT_RANSAC: screen corners position estimated with SSD (Sum of Square Differences) without outliers rejection
  • OPTIMIZE_CORNERS_POSITION_WITHOUT_RANSAC (User Guess): screen corners position estimated after Levenberg–Marquardt algorithm initialized with user UpperLeft Corner guess. The set of corner lines should contains outliers
  • OPTIMIZE_CORNERS_POSITION_WITHOUT_RANSAC (Estimated Guess): screen corners position estimated after Levenberg–Marquardt algorithm initialized with automatic best guess estimation. The set of corner lines should contains outliers
  • CORNERS_POSITION_RANSAC: screen corners position estimated with RANSAC algorithm with outliers rejection
  • OPTIMIZE_CORNERS_POSITION_RANSAC (User Guess): screen corners position estimated after Levenberg–Marquardt algorithm initialized with user UpperLeft Corner guess. The set of corner lines doesn't contain outliers
  • OPTIMIZE_CORNERS_POSITION_RANSAC (Estimated Guess): screen corners position estimated after Levenberg–Marquardt algorithm initialized with automatic best guess estimation. The set of corner lines doesn't contain outliers

cscalib's People

Contributors

nicolapiccinelli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  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.