KINECT PROJECT EITAN BABCOCK REPORT TO RECEIVE FINAL EE CREDIT FALL 2013



Similar documents
Abstract. Introduction

TWO-DIMENSIONAL TRANSFORMATION

Lecture L3 - Vectors, Matrices and Coordinate Transformations

Review B: Coordinate Systems

Solutions to Exercises, Section 5.1

A System for Capturing High Resolution Images

Physics 235 Chapter 1. Chapter 1 Matrices, Vectors, and Vector Calculus

Rotation Matrices and Homogeneous Transformations

Area and Arc Length in Polar Coordinates

Computer Vision & Digital Image Processing. Edge linking and boundary detection

Solutions for Review Problems

FRICTION, WORK, AND THE INCLINED PLANE

Vector surface area Differentials in an OCS

USING THE XBOX KINECT TO DETECT FEATURES OF THE FLOOR SURFACE

How To Fuse A Point Cloud With A Laser And Image Data From A Pointcloud

The elements used in commercial codes can be classified in two basic categories:

Summary: Transformations. Lecture 14 Parameter Estimation Readings T&V Sec Parameter Estimation: Fitting Geometric Models

Section 9.1 Vectors in Two Dimensions

Lecture 3: Coordinate Systems and Transformations

PROBLEM SET. Practice Problems for Exam #1. Math 1352, Fall Oct. 1, 2004 ANSWERS

THE COMPLEX EXPONENTIAL FUNCTION

The Vector or Cross Product

C# Implementation of SLAM Using the Microsoft Kinect

EDEXCEL NATIONAL CERTIFICATE/DIPLOMA MECHANICAL PRINCIPLES AND APPLICATIONS NQF LEVEL 3 OUTCOME 1 - LOADING SYSTEMS

VOLUMNECT - Measuring Volumes with Kinect T M

DINAMIC AND STATIC CENTRE OF PRESSURE MEASUREMENT ON THE FORCEPLATE. F. R. Soha, I. A. Szabó, M. Budai. Abstract

Color holographic 3D display unit with aperture field division

Gradient, Divergence and Curl in Curvilinear Coordinates

Computing Euler angles from a rotation matrix

Realtime 3D Computer Graphics Virtual Reality

The purposes of this experiment are to test Faraday's Law qualitatively and to test Lenz's Law.

Chapter 6 Circular Motion

A Short Introduction to Computer Graphics

Design of a six Degree-of-Freedom Articulated Robotic Arm for Manufacturing Electrochromic Nanofilms

SOLID MECHANICS BALANCING TUTORIAL BALANCING OF ROTATING BODIES

Scanners and How to Use Them

2D Geometric Transformations

Geometric Camera Parameters

[1] Diagonal factorization

Portable Digitilt Tiltmeter

White paper. In the best of light The challenges of minimum illumination

A. OPENING POINT CLOUDS. (Notepad++ Text editor) (Cloud Compare Point cloud and mesh editor) (MeshLab Point cloud and mesh editor)

Vector Math Computer Graphics Scott D. Anderson

PDF Created with deskpdf PDF Writer - Trial ::

INTRODUCTION TO RENDERING TECHNIQUES

Lecture 7. Matthew T. Mason. Mechanics of Manipulation. Lecture 7. Representing Rotation. Kinematic representation: goals, overview

Physics of the Atmosphere I

LIST OF CONTENTS CHAPTER CONTENT PAGE DECLARATION DEDICATION ACKNOWLEDGEMENTS ABSTRACT ABSTRAK

Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

Self-Calibrated Structured Light 3D Scanner Using Color Edge Pattern

Automatic and Objective Measurement of Residual Stress and Cord in Glass

Bending Stress in Beams

Essential Mathematics for Computer Graphics fast

Cross product and determinants (Sect. 12.4) Two main ways to introduce the cross product

Theremino System Theremino Spectrometer Technology

The Technical Archer. Austin Wargo

Vectors and Scalars. AP Physics B

MULTIPLE INTEGRALS. h 2 (y) are continuous functions on [c, d] and let f(x, y) be a function defined on R. Then

Trigonometry Review with the Unit Circle: All the trig. you ll ever need to know in Calculus

6. Define log(z) so that π < I log(z) π. Discuss the identities e log(z) = z and log(e w ) = w.

Geometric Transformations

Least-Squares Intersection of Lines

When the fluid velocity is zero, called the hydrostatic condition, the pressure variation is due only to the weight of the fluid.

Digital Image Fundamentals. Selim Aksoy Department of Computer Engineering Bilkent University

Progettazione Funzionale di Sistemi Meccanici e Meccatronici

Mark Howell Gonzaga High School, Washington, D.C.

Digital Photogrammetric System. Version USER MANUAL. Block adjustment

SUPER RESOLUTION FROM MULTIPLE LOW RESOLUTION IMAGES

Parabolic Trough Solar Collector Analysis

Intelligent Submersible Manipulator-Robot, Design, Modeling, Simulation and Motion Optimization for Maritime Robotic Research

Vision based Vehicle Tracking using a high angle camera

Correcting the Lateral Response Artifact in Radiochromic Film Images from Flatbed Scanners

Solutions to Homework 10

MODELLING A SATELLITE CONTROL SYSTEM SIMULATOR

Basic Problem: Map a 3D object to a 2D display surface. Analogy - Taking a snapshot with a camera

Simple Harmonic Motion

DRAFT. New York State Testing Program Grade 8 Common Core Mathematics Test. Released Questions with Annotations

3. KINEMATICS IN TWO DIMENSIONS; VECTORS.

PHY121 #8 Midterm I

The process components and related data characteristics addressed in this document are:

Fric-3. force F k and the equation (4.2) may be used. The sense of F k is opposite

Module 2. Analysis of Statically Indeterminate Structures by the Matrix Force Method. Version 2 CE IIT, Kharagpur

Interference. Physics 102 Workshop #3. General Instructions

Solving Simultaneous Equations and Matrices

Development of 3D Image Manipulation Software Utilizing the Microsoft Kinect

Linear Programming. March 14, 2014

How To Analyze Ball Blur On A Ball Image

3D Scanner using Line Laser. 1. Introduction. 2. Theory

Vector and Tensor Algebra (including Column and Matrix Notation)

Fast Subsequent Color Iris Matching in large Database

ab = c a If the coefficients a,b and c are real then either α and β are real or α and β are complex conjugates

White paper. CCD and CMOS sensor technology Technical white paper

2-1 Position, Displacement, and Distance

Chapter 3 Vectors. m = m1 + m2 = 3 kg + 4 kg = 7 kg (3.1)

Geometric Transformation CS 211A

Rodenstock Photo Optics

The Image Deblurring Problem

ex) What is the component form of the vector shown in the picture above?

Today in Physics 217: the method of images

Trigonometric Functions and Triangles

Transcription:

KINECT PROJECT EITAN BABCOCK REPORT TO RECEIVE FINAL EE CREDIT FALL 2013

CONTENTS Introduction... 1 Objective... 1 Procedure... 2 Converting Distance Array to 3D Array... 2 Transformation Matrices... 4 Combining Images... 6 Conclusion... 6 1

INTRODUCTION The Xbox Kinect is a remarkable device that has the ability to capture 3D images. It consists of two main parts a regular camera to capture image information, and sensor that can capture depth. This allows for each pixel to have four parameters, rather than the typical three. Normally, pixel information contains the levels of red, green, and blue (RGB). The pixel information from the Kinect has a fourth parameter of distance. OBJECTIVE The goal of this project is to allow for full 3D viewing of images without image shadowing. This will be done by using multiple Kinects viewing an object from multiple positions. Image shadowing occurs when there is an obstruction in the line of site of a camera. It is analogous to a regular shadow, caused by an object obstructing the line of site of a light source such as the sun. With only one Kinect viewing an object from one position, only the one surface is able to be captured. This is shown in Figure 1. However, if you add additional Kinects around an object, all sides can be captured and combined to form one image. At this point, one can see a full 3D representation of an object viewable from all sides. FIGURE 1: (SOURCE: HTTP://DRDAVE.CO.UK/IMAGE/10288BE3-A33A-44FA-9A64-CFC6E9DD80D7) 1

PROCEDURE CONVERTING DISTANCE ARRAY TO 3D ARRAY The Xbox Kinect stores distance information as a 2D array of distances. In order to manipulate the data, it must be converted to a 3D array in space, where the array elements correspond to X, Y, and Z spatial coordinates, and the elements of the array correspond to the pixel color information. This will yield the start of a 3D representation of the environment that can be viewed from multiple angles. In order to do this, it is important to note that the Kinect is getting this information from a single point in space. Figure 1 shows how both the angle and depth information must be taken into account when creating the 3D array. y Depth x θ FIGURE 2 I will define the horizontal angle from the source to each pixel to be θ, and the vertical angle to be φ. These angles can be calculated using the Kinect system specifications. The specifications provide a total viewing angle of 57 horizontal and 43 vertical, and a resolution of 1280x960 pixels (http://msdn.microsoft.com/en-us/library/jj131033.aspx). From this, we can calculate the angle per pixel. dθ = dφ = 57 = 0.04453 /pixel horizontal 1280 pixels 43 = 0.04479 /pixel vertical 960 pixels Additionally, the Kinect is able to tilt up and down. For this project, I will assume that the Kinect is facing straight forward, and thus the 0 is in the exact center of the pixel array. It would not be difficult in the future to incorporate this information in the calculations. 2

The range of the Kinect is.8 m to 4 m. This is needed to determine how large the spatial array must be. Using the maximum distance and the maximum viewing angle, the distance between pixels can be determined. x 4m θ = 28.5 FIGURE 3 x = 4 m tan(28.5 ) = 2.17 m 2.17 m =.00339 m/pixel 640 pixels The following MATLAB code in Figure 3 shows how to calculate the 3D depth matrix. There is also an explanation of variables in Table 1. FIGURE 4 3

TABLE 1: Variable Description i, j Iterating variables going through every pixel in the 2D array theta, phi Angles between the Kinect and the pixel PixelToAngleH, PixelToAngleV Constants used to convert from pixels to angles for horizontal and vertical, respectively x1, y1, z1 Distances in meters x2, y2, z2 Distances as array index integers depth(i,j) The 2D depth array MeterToPixel Constant used to convert form a distance in meters to the index of the 3D array spatial(x,y,z) The 3D spatial array RGB(i,j) The 2D pixel image array TRANSFORMATION MATRICES Transformation matrices are used to move from one reference frame to another. In this project, they are used to convert the reference frames from multiple Kinects to the base reference frame of the user. In this project, I am assuming all of the Kinects are pointing straight forward, so all rotations will be around the z-axis. The rotation matrix for a rotation around the z axis is as follows. cos(θ) sin(θ) 0 R z (θ) = [ sin(θ) cos(θ) 0] 0 0 1 The transformation matrix contains the rotation matrix, plus a transposition term. The transformation matrix is as follows: cos(θ) sin(θ) 0 dx T z (θ) = [ sin(θ) cos(θ) 0 dy ] 0 0 1 dz 0 0 0 1 In this matrix, θ is the angle the new reference frame is rotated around the z axis with respect to the base frame, dx is the displacement in the x direction, dy is the displacement in the y direction, and dz is the displacement in the z direction. For each point in space, the coordinates must be multiplied by this transformation matrix as follows: X (x, y, z) = T z (θ) X(x, y, z) cos(θ) sin(θ) 0 dx x y [ z ] = [ sin(θ) cos(θ) 0 dy y ] [ 0 0 1 dz z ] 1 0 0 0 1 1 x 4

The following MATLAB code in Figure 4 shows how this translation could be done. Table 2 contains a description of variables for this code. FIGURE 5 TABLE 2 Variable Description i, j, k Iterating variables going through every pixel in the 2D array theta Rotational angle between this Kinect reference frame and the original reference frame xmax, ymax, The maximum indices of the 3D spatial array. zmax x, y, z New indices for transformed array t Place holder for 4 th matrix element dx, dy, dz Coordinates of this Kinect spatialt(x,y,z) Transposed 3D spatial array spatial(x,y,z) The 3D spatial array This can be done for as many Kinects as needed or wanted. The more Kinects used, the more points there can be. 5

COMBINING IMAGES In order to complete the full 3D image viewable from all sides, the images from each of the Kinect sources must be combined into one image. This is a relatively easy feat in the programming. The 3D array is simply edited each time the transformation calculations are done. The first Kinect will be treated as the base frame, and thus no transformation will be done. After the code from Figure 3 is executed to calculate the spatial array, this becomes the start of the final 3D image. I will refer to this array as Final3D. Then, for each subsequent Kinect used, line 12 from the code in Figure 4 would be modified so that Final3D is updated as follows: Final3D(x, y, z) = spatial(i, j, k); In this coding method, any pixel of data in the 3D space that had information from multiple Kinects, would only show the information from the last Kinect that was entered into the program. Theoretically, this should not matter since it should be the same data from multiple sources. However, this would only be the case if all distances and angles between Kinect sources was measured exactly down to the pixel (which was calculated previously in this paper to be approximately 3 mm and 1 hundredth of a degree). This is not feasible. However, the measurements should be close enough such that a human looking at the final 3D image should not be able to notice. CONCLUSION I was not able to complete the coding of this project, due to losing access to the software needed. While I am sure there are a few bugs to be worked out, I am confident that I have put enough thought and mathematics into this project for it to be a place to build from for people who do have access to MATLAB or another similar coding environment. I hope that someone at Washington University in St. Louis is able to take this idea and advance it to a working prototype. 6