Open3D (C++ API)  0.17.0
ColorGrading.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2023 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <Eigen/Core>
11 #include <cstdint>
12 
13 namespace open3d {
14 namespace visualization {
15 namespace rendering {
16 
19 public:
21  enum class Quality : std::uint8_t { kLow, kMedium, kHigh, kUltra };
22 
23  enum class ToneMapping : std::uint8_t {
24  kLinear = 0,
25  kAcesLegacy = 1,
26  kAces = 2,
27  kFilmic = 3,
28  kUchimura = 4,
29  kReinhard = 5,
30  kDisplayRange = 6,
31  };
32 
34 
35  void SetQuality(Quality q);
36  Quality GetQuality() const { return quality_; }
37 
38  void SetToneMapping(ToneMapping algorithm);
39  ToneMapping GetToneMapping() const { return tonemapping_; }
40 
41  void SetTemperature(float temperature);
42  float GetTemperature() const { return temperature_; }
43 
44  void SetTint(float tint);
45  float GetTint() const { return tint_; }
46 
47  void SetContrast(float contrast);
48  float GetContrast() const { return contrast_; }
49 
50  void SetVibrance(float vibrance);
51  float GetVibrance() const { return vibrance_; }
52 
53  void SetSaturation(float saturation);
54  float GetSaturation() const { return saturation_; }
55 
56  void SetChannelMixer(const Eigen::Vector3f& red,
57  const Eigen::Vector3f& green,
58  const Eigen::Vector3f& blue);
59  Eigen::Vector3f GetMixerRed() const { return mixer_red_; }
60  Eigen::Vector3f GetMixerGreen() const { return mixer_green_; }
61  Eigen::Vector3f GetMixerBlue() const { return mixer_blue_; }
62 
63  void SetShadowMidtoneHighlights(const Eigen::Vector4f& shadows,
64  const Eigen::Vector4f& midtones,
65  const Eigen::Vector4f& highlights,
66  const Eigen::Vector4f& ranges);
67  Eigen::Vector4f GetShadows() const { return shadows_; }
68  Eigen::Vector4f GetMidtones() const { return midtones_; }
69  Eigen::Vector4f GetHighlights() const { return highlights_; }
70  Eigen::Vector4f GetRanges() const { return ranges_; }
71 
72  void SetSlopeOffsetPower(const Eigen::Vector3f& slope,
73  const Eigen::Vector3f& offset,
74  const Eigen::Vector3f& power);
75  Eigen::Vector3f GetSlope() const { return slope_; }
76  Eigen::Vector3f GetOffset() const { return offset_; }
77  Eigen::Vector3f GetPower() const { return power_; }
78 
79  void SetCurves(const Eigen::Vector3f& shadow_gamma,
80  const Eigen::Vector3f& midpoint,
81  const Eigen::Vector3f& highlight_scale);
82  Eigen::Vector3f GetShadowGamma() const { return shadow_gamma_; }
83  Eigen::Vector3f GetMidpoint() const { return midpoint_; }
84  Eigen::Vector3f GetHighlightScale() const { return highlight_scale_; }
85 
86 private:
87  Quality quality_;
88  ToneMapping tonemapping_;
89 
90  float temperature_ = 0.f;
91  float tint_ = 0.f;
92  float contrast_ = 1.f;
93  float vibrance_ = 1.f;
94  float saturation_ = 1.f;
95 
96  Eigen::Vector3f mixer_red_ = {1.f, 0.f, 0.f};
97  Eigen::Vector3f mixer_green_ = {0.f, 1.f, 0.f};
98  Eigen::Vector3f mixer_blue_ = {0.f, 0.f, 1.f};
99 
100  Eigen::Vector4f shadows_ = {1.f, 1.f, 1.f, 0.f};
101  Eigen::Vector4f midtones_ = {1.f, 1.f, 1.f, 0.f};
102  Eigen::Vector4f highlights_ = {1.f, 1.f, 1.f, 0.f};
103  Eigen::Vector4f ranges_ = {0.f, 0.333f, 0.55f, 1.f};
104 
105  Eigen::Vector3f slope_ = {1.f, 1.f, 1.f};
106  Eigen::Vector3f offset_ = {0.f, 0.f, 0.f};
107  Eigen::Vector3f power_ = {1.f, 1.f, 1.f};
108 
109  Eigen::Vector3f shadow_gamma_ = {1.f, 1.f, 1.f};
110  Eigen::Vector3f midpoint_ = {1.f, 1.f, 1.f};
111  Eigen::Vector3f highlight_scale_ = {1.f, 1.f, 1.f};
112 };
113 
114 } // namespace rendering
115 } // namespace visualization
116 } // namespace open3d
Manages.
Definition: ColorGrading.h:18
Eigen::Vector4f GetHighlights() const
Definition: ColorGrading.h:69
float GetVibrance() const
Definition: ColorGrading.h:51
Eigen::Vector4f GetMidtones() const
Definition: ColorGrading.h:68
void SetSaturation(float saturation)
Definition: ColorGrading.cpp:35
void SetSlopeOffsetPower(const Eigen::Vector3f &slope, const Eigen::Vector3f &offset, const Eigen::Vector3f &power)
Definition: ColorGrading.cpp:58
Eigen::Vector3f GetOffset() const
Definition: ColorGrading.h:76
ToneMapping GetToneMapping() const
Definition: ColorGrading.h:39
Eigen::Vector3f GetShadowGamma() const
Definition: ColorGrading.h:82
Eigen::Vector3f GetPower() const
Definition: ColorGrading.h:77
Eigen::Vector4f GetRanges() const
Definition: ColorGrading.h:70
Eigen::Vector3f GetMixerGreen() const
Definition: ColorGrading.h:60
void SetVibrance(float vibrance)
Definition: ColorGrading.cpp:33
void SetToneMapping(ToneMapping algorithm)
Definition: ColorGrading.cpp:21
void SetShadowMidtoneHighlights(const Eigen::Vector4f &shadows, const Eigen::Vector4f &midtones, const Eigen::Vector4f &highlights, const Eigen::Vector4f &ranges)
Definition: ColorGrading.cpp:47
void SetTint(float tint)
Definition: ColorGrading.cpp:29
void SetContrast(float contrast)
Definition: ColorGrading.cpp:31
Eigen::Vector3f GetSlope() const
Definition: ColorGrading.h:75
Eigen::Vector3f GetMixerRed() const
Definition: ColorGrading.h:59
void SetChannelMixer(const Eigen::Vector3f &red, const Eigen::Vector3f &green, const Eigen::Vector3f &blue)
Definition: ColorGrading.cpp:39
float GetSaturation() const
Definition: ColorGrading.h:54
Eigen::Vector3f GetMixerBlue() const
Definition: ColorGrading.h:61
float GetContrast() const
Definition: ColorGrading.h:48
ColorGradingParams(Quality q, ToneMapping algorithm)
Definition: ColorGrading.cpp:16
Eigen::Vector4f GetShadows() const
Definition: ColorGrading.h:67
void SetQuality(Quality q)
Definition: ColorGrading.cpp:19
void SetTemperature(float temperature)
Definition: ColorGrading.cpp:25
Quality
Quality level of color grading operations.
Definition: ColorGrading.h:21
void SetCurves(const Eigen::Vector3f &shadow_gamma, const Eigen::Vector3f &midpoint, const Eigen::Vector3f &highlight_scale)
Definition: ColorGrading.cpp:66
Quality GetQuality() const
Definition: ColorGrading.h:36
Eigen::Vector3f GetMidpoint() const
Definition: ColorGrading.h:83
float GetTemperature() const
Definition: ColorGrading.h:42
float GetTint() const
Definition: ColorGrading.h:45
Eigen::Vector3f GetHighlightScale() const
Definition: ColorGrading.h:84
int offset
Definition: FilePCD.cpp:45
Definition: PinholeCameraIntrinsic.cpp:16