Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
disparity-transform.h
Go to the documentation of this file.
1 // Disparity transformation block is responsible to convert stereoscopic depth to disparity data
2 // and vice versa
3 // License: Apache 2.0. See LICENSE file in root directory.
4 // Copyright(c) 2017 Intel Corporation. All Rights Reserved.
5 
6 #pragma once
7 
8 #include "../include/librealsense2/hpp/rs_frame.hpp"
9 #include "../include/librealsense2/hpp/rs_processing.hpp"
10 
11 namespace librealsense
12 {
13 
15  {
16  public:
17  disparity_transform(bool transform_to_disparity);
18 
19  protected:
21 
22  template<typename Tin, typename Tout>
23  void convert(const void* in_data, void* out_data)
24  {
25  static_assert((std::is_arithmetic<Tin>::value), "disparity transform requires numeric type for input data");
26  static_assert((std::is_arithmetic<Tout>::value), "disparity transform requires numeric type for output data");
27 
28  auto in = reinterpret_cast<const Tin*>(in_data);
29  auto out = reinterpret_cast<Tout*>(out_data);
30 
31  //TODO SSE optimize
32  for (auto i = 0; i < _height; i++)
33  for (auto j = 0; j < _width; j++)
34  {
35  float input = *in;
36  if (std::isnormal(input))
37  *out++ = static_cast<Tout>(_d2d_convert_factor / input);
38  else
39  *out++ = 0;
40  in++;
41  }
42  }
43 
44  private:
45  void update_transformation_profile(const rs2::frame& f);
46 
47  void on_set_mode(bool to_disparity);
48 
49  bool _transform_to_disparity;
50  rs2::stream_profile _source_stream_profile;
51  rs2::stream_profile _target_stream_profile;
52  bool _update_target;
53  bool _stereoscopic_depth;
54  float _focal_lenght_mm;
55  float _stereo_baseline_mm;
56  float _d2d_convert_factor;
57  size_t _width, _height;
58  size_t _bpp;
59  };
60 }
void convert(const void *in_data, void *out_data)
Definition: disparity-transform.h:23
Definition: rs_frame.hpp:21
Definition: rs_frame.hpp:202
disparity_transform(bool transform_to_disparity)
Definition: backend.h:351
Definition: synthetic-stream.h:41
Definition: algo.h:16
Definition: rs_processing.hpp:13
Definition: disparity-transform.h:14
rs2::frame prepare_target_frame(const rs2::frame &f, const rs2::frame_source &source)