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 
32  const float round = fp ? 0.5f : 0.f;
33 
34  float input{};
35  //TODO SSE optimize
36  for (auto i = 0; i < _height; i++)
37  for (auto j = 0; j < _width; j++)
38  {
39  input = *in;
40  if (std::isnormal(input))
41  *out++ = static_cast<Tout>((_d2d_convert_factor / input)+round);
42  else
43  *out++ = 0;
44  in++;
45  }
46  }
47 
48  private:
49  void update_transformation_profile(const rs2::frame& f);
50 
51  void on_set_mode(bool to_disparity);
52 
53  bool _transform_to_disparity;
54  rs2::stream_profile _source_stream_profile;
55  rs2::stream_profile _target_stream_profile;
56  bool _update_target;
57  bool _stereoscopic_depth;
58  float _focal_lenght_mm;
59  float _stereo_baseline; // in meters
60  float _depth_units;
61  float _d2d_convert_factor;
62  size_t _width, _height;
63  size_t _bpp;
64  };
65 }
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:380
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)