2014-10-27

Kinect V1 with diopters


Intended use

My CAD program of choice is Geomagic Design (started out as Alibre Design). Since the last major release it can import meshes (and even directly use 3D scanners of the same manufacturer) and convert these into solid geometries.
I already used these features heavily for 3D modelled meshes of organic, artistic parts.
What I want to do is use it's advanced features of reconstructing technical parts with flat surfaces, right angles and precise holes with an affordable 3D scanner.
So based on the promise that Skanect will support the Kinect V2 on the day of official sale, I preordered one with Microsoft half a year ago.

Current status 

Skanect still didn't deliver the promised Kinect V2 support and i am tired of waiting with my Kinect V2 in hand.
Thus I got myself a used XBox 360 Kinect V1 and am testing Skanect on MacOS with it to get some first experiences with 3D scanning using this device. Hopefully these will help me get better results with the Kinect V2 later.

...the 3D scan results are terrible so far.
Small object (size of a hand) are not much more then a blob with heavily rounded features.
It may be useful for object the size of a human, maybe barely useful for entire faces as long as dimentional accuracy is not important (no masks that actually fit well) but not for smaller objects.
I'm looking into hacks that may improve this by reducing the minimum focus distance and thus concentrating the low resolution fully onto the  (small) object.

+3 diopters didn't help at all.

Stock Kinect

Minimum focus distance in normal mode: 80cm  (1/0.8m = 1.25 dioptrien)
Minimum focus distance in near mode: 40cm  (1/0.4m = 2.5 dioptrien)
Near Mode is Kinect V1 for Windows only
Accuracy: 2-3mm in a distance of 1.5m
IR resolution: 640x480 but only 1 depth value per cluster.

Kinect V2 has a slightly lower IR resolution (only the color camera is FullHD) but 1 depth value per pixel.

Reading glasses hack

Literary taping +2.5 reading glasses (technically a dioptre[UK]/diopter[EN]) in front of IR-projector and IR-camera seem to reduce the minimum focus distance from 40cm to 35cm. Object appear 1.2x larger. (Based on the report in the thread below)

Normal Mode:
+2.0 result in 1/(1.25+2.0)  = 31cm  minimum focus distance, 1/2.0=50m maximum focus distance
+2.5 result in 1/(1.25+2.5)  = 27cm  minimum focus distance, 1/2.5=40cm maximum focus distance
+3.0 result in 1/(1.25+3.0)  = 24cm  minimum focus distance, 1/3.0=33cm maximum focus distance

Near Mode: (Kinect V1 for Windows only)
+2.0 result in 1/(2.5+2.0)  = 22cm  minimum focus distance, 1/2.0=50m maximum focus distance
+2.5 result in 1/(2.5+2.5)  = 20cm  minimum focus distance, 1/2.5=40cm maximum focus distance
+3.0 result in 1/(2.5+3.0)  = 18cm  minimum focus distance, 1/3.0=33cm maximum focus distance

I know that these also exist in higher quality as "near filters" for macro photography. I even used one of them on the Raspberry Pi camera to make it focus on closer objects to mount it on a Makibox 3D printer.

Single lens diopters cause color-halos.
Dual-lens diopters, called achromatic lenses correct these issues. (Obviously made for visible light while we are working in infrared)  There are achromatic lenses for the infrared spectrum.

You should not use a diopter stronger then 20% of the focal length of your lens.
The Kinect IR lens has a field of view of 57.8°, putting it in the 40mm ballpark.
So everything below +4.0 should be fine.

Links


Settings for ReconstructMe 

(I'm using Skanect where I can't use them)


camera_size_x: 640
camera_size_y: 480
camera_fx: 514.16
camera_fy: 514.16
camera_px: 320
camera_py: 240
camera_near: 100
camera_far: 2000
volume_size: 512
volume_min {
x: -250
y: -250
z: 400
}
volume_max {
x: 250
y: 250
z: 900
}
integrate_truncation: 10
integrate_max_weight: 64
icp_max_iter: 20
icp_max_dist2: 200
icp_min_cos_angle: 0.9
smooth_normals: false
disable_optimizations: false
extract_step_fact: 0.5

Kommentar veröffentlichen