SQ_Curvatura_2012

Download Report

Transcript SQ_Curvatura_2012

Facoltà di Ingegneria
Reprojection of 3D points of Superquadrics
Curvature caught by Kinect IR-depth sensor
to CCD of RGB camera
Mariolino De Cecco, Nicolo Biasi, Ilya Afanasyev
Trento, 2012
21/11/2011
1/20
Content
1.
2.
3.
4.
5.
6.
7.
8.
9.
21/11/2011
Kinect installation.
Kinect calibration.
Kinect outputs.
MATLAB Preprocessing Kinect data.
MATLAB Inputs.
SQ Curvature Software.
Tests.
Results.
Links.
2/20
Kinect installation
1st attempt
1. OpenNI backend:
1.
2.
3.
4.
5.
21/11/2011
Nicolas Burrus software [1]: Kinect RGBDemo v0.6.1. -> supports
OpenNI/Nite backends [2] and has the experimental infrared
support with OpenNI (still buggy) -> I tried to check this work for
OpenNI backend under Windows 64bit.
Install Sensor Kinect drivers under Windows 32 bit [3] and
OpenNI/Nite modules (Win32) [2] according to the instruction [4]
and verified that they work properly.
Use RGB-D Capture [1] to grab Kinect RGB and IR images with
intensity.raw and depth.raw files. -> the software doesn’t grab IR
images!! -> only RGB image, intensity.raw, depth.raw and
calibration file (calibration.yml without distortion parameters)!!
“calibrate-openni-intrinsics --pattern-size 0.0405 grab1
calibration.yml” -> gives “openni_calibration.yml” with Intrinsic
matrix and distortion coefficients for Kinect RGB camera !!
“calibrate-openni-depth.exe --pattern-size 0.0405 grab1” gives
partly processed figures with a message about errors.
3/20
The comparison of Kinect calibration results for
- Libfreenect backend (under OS Linux / Ubuntu 10.10 - 32 bit)
- OpenNI backend (under OS Windows 32bit)
Libfreenect backend
23/11/2011
The same figures of Intrinsic
Matrixes for Kinect RGB and
Depth Cameras
OpenNI backend
The Depth Camera Calibration
for OpenNI backend is
NOT available!!!
-
The comparison of Kinect calibration results for
- Libfreenect backend (under OS Linux / Ubuntu 10.10 - 32 bit)
- OpenNI backend (under OS Windows 32bit)
Libfreenect backend
23/11/2011
There is NO extrinsic mapping
between Kinect Depth and RGB
cameras for OpenNI backend
OpenNI backend
The reprojection of 3D points
from Kinect Depth Camera to
RGB image for OpenNI is NOT
possible!!
Kinect installation
2nd attempt
1. Libfreenect backend (Windows):
1.
2.
3.
4.
5.
21/11/2011
Nicolas Burrus software [1]: Kinect RGBDemo v0.6.1. -> supports
Libfreenect backend [2] and has RGB and infrared support -> I
tried to check the work under Windows 64bit.
Install Xbox NUI Motor drivers under Windows 32 bit [3] and
OpenNI/Nite modules (Win32) [2] according to the instruction [4]
and verified that they work properly.
Use RGB-D Capture [1] to grab Kinect RGB and IR images with
intensity.raw and depth.raw files. -> the software doesn’t grab IR
images!! -> only RGB image, intensity.raw, depth.raw and
calibration file (calibration.yml without distortion paraeters)!!
“calibrate-openni-intrinsics --pattern-size 0.025 grab1
calibration.yml” -> gives “openni_calibration.yml” with Intrinsic
matrix and distortion coefficients for Kinect RGB camera !!
“calibrate-openni-depth.exe --pattern-size 0.025 grab1” gives
partly processed figures with a message about errors.
6/20
Kinect installation
New Idea
1. OpenNI backend:
1.
2.
3.
4.
5.
21/11/2011
Nicolas Burrus software [1]: Kinect RGBDemo v0.6.1. -> supports
OpenNI/Nite backends [2] and has the experimental infrared
support with OpenNI (still buggy) -> I tried to check this work for
OpenNI backend under Windows 64bit.
Install Sensor Kinect drivers under Windows 32 bit [3] and
OpenNI/Nite modules (Win32) [2] according to the instruction [4]
and verified that they work properly.
Use RGB-D Capture [1] to grab Kinect RGB and IR images with
intensity.raw and depth.raw files. -> the software doesn’t grab IR
images!! -> only RGB image, intensity.raw, depth.raw and
calibration file (calibration.yml without distortion paraeters)!!
“calibrate-openni-intrinsics --pattern-size 0.025 grab1
calibration.yml” -> gives “openni_calibration.yml” with Intrinsic
matrix and distortion coefficients for Kinect RGB camera !!
“calibrate-openni-depth.exe --pattern-size 0.025 grab1” gives
partly processed figures with a message about errors.
7/20
5. MATLAB Inputs.
Cube_Curvatura_20110925\
main_reproject.m
-> color.png (480x640 pixels)
-> calibData.mat:
- matrixes of intrinsic
parameters for IR
camera (K_ir) and RGB
camera (K_rgb)
- extrinsic mapping between
ir (depth) and rgb
Kinect camera (R,T)
- distortion coefficients
(kc_ir, kc_rgb)
-> Points.mat (N x 6), where
N – number of points
with (x,y,z,R,G,B) info
21/11/2011
8/20
6. MATLAB Software.
6.1 Elimination of the ground.
RANSAC search of the ground by using the plane equation.
21/11/2011
9/20
6.2 3D Points Reprojection.
Transformation from IR (Depth) to RGB camera reference system:
P_rgb = R * P_ir + T, where R,T - extrinsic mapping between ir and rgb Kinect
cameras; P_rgb, P_ir – points in RGB and IR camera reference systems.
Cube Reprojection without considering distortion (up figures).
The distance from
Kinect to the cube
z = 0.5 m
???
Cube Reprojection with considering distortion (bottom figures).
21/11/2011
Bad
calibration?
10/2
0
6.2 3D Points Reprojection.
Cube and Cylinder Reprojection without considering distortion (up figures).
The distance from
Kinect to the objects
z = 0.6 m
???
Bad
calibration?!
23/11/2011
Cube and Cylinder Reprojection with considering distortion (bottom figures).
11/2
0
6.2 3D Points Reprojection.
Transformation from IR (Depth) to RGB camera reference system:
P_rgb = R * P_ir + T, where R,T - extrinsic mapping between ir and rgb Kinect
cameras; P_rgb, P_ir – points in RGB and IR camera reference systems.
Cube Reprojection with calibration parameters from Nicolo (upper figures).
The distance from
Kinect to the cube
z = 0.5 m
Bad
calibration?!
Cube Reprojection with calibration parameters from Alberto (bottom figures).
21/11/2011
12/2
0
6.2 3D Points Reprojection.
Camera Calibration and 3d Reconstruction [9] for so-called pinhole camera model.
The scene view is formed by projecting 3D points into the image plane using a
perspective transformation.
H
A = K_rgb
R(T) = [R, T]
where
A
R(T)
A
R(T)
- are the coordinates of a 3D point in the world coordinate space.
- are the coordinates of the projection point in pixels.
- matrix of intrinsic parameters (does not depend on the scene viewed).
- a principal point (that is usually at the image center)
- are the focal lengths expressed in pixel-related units.
- the matrix of extrinsic parameters.
Cube Reprojection with calibration parameters from Alberto (bottom figures).
21/11/2011
13/2
0
6.3 RANSAC fitting SQ to 3D data points.
With using Levenberg-Marquardt algorithm of distance minimization from SQ to 3D
points.
Red points – outliers.
Blue points – inliers.
Green points – SQ model.
21/11/2011
14/2
0
6.3 Object structure creation and reprojection on image.
Reprojection of the lines between the 3D points of cube vertexes to CCD of Kinect RGB
camera (figure a) and to the image with reprojected 3D points (figure b). The information
about vertex position was obtained in the previous stage of RANSAC cube pose
estimation.
Red lines – the cube frameworks
Figure a
Figure b
21/11/2011
15/2
0
9.
1.
2.
3.
4.
5.
6.
21/11/2011
References
Nicolas Burrus. Kinect. RGBDemo, calibrate and visualize Kinect
output. // http://nicolas.burrus.name/, 2011.
OpenNI Modules. // www.openni.org,
SensorKinect drivers. // github social coding.
https://github.com/avin2/SensorKinect.
How-to: Successfully install Kinect on Windows (OpenNI and
NITE). // Vangos Pterneas blog:
http://studentguru.gr/b/vangos/archive/2011/01/20/how-tosuccessfully-install-kinect-windows-openni-nite.aspx
Install OpenKinect for Windows 7 and XP. //
http://kinect.dashhacks.com/kinect-guides/2011/01/09/installopenkinect-windows-7-and-xp
Camera Calibration and 3d Reconstruction. // OpenCV (Open
Source Computer Vision) v2.1 documentation:
http://opencv.willowgarage.com/documentation/cpp/camera_calibr
ation_and_3d_reconstruction.html
16/20