Multi-Projector Based Display Code ------- Home
Overview
This project provides you with the tools and techniques you need to create your own large-area multi-projector display that is both affordable and flexible. It covers the procedure you need to take and the issues you need to consider for achieving geometric alignment and color seamlessness, and an image rendering system using PC clusters. It also provides the necessary codes of a simple distributed calibration and image/3D-model rendering display system.
Who should use this code
- Novice who would like to build their own camera-projector display system can use this code as a start point
- Researchers who are interested in camera-projector display system can use this code as a reference
System Architecture
With the recent popularization of low-cost commodity graphics cards, it is possible to build a distributed rendering system with a cluster of PCs. The following figure shows the architecture of our PC-cluster based multi-projector display:

Figure 1. The system architecture of our PC-Cluster based multi-projector display
As you can see from the above picture, the system consist of one master PC and a few rendering PCs. Each rendering PC is connected to one projector. All the PCs are connected via a local network. The master PC controls the rendering procedure of the system, and the rendering PCs do the actual rendering work and output through the projectors. The overall goal is to make the casually placed projectors behave like a large integrated display when showing images and other scenes.
The scene resources are preloaded to the rendering PCs and each PC will only show its own portion according to prior calibration, as shown in the figure. Because the projectors are casually placed, the scene from different projectors may not be well aligned, and the overlapped area of two or more projectors may looks brighter than other area. So the rendering PCs need to warp the scene to achieve geometry alignment and color seamlessness. The basic procedure of the PC-Cluster based display system involves two steps: the camera-based calibration step and the scene warping step. During the calibration step, special featured images are projected and corresponding camera images are grabbed. After analysis of the grabbed images, geometry information about how to warp the scene and alpha mask about how to achieve photometric alignment will be atomatically generate. During the scene warping step, each projector will warp the scene resources according to the calibration result.
You can find more information about geometry alignment from Chapter 3 of reference [1], about color seamlessness from Chapter 4 of reference [1], about PC-Cluster rendering from Chapter 5 of reference [1]. You are strongly recommended to read the book thoroughly before starting to set up your own multi-projector display.
Hardware and Software Requirements
In order to use the codes provided, you need to meet the following hardware and software requirements:
Hardware requirements:
- One PC with monitors, as master PC;
- Two or more PCs with dedicated graphic cards (we use NVIDIA GeForce 8800GTS), as rendering PC;
- Two or more projectors (one for each rendering PC);
- One hub or router and network cables;
- One OpenCV-compatible camera with proper lens (see FAQ for more information about how to select camera and lens);
Software requirements:
- Windows XP installed on all PCs;
(Below are the additional software you need to install if you want to compile the source codes yourself)
- Microsoft Visual Studio 2005 or above;
- OpenCV library 1.0 (from reference [2]) installed;
- GLUT library 3.7 (from reference [3]) installed;
- FreeImage Algorithms (from reference [4]) installed;
[1] "Practical Multi-Projector Display Design", Majumder/Brown, AK Peters, USA, 2007
[2] Open Computer Vision Library, 1.0:http://sourceforge.net/projects/opencvlibrary/
[3] GLUT - The OpenGL Utility Toolkit, 3.7: http://www.opengl.org/resources/libraries/glut/
[4] FreeImage Algorithms Library: https://code.launchpad.net/~glennpierce/+junk/main
View this page in Romanian courtesy ofazoft
Multi-Projector Based Display Code ------- Home的更多相关文章
- Multi-Projector Based Display Code ---- ImageViewer
Overview Image viewer is a typical application for large display. It makes use of the high-resolutio ...
- Multi-Projector Based Display Code ---- FAQ
Frequently Asked Question How do I know that my camera has a proper lens? Answer: If you can see exa ...
- Multi-Projector Based Display Code ---- Calibration
Overview As mentioned previously, there are two main steps in generating a seamless display. The fir ...
- Multi-Projector Based Display Code ---- ModelViewer
Overview Model viewer is another application we provided for large display. It is designed for viewi ...
- Multi-Projector Based Display Code ---- Download
The code providing are for your reference. Please download the code according to your hareware confi ...
- Peer Code Reviews Made Easy with Eclipse Plug-In
欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...
- Code Pages
https://docs.microsoft.com/en-us/windows/desktop/intl/code-pages Most applications written today han ...
- 设备管理 USB ID
发现个USB ID站点,对于做设备管理识别的小伙伴特别实用 http://www.linux-usb.org/usb.ids 附录: # # List of USB ID's # # Maintain ...
- Oracle Database 11g express edition
commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...
随机推荐
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or.....
1,<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dia ...
- 论文笔记:Cross-Domain Visual Matching via Generalized Similarity Measure and Feature Learning
Cross-Domain Visual Matching,即跨域视觉匹配.所谓跨域,指的是数据的分布不一样,简单点说,就是两种数据「看起来」不像.如下图中,(a)一般的正面照片和各种背景角度下拍摄的照 ...
- cdh zookeeper 不断拒绝连接
测试hiveserver2高可用的时候,需要登录zookeeper检查hiveserver2是否在zookeeper中注册 执行 zookeeper-client 不断的拒绝连接 -- ::, [my ...
- Excel VBA入门(8): 代码调试/错误处理/代码优化
VBE有丰富的调试工具, 比如立即窗口, 本地窗口, 监视窗口, 断点调试... 第一个博文中已经讲过调试的基本操作: 设置断点, F5运行, F8逐条运行 断点就是程序中暂停停止运行的位置, 设置断 ...
- dynamic不能使用扩展方法
一.方法中传入的参数为dynamic,则返回的也是dynamic类型 例如: public string Test(string str) { return str + "aa"; ...
- Dapper官方库 在guid和string互转的问题
之前在和老何谈论他的开源项目Util中使用MySql的过程中发现了官方dapper在转换guid到string时候的一个错误 Error parsing column 0 (ID=6c2adb93-d ...
- 用python一步一步教你玩微信小程序【跳一跳】
12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...
- SpringMVC-2-(Controller)
一)参数类型 @RequestMapping("hello4") @ResponseBody public ModelAndView Hello4( // Servlet的三个参数 ...
- 用户管理和su,id 命令
useradd userdel usermod groupadd groupdel 用户管理 为什么需要有用户? 1. linux是一个多用户系统 2. 权限管理(权限最小化) 用户:存在的目录是为了 ...
- Ackerman
Ackerman 递归算法 一 . 问题描述及分析 图1 二 . 代码实现 package other; import java.io.BufferedWriter; import java.io.F ...