Open3D (C++ API)  0.18.0
Loading...
Searching...
No Matches
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
13namespace open3d {
14namespace visualization {
15namespace rendering {
16
19public:
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
86private:
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
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