The spica renderer
Main Page
Modules
Classes
Files
File List
sources
core
tmo.h
1
#ifdef _MSC_VER
2
#pragma once
3
#endif
4
5
#ifndef _SPICA_TMO_H_
6
#define _SPICA_TMO_H_
7
8
#include "core/core.hpp"
9
10
#include "core/common.h"
11
12
namespace
spica {
13
16
class
SPICA_EXPORTS
Tmo
{
17
public
:
18
Tmo
() {}
19
virtual
~
Tmo
() {}
20
21
virtual
Image
apply(
const
spica::Image
& image)
const
= 0;
22
};
23
26
class
SPICA_EXPORTS
GammaTmo
:
public
Tmo
{
27
private
:
28
double
_gamma;
29
30
public
:
31
explicit
GammaTmo
(
double
gamma);
32
~
GammaTmo
();
33
Image
apply(
const
Image
& image)
const override
;
34
};
35
36
39
class
SPICA_EXPORTS
ReinhardTmo
:
public
Tmo
{
40
private
:
41
double
_alpha;
42
43
public
:
44
explicit
ReinhardTmo
(
double
alpha = 0.18);
45
~
ReinhardTmo
();
46
Image
apply(
const
Image
& image)
const override
;
47
48
private
:
49
static
double
whitePoint(
const
Image
& image);
50
};
51
54
class
SPICA_EXPORTS
DragoTmo
:
public
Tmo
{
55
private
:
56
double
_Ldmax;
57
double
_p;
58
59
public
:
60
explicit
DragoTmo
(
double
Ldmax=100.0,
double
p=0.85);
61
~
DragoTmo
();
62
Image
apply(
const
Image
& image)
const override
;
63
};
64
67
class
SPICA_EXPORTS
DurandTMO
:
public
Tmo
{
68
private
:
69
double
_sigmaSpace;
70
double
_sigmaColor;
71
double
_targetContrast;
72
73
public
:
74
explicit
DurandTMO
(
double
sigmaSpace = 0.02,
75
double
sigmaColor = 0.4,
76
double
targetContrast = 5.0);
77
~
DurandTMO
();
78
Image
apply(
const
Image
& image)
const override
;
79
80
private
:
81
void
birateralSeparation(
const
Image
& L,
double
sigma_s,
double
sigma_r,
Image
* Lbase,
Image
* Ldetail)
const
;
82
};
83
84
}
// namespace spica
85
86
#endif // _SPICA_TMO_H_
spica::GammaTmo
Gamma correction.
Definition:
tmo.h:26
spica::DragoTmo
Drago TMO.
Definition:
tmo.h:54
spica::Image
Image class.
Definition:
image.h:18
spica::Tmo
Base class for tone mapping operators.
Definition:
tmo.h:16
spica::ReinhardTmo
Reinhard TMO.
Definition:
tmo.h:39
spica::DurandTMO
Durand TMO.
Definition:
tmo.h:67
Generated by
1.8.6