libvisiontransfer  6.4.0
README.md
1 Vision Transfer Library 6.4.0
2 -----------------------------
3 
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 SceneScan sensor systems.
7 However, the library also provides functionality for transmitting image
8 pairs. It can thus be used for emulating SceneScan when performing
9 systems development, or for transmitting image data to SceneScan when
10 using network image input.
11 
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.
16 
17 When receiving data from SceneScan, the first image of an image pair is
18 typically the rectified image of the left camera, with a bit depth of 8
19 or 12 bits. The second image is typically a disparity map with subpixel
20 resolution, which is transmitted as a 12-bit image. Each value in the
21 disparity map has to be divided by 16 in order to receive disparities
22 at the correct scale.
23 
24 There exist three possible ways for receiving and transmitting image
25 pairs:
26 
27 * `visiontransfer::AsyncTransfer` allows for the asynchronous reception
28  or transmission of image pairs. This class creates one or more threads
29  that handle all network communication.
30 
31 * `visiontransfer::ImageTransfer` opens up a network socket for sending
32  and receiving image pairs. This class is single-threaded and will thus
33  block when receiving or transmitting data.
34 
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
38  yourself.
39 
40 
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`.
47 
48 A separate network protocol is used for reading and writing device
49 parameters. For SceneScan devices, this protocol is implemented by
50 `visiontransfer::SceneScanParameters`. Any parameters 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.
53 
54 The library further includes the class `visiontransfer::Reconstruct3D`,
55 which can be used for transforming a received disparity map into a set
56 of 3D points.
57 
58 Available Examples
59 ------------------
60 
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 
70 [Changelog](CHANGELOG.md)
Nerian Vision Technologies