Volume Cartographer 2.27.0
|
Generate a Texture by taking the discrete integral (summation) of the neighborhood adjacent to a point. More...
#include <vc/texturing/IntegralTexture.hpp>
Public Types | |
enum class | WeightMethod { None = 0 , Linear , ExpoDiff } |
Weighting Methods. More... | |
enum class | LinearWeightDirection { Positive = 0 , Negative } |
Linear weight direction. More... | |
enum class | ExpoDiffBaseMethod { Mean = 0 , Mode , Manual } |
Exponential difference base calculation method. More... | |
![]() | |
using | Pointer = std::shared_ptr< TexturingAlgorithm > |
using | Texture = std::vector< cv::Mat > |
Public Member Functions | |
void | setGenerator (NeighborhoodGenerator::Pointer g) |
Set the Neighborhood generator. More... | |
void | setClampValuesToMax (bool b) |
When enabled, clamp neighborhood intensities to the value specified by setClampMax() More... | |
auto | clampValuesToMax () const -> bool |
When enabled, clamp neighborhood intensities to the value specified by setClampMax() More... | |
void | setClampMax (std::uint16_t m) |
The maximum intensity value allowed in neighborhood prior to integration. More... | |
auto | clampMax () const -> std::uint16_t |
The maximum intensity value allowed in neighborhood prior to integration. More... | |
void | setWeightMethod (WeightMethod w) |
Set the weighting method. More... | |
auto | weightMethod () const -> WeightMethod |
Set the weighting method. More... | |
void | setLinearWeightDirection (LinearWeightDirection w) |
Set the linear weight direction. More... | |
auto | linearWeightDirection () const -> LinearWeightDirection |
Set the linear weight direction. More... | |
void | setExponentialDiffExponent (int e) |
Set the weighting exponent used by Exponential Difference weighting. | |
auto | exponentialDiffExponent () const -> int |
Set the weighting exponent used by Exponential Difference weighting. More... | |
void | setExponentialDiffBaseMethod (ExpoDiffBaseMethod m) |
Set the method used to calculate the Exponential Difference base value. More... | |
auto | exponentialDiffBaseMethod () const -> ExpoDiffBaseMethod |
Set the method used to calculate the Exponential Difference base value. More... | |
void | setExponentialDiffBaseValue (double b) |
Set the base value for Exponential Difference weighting. | |
auto | exponentialDiffBaseValue () const -> double |
Set the base value for Exponential Difference weighting. More... | |
void | setExponentialDiffSuppressBelowBase (bool b) |
When enabled, do not integrate intensity values below the base value. More... | |
auto | exponentialDiffSuppressBelowBase () const -> bool |
When enabled, do not integrate intensity values below the base value. More... | |
auto | compute () -> Texture override |
Compute the Texture. More... | |
![]() | |
virtual | ~TexturingAlgorithm ()=default |
void | setPerPixelMap (PerPixelMap::Pointer ppm) |
Set the input PerPixelMap. | |
void | setVolume (Volume::Pointer vol) |
Set the input Volume. | |
virtual auto | compute () -> Texture=0 |
Compute the Texture. More... | |
auto | getTexture () -> Texture |
Get the generated Texture. | |
auto | progressIterations () const -> std::size_t override |
Returns the maximum progress value. More... | |
virtual std::size_t | progressIterations () const =0 |
Private Member Functions | |
void | setup_weights_ () |
auto | apply_weights_ (NDArray< double > &n) -> NDArray< double > |
void | setup_linear_weights_ () |
auto | apply_linear_weights_ (NDArray< double > &n) -> NDArray< double > |
void | setup_expodiff_weights_ () |
auto | expodiff_intersection_pts_ () -> std::vector< std::uint16_t > |
auto | expodiff_mean_base_ () -> double |
auto | expodiff_mode_base_ () -> double |
auto | apply_expodiff_weights_ (NDArray< double > &n) const -> NDArray< double > |
Private Attributes | |
NeighborhoodGenerator::Pointer | gen_ |
bool | clampToMax_ {false} |
std::uint16_t | clampMax_ {std::numeric_limits<uint16_t>::max()} |
WeightMethod | weight_ {WeightMethod::None} |
LinearWeightDirection | linearWeight_ {LinearWeightDirection::Positive} |
NDArray< double > | linearWeights_ {1} |
int | expoDiffExponent_ {2} |
ExpoDiffBaseMethod | expoDiffBaseMethod_ {ExpoDiffBaseMethod::Mean} |
double | expoDiffManualBase_ {0} |
double | expoDiffBase_ {0} |
bool | suppressBelowBase_ {true} |
using | Pointer = std::shared_ptr< IntegralTexture > |
static auto | New () -> Pointer |
IntegralTexture ()=default | |
~IntegralTexture () override=default | |
IntegralTexture (IntegralTexture &)=default | |
IntegralTexture (IntegralTexture &&)=default | |
auto | operator= (const IntegralTexture &) -> IntegralTexture &=default |
auto | operator= (IntegralTexture &&) -> IntegralTexture &=default |
Additional Inherited Members | |
![]() | |
Signal | progressStarted |
Signal< std::size_t > | progressUpdated |
Signal | progressComplete |
![]() | |
TexturingAlgorithm ()=default | |
TexturingAlgorithm (TexturingAlgorithm &)=default | |
TexturingAlgorithm (TexturingAlgorithm &&)=default | |
auto | operator= (const TexturingAlgorithm &) -> TexturingAlgorithm &=default |
auto | operator= (TexturingAlgorithm &&) -> TexturingAlgorithm &=default |
![]() | |
PerPixelMap::Pointer | ppm_ |
Volume::Pointer | vol_ |
Texture | result_ |
Generate a Texture by taking the discrete integral (summation) of the neighborhood adjacent to a point.
Definition at line 18 of file IntegralTexture.hpp.
using volcart::texturing::IntegralTexture::Pointer = std::shared_ptr<IntegralTexture> |
Pointer type
Definition at line 59 of file IntegralTexture.hpp.
|
strong |
Exponential difference base calculation method.
The method by which the base value is calculated for Exponential Difference weighting:
Definition at line 55 of file IntegralTexture.hpp.
|
strong |
Linear weight direction.
Setting the weight option applies a linear weight factor to the intensity values of the neighborhood. The options are named according to which values along a point's surface normal are favored.
The weight factors for the options are as follows:
Definition at line 44 of file IntegralTexture.hpp.
|
strong |
Weighting Methods.
The method by which neighborhoods are weighted prior to integration:
Definition at line 31 of file IntegralTexture.hpp.
|
default |
Default constructor
|
overridedefault |
Default destructor
|
default |
Default copy constructor
|
default |
Default move constructor
|
private |
Apply the expo diff weights to a neighborhood
|
private |
Apply the linear weights vector to a neighborhood
|
private |
Apply the selected weighting method
auto volcart::texturing::IntegralTexture::clampMax | ( | ) | const -> std::uint16_t |
The maximum intensity value allowed in neighborhood prior to integration.
Ignored if setClampValuesToMax() is set to false
Default: std::numeric_limits<std::uint16_t>::max()
auto volcart::texturing::IntegralTexture::clampValuesToMax | ( | ) | const -> bool |
When enabled, clamp neighborhood intensities to the value specified by setClampMax()
Note: Clamping is performed prior to integration of the neighborhood
|
overridevirtual |
Compute the Texture.
Implements volcart::texturing::TexturingAlgorithm.
|
private |
Get the list of intensities on the surface of the mesh
|
private |
Calculate the mean base value
|
private |
Calculate the mode base value
auto volcart::texturing::IntegralTexture::exponentialDiffBaseMethod | ( | ) | const -> ExpoDiffBaseMethod |
Set the method used to calculate the Exponential Difference base value.
Default: Mean
auto volcart::texturing::IntegralTexture::exponentialDiffBaseValue | ( | ) | const -> double |
Set the base value for Exponential Difference weighting.
auto volcart::texturing::IntegralTexture::exponentialDiffExponent | ( | ) | const -> int |
Set the weighting exponent used by Exponential Difference weighting.
auto volcart::texturing::IntegralTexture::exponentialDiffSuppressBelowBase | ( | ) | const -> bool |
When enabled, do not integrate intensity values below the base value.
For exponential difference weighting only.
Default: True
auto volcart::texturing::IntegralTexture::linearWeightDirection | ( | ) | const -> LinearWeightDirection |
Set the linear weight direction.
Default: Positive
|
static |
Make shared pointer
|
default |
Default copy operator
|
default |
Default move operator
void volcart::texturing::IntegralTexture::setClampMax | ( | std::uint16_t | m | ) |
The maximum intensity value allowed in neighborhood prior to integration.
Ignored if setClampValuesToMax() is set to false
Default: std::numeric_limits<std::uint16_t>::max()
void volcart::texturing::IntegralTexture::setClampValuesToMax | ( | bool | b | ) |
When enabled, clamp neighborhood intensities to the value specified by setClampMax()
Note: Clamping is performed prior to integration of the neighborhood
void volcart::texturing::IntegralTexture::setExponentialDiffBaseMethod | ( | ExpoDiffBaseMethod | m | ) |
Set the method used to calculate the Exponential Difference base value.
Default: Mean
void volcart::texturing::IntegralTexture::setExponentialDiffSuppressBelowBase | ( | bool | b | ) |
When enabled, do not integrate intensity values below the base value.
For exponential difference weighting only.
Default: True
void volcart::texturing::IntegralTexture::setGenerator | ( | NeighborhoodGenerator::Pointer | g | ) |
Set the Neighborhood generator.
This class supports generators of dimension >= 1
void volcart::texturing::IntegralTexture::setLinearWeightDirection | ( | LinearWeightDirection | w | ) |
Set the linear weight direction.
Default: Positive
|
private |
Setup the expo diff weights
|
private |
Setup the linear weights vector
|
private |
Setup the selected weighting method
void volcart::texturing::IntegralTexture::setWeightMethod | ( | WeightMethod | w | ) |
Set the weighting method.
Default: None
auto volcart::texturing::IntegralTexture::weightMethod | ( | ) | const -> WeightMethod |
Set the weighting method.
Default: None
|
private |
Maximum allowed value in neighborhood when clamping is enabled
Definition at line 183 of file IntegralTexture.hpp.
|
private |
Enable/Disable clamping to maximum value
Definition at line 180 of file IntegralTexture.hpp.
|
private |
Exponential diff base value that is used
Definition at line 216 of file IntegralTexture.hpp.
|
private |
Exponential diff base calculation method
Definition at line 210 of file IntegralTexture.hpp.
|
private |
Exponential diff exponent
Definition at line 207 of file IntegralTexture.hpp.
|
private |
Manually specified exponential diff base
Definition at line 213 of file IntegralTexture.hpp.
|
private |
Neighborhood generator
Definition at line 177 of file IntegralTexture.hpp.
|
private |
Linear weighting direction
Definition at line 195 of file IntegralTexture.hpp.
|
private |
Linear weights vector
Definition at line 198 of file IntegralTexture.hpp.
|
private |
Whether or not to ignore values below the base value
Definition at line 219 of file IntegralTexture.hpp.
|
private |
Selected Weighting method
Definition at line 186 of file IntegralTexture.hpp.