1 Vision Transfer Library 10.0.0
2 -----------------------------
4 The given library provides functionally for receiving and transmitting
5 image pairs over a computer network. The intended use for this library
6 is to receive output data from Nerian's 3D camera systems. However, the
7 library also provides functionality for transmitting image data. It can
8 thus be used for emulating a camera system when performing systems
9 development, or for transmitting image data to Nerian's SceneScan
10 system when using network image input.
12 Images can be transferred with a bit depth of either 8 or 12 bits. When
13 receiving 12-bit images, the library inflates the images internally to
14 16 bits, in order to allow for more efficient processing. Monochrome
15 and RGB images are supported.
17 When receiving data from a camera system, the first image of an image
18 set is typically the rectified image of the left camera, with a bit
19 depth of 8 or 12 bits. The second image is typically a disparity map
20 with subpixel resolution, which is transmitted as a 12-bit image. Each
21 value in the disparity map has to be divided by 16 in order to receive
22 disparities at the correct scale.
24 There exist three possible ways for receiving and transmitting image
27 * `visiontransfer::AsyncTransfer` allows for the asynchronous reception
28 or transmission of image pairs. This class creates one or more
29 threads that handle all network communication.
31 * `visiontransfer::ImageTransfer` opens up a network socket for sending
32 and receiving image pairs. This class is single-threaded and will
33 thus block when receiving or transmitting data.
35 * `visiontransfer::ImageProtocol` is the most low-level interface. This
36 class allows for the encoding and decoding of image pairs to / from
37 network messages. You will have to handle all network communication
41 In order to discover connected devices on the network, the class
42 `visiontransfer::DeviceEnumeration` can be used, which scans for
43 available devices and returns a list of `visiontransfer::DeviceInfo`
44 objects. Such a `visiontransfer::DeviceInfo` object can be used for
45 instantiating `visiontransfer::ImageTransfer` or
46 `visiontransfer::AsyncTransfer`.
48 A separate network protocol is used for reading and writing device
49 parameters. This protocol is implemented by
50 `visiontransfer::DeviceParameters`. Any parameters that are changed
51 through this protocol will be reset if the device is rebooted or if the
52 user makes a parameter change through the web interface.
54 The library further includes the class `visiontransfer::Reconstruct3D`,
55 which can be used for transforming a received disparity map into a set
61 | File name | Description |
62 |--------------------------------|--------------------------------------------------------------------------------|
63 | `asynctransfer_example.cpp` | Demonstration of asynchroneous transfers with `visiontransfer::AsyncTransfer`. |
64 | `imagetransfer_example.cpp` | Demonstration of synchroneous transfers with `visiontransfer::ImageTransfer`. |
65 | `opencv_example.cpp` | Shows how to convert an ImagePair to OpenCV images. |
66 | `parameter_example.cpp` | Shows how to read and write device parameters. |
67 | `pcl_example.cpp` | Shows how to convert a disparity map to a PCL point cloud |
68 | `server_example.cpp` | Shows how to create a server that acts like a SceneScan device. |
69 | `imu_data_channel_example.cpp` | Shows how to receive IMU data. |
71 [Changelog](CHANGELOG.md)