Open3D (C++ API)
Data Structures | Functions
open3d::color_map Namespace Reference

Data Structures

class  ColorMapOptimizationJacobian
 
class  ColorMapOptimizationOption
 
class  ImageWarpingField
 

Functions

void ColorMapOptimization (geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::RGBDImage >> &images_rgbd, camera::PinholeCameraTrajectory &camera, const ColorMapOptimizationOption &option)
 
template<typename VecInTypeDouble , typename VecInTypeInt , typename MatOutType , typename VecOutType >
std::tuple< MatOutType, VecOutType, double > ComputeJTJandJTrNonRigid (std::function< void(int, VecInTypeDouble &, double &, VecInTypeInt &)> f, int iteration_num, int nonrigidval, bool verbose)
 
template std::tuple< Eigen::MatrixXd, Eigen::VectorXd, double > ComputeJTJandJTrNonRigid (std::function< void(int, Eigen::Vector14d &, double &, Eigen::Vector14i &)> f, int iteration_num, int nonrigidval, bool verbose)
 
std::tuple< float, float, float > Project3DPointAndGetUVDepth (const Eigen::Vector3d X, const camera::PinholeCameraTrajectory &camera, int camid)
 
std::tuple< std::vector< std::vector< int > >, std::vector< std::vector< int > > > CreateVertexAndImageVisibility (const geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::Image >> &images_depth, const std::vector< std::shared_ptr< geometry::Image >> &images_mask, const camera::PinholeCameraTrajectory &camera, double maximum_allowable_depth, double depth_threshold_for_visiblity_check)
 
template<typename T >
std::tuple< bool, T > QueryImageIntensity (const geometry::Image &img, const Eigen::Vector3d &V, const camera::PinholeCameraTrajectory &camera, int camid, int ch, int image_boundary_margin)
 
template<typename T >
std::tuple< bool, T > QueryImageIntensity (const geometry::Image &img, const ImageWarpingField &field, const Eigen::Vector3d &V, const camera::PinholeCameraTrajectory &camera, int camid, int ch, int image_boundary_margin)
 
void SetProxyIntensityForVertex (const geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::Image >> &images_gray, const std::vector< ImageWarpingField > &warping_field, const camera::PinholeCameraTrajectory &camera, const std::vector< std::vector< int >> &visiblity_vertex_to_image, std::vector< double > &proxy_intensity, int image_boundary_margin)
 
void SetProxyIntensityForVertex (const geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::Image >> &images_gray, const camera::PinholeCameraTrajectory &camera, const std::vector< std::vector< int >> &visiblity_vertex_to_image, std::vector< double > &proxy_intensity, int image_boundary_margin)
 
void SetGeometryColorAverage (geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::Image >> &images_color, const camera::PinholeCameraTrajectory &camera, const std::vector< std::vector< int >> &visiblity_vertex_to_image, int image_boundary_margin)
 
void SetGeometryColorAverage (geometry::TriangleMesh &mesh, const std::vector< std::shared_ptr< geometry::Image >> &images_color, const std::vector< ImageWarpingField > &warping_fields, const camera::PinholeCameraTrajectory &camera, const std::vector< std::vector< int >> &visiblity_vertex_to_image, int image_boundary_margin)
 

Function Documentation

◆ ColorMapOptimization()

void open3d::color_map::ColorMapOptimization ( geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::RGBDImage >> &  imgs_rgbd,
camera::PinholeCameraTrajectory camera,
const ColorMapOptimizationOption option = ColorMapOptimizationOption() 
)

This is implementation of following paper Q.-Y. Zhou and V. Koltun, Color Map Optimization for 3D Reconstruction with Consumer Depth Cameras, SIGGRAPH 2014

◆ ComputeJTJandJTrNonRigid() [1/2]

template<typename VecInTypeDouble , typename VecInTypeInt , typename MatOutType , typename VecOutType >
std::tuple< MatOutType, VecOutType, double > open3d::color_map::ComputeJTJandJTrNonRigid ( std::function< void(int, VecInTypeDouble &, double &, VecInTypeInt &)>  f,
int  iteration_num,
int  nonrigidval,
bool  verbose = true 
)

Function to compute JTJ and Jtr Input: function pointer f and total number of rows of Jacobian matrix Output: JTJ, JTr, sum of r^2 Note: this function is almost identical to the functions in Utility/Eigen.h/cpp, but this function takes additional multiplication pattern that can produce JTJ having hundreds of rows and columns.

◆ ComputeJTJandJTrNonRigid() [2/2]

template std::tuple<Eigen::MatrixXd, Eigen::VectorXd, double> open3d::color_map::ComputeJTJandJTrNonRigid ( std::function< void(int, Eigen::Vector14d &, double &, Eigen::Vector14i &)>  f,
int  iteration_num,
int  nonrigidval,
bool  verbose 
)

◆ CreateVertexAndImageVisibility()

std::tuple< std::vector< std::vector< int > >, std::vector< std::vector< int > > > open3d::color_map::CreateVertexAndImageVisibility ( const geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::Image >> &  images_depth,
const std::vector< std::shared_ptr< geometry::Image >> &  images_mask,
const camera::PinholeCameraTrajectory camera,
double  maximum_allowable_depth,
double  depth_threshold_for_visiblity_check 
)

◆ Project3DPointAndGetUVDepth()

std::tuple< float, float, float > open3d::color_map::Project3DPointAndGetUVDepth ( const Eigen::Vector3d  X,
const camera::PinholeCameraTrajectory camera,
int  camid 
)
inline

◆ QueryImageIntensity() [1/2]

template<typename T >
std::tuple< bool, T > open3d::color_map::QueryImageIntensity ( const geometry::Image img,
const Eigen::Vector3d &  V,
const camera::PinholeCameraTrajectory camera,
int  camid,
int  ch,
int  image_boundary_margin 
)

◆ QueryImageIntensity() [2/2]

template<typename T >
std::tuple< bool, T > open3d::color_map::QueryImageIntensity ( const geometry::Image img,
const ImageWarpingField field,
const Eigen::Vector3d &  V,
const camera::PinholeCameraTrajectory camera,
int  camid,
int  ch,
int  image_boundary_margin 
)

◆ SetGeometryColorAverage() [1/2]

void open3d::color_map::SetGeometryColorAverage ( geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::Image >> &  images_color,
const camera::PinholeCameraTrajectory camera,
const std::vector< std::vector< int >> &  visiblity_vertex_to_image,
int  image_boundary_margin 
)

◆ SetGeometryColorAverage() [2/2]

void open3d::color_map::SetGeometryColorAverage ( geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::Image >> &  images_color,
const std::vector< ImageWarpingField > &  warping_fields,
const camera::PinholeCameraTrajectory camera,
const std::vector< std::vector< int >> &  visiblity_vertex_to_image,
int  image_boundary_margin 
)

◆ SetProxyIntensityForVertex() [1/2]

void open3d::color_map::SetProxyIntensityForVertex ( const geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::Image >> &  images_gray,
const std::vector< ImageWarpingField > &  warping_field,
const camera::PinholeCameraTrajectory camera,
const std::vector< std::vector< int >> &  visiblity_vertex_to_image,
std::vector< double > &  proxy_intensity,
int  image_boundary_margin 
)

◆ SetProxyIntensityForVertex() [2/2]

void open3d::color_map::SetProxyIntensityForVertex ( const geometry::TriangleMesh mesh,
const std::vector< std::shared_ptr< geometry::Image >> &  images_gray,
const camera::PinholeCameraTrajectory camera,
const std::vector< std::vector< int >> &  visiblity_vertex_to_image,
std::vector< double > &  proxy_intensity,
int  image_boundary_margin 
)