• Stars
    star
    347
  • Rank 122,141 (Top 3 %)
  • Language
    C++
  • License
    Other
  • Created about 13 years ago
  • Updated about 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Research and development of a new toolkit for projector-camera calibration at YCAM.

ProCamToolkit is a collection software and code for openFrameworks aimed at making high level projector-camera calibration more accessible. It provides examples manual projector calibration using a model of a scene, projector-camera calibration using a reference pattern and gray code scanning, and multi-projector calibration using gray code scanning. A program called "mapamok" has emerged from ProCamToolkit as the most user-friendly app of the collection, and it's useful for experimenting with extremely fast projection mapping in situations where the scene can be modeled quickly (e.g., a collection of cuboids) or where the scene is modeled in advance (e.g., a 3D print, or a manufactured object like a car). Most of ProCamToolkit is written in an extremely modular way, making it possible to borrow snippets of code, including some chunks that are written with the goal of being contributed to the openFrameworks core.

ProCamToolkit also includes work in progress towards new installations being developed during Guest Research Projector v.1 at YCAM Interlab. This includes experiments with augmented shadows using multiple projectors, and projection mapping in the YCAM library.

ProCamToolkit is available under the MIT License.

Apps

Geometry

mapamok

This is a complex app that will allow you to load a COLLADA file called model.dae, and then specify some number of points between the model and the corresponding location in the projection. After enough points have been selected, it will solve for the projector location and set the OpenGL viewport to render with the same intrinsics as the projector. For more details about mapamok, see the wiki.

ProCamSampleEdsdk and ProCamSampleLibdc

This app is the first step in capturing the data to calibrate a projector-camera system. It will project and capture gray code patterns. If you are scanning a scene, you only need to do this once. If you are calibrating before scanning a scene, you will need to take one scan per detected pattern.

ProCamSampleEdsdk works with a Canon DSLR, while ProCamSampleLibdc works with a Firewire camera. After compiling the app you want to use, run the app, hit f to fullscreen on the projector, then the space bar to start capturing. Before you start capturing, make sure the camera is not clipping on the brights or darks. In order to capture calibration data from two projectors, change totalProjectors from 1 to 2.

CameraCalibrate

This app will calibrate a camera from a sequence of images stored on disk, and save the calibration information into a .yml file. To use the application, load a sequence of images into the data/images/ directory. Then edit the data/settings.yml file to reflect the calibration pattern.

In the settings.xml file, xCount and yCount refer to the number of circles or corners in the calibration pattern. squareSize describes the spacing between the circles or corners. Because calibration is unitless,squareSize can be in whatever units you want the calibration data to be reported as (normally, millimeters). patternSize is 0, 1, or 2, which means CHESSBOARD, CIRCLES_GRID and ASYMMETRIC_CIRCLES_GRID.

ShadowCast

ShadowCast is work in progress on an installation that explores augmented shadows using multiple projectors. To work properly, it requires two projectors that have been calibrated to a single camera. This calibration information is captured with ProCamSampleEdsdk or ProCamSampleLibdc, then processed by ProjectorGeometryCalibrate, and finally loaded from .exr displacement maps in the SharedData/ folder. To explore the scenes inside ShadowCast without calibrating a pair of projectors, run the Scenes project.

ProCamScan

Decodes scan data and projection maps onto the point cloud.

Color

CameraGammaSampleLibdc

This is app is the first step in capturing the data to gamma calibrate a camera.

CameraGammaCalibrate

Once you've captured the data from the above app, you can feed it into this one to recover the gamma curve of the camera.

Examples

ModelSelectionExample

Demonstrates how screen-space model selection is implemented for the ModelProjector app.

RecursiveAverageExample

Recursively averages all the images in a folder. Useful for extracting gray images from a sequence of gray code scans.

Other

SharedCode

Includes ofxProCamToolkit, which is the core code backing the decoding involved in the other apps. Also PatternGenerator and GrayCodeGenerator are responsible for creating the projected patterns used in the other apps. Finally, it includes scenes/, a variety of generative visuals driven by user interaction. Each of these is used as a test scene for projector alignment.

SharedData

Camera calibration and gamma calibration information shared between apps is saved here. There is also a small collection of useful shaders.

Scenes

Demonstrates all of the scenes inside SharedCode/scenes/.

Undocumented

ProCamCalibrate

ProCamDecode*

ProCamScanGuess

RecursiveAverageExample

ProjectorGeometryCalibrate


ProCamToolkit is codeveloped by YCAM Interlab.

More Repositories

1

Duration

Duration is an application for designing change over time
C++
334
star
2

ofxTimeline

lightweight timeline tools for openFrameworks
C++
268
star
3

RAMDanceToolkit

C++
105
star
4

MOTIONER

Open source low cost inertial motion capture system.
Eagle
104
star
5

cga.js

# Computational Geometry Algorithms in Javascript
JavaScript
76
star
6

mda.js

half edge mesh data structure in js
JavaScript
65
star
7

mapamok

C++
22
star
8

ofxEpilog

C++
20
star
9

ofxTimecode

a simple add on to convert between timecode strings, frames, and seconds
C++
19
star
10

GRPContractForm

Open source contract for a collaborative project of research and development with researchers.
18
star
11

sps.js

Particle System & Simulation Helpers in Javascript
JavaScript
17
star
12

lgp.js

Lets Get Printing (lgp) helps read and write files for digitial fabrication
JavaScript
14
star
13

guf.js

Geometry Utility Functions
JavaScript
12
star
14

gaf.js

A Minimal WebGL Application Framework
JavaScript
11
star
15

nsc.js

New Shiny Camera
JavaScript
11
star
16

dna-of-forests

Field Guide “DNA of Forests” - YCAM Bio Research
Vue
10
star
17

mhf.js

Math Helper Functions for Javascript
JavaScript
8
star
18

dmxTouchDesigner

C++
8
star
19

ofxSubtitles

an addon for displaying a subtitle track along with a video or audio file
C++
8
star
20

YCAM_WORKSPACE_DOCS

7
star
21

BioTIPS

6
star
22

gonzocam

Open source hardware kit for disposable camera or iPhone to take pictures of wild animals automatically.
Objective-C
4
star
23

TimelineWorkshop

workshop examples for ofxTimeline and Duration
C++
3
star
24

ofxDuration

an addon for interacting with Duration universal timeline
C++
3
star
25

OpenSharingGuideline

OpenSharingGuideline
3
star
26

OpenYeastProtocols

2
star
27

WasNowWillWorkshop

materials for timeline workshop at tecpot
C++
1
star
28

ofxNodeArray

C++
1
star
29

how-to-make-eyewriter-2

1
star
30

TrackStandInstallation

prototype installation using ofxTimeline
C
1
star