CppNCorr
C++ ncorr Digital Image Correlation engine
Loading...
Searching...
No Matches
ncorr.cpp File Reference
#include "ncorr.h"
#include "ncorr/log.h"
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <omp.h>
#include <ostream>
#include <set>
#include <thread>
#include <vector>

Go to the source code of this file.

Classes

struct  ncorr::exact_detail::exact_region_disp
 

Namespaces

namespace  ncorr
 
namespace  ncorr::details
 
namespace  ncorr::legacy_detail
 
namespace  ncorr::exact_detail
 

Typedefs

using ncorr::exact_detail::difference_type = ROI2D::difference_type
 

Functions

Array2D< double > ncorr::details::update_boundary_skip_all (const Array2D< double > &boundary, const Disp2D::nlinfo_interpolator &disp_interp, const ROI2D::difference_type roi_scalefactor)
 
Array2D< double > ncorr::details::update_boundary_skip_invalid (const Array2D< double > &boundary, const Disp2D::nlinfo_interpolator &disp_interp, const ROI2D::difference_type roi_scalefactor, const ROI2D::difference_type roi_height, const ROI2D::difference_type roi_width, const ROI2D::difference_type margin=0)
 
ROI2D ncorr::update (const ROI2D &, const Disp2D &, INTERP, ROI_UPDATE_MODE mode=ROI_UPDATE_MODE::SKIP_ALL)
 
Array2D< double > ncorr::details::matlab_update_boundary (const Array2D< double > &boundary, const Disp2D::nlinfo_interpolator &disp_interp, const ROI2D::difference_type roi_scalefactor, const ROI2D::difference_type size_mask_height, const ROI2D::difference_type size_mask_width, const ROI2D::difference_type radius)
 
ROI2D ncorr::matlab_update_roi (const ROI2D &, const Disp2D &, INTERP, ROI2D::difference_type radius)
 
Array2D< ROI2D::difference_type > & ncorr::details::get_nlinfo_SDA (Array2D< ROI2D::difference_type > &SDA, const ROI2D::region_nlinfo &nlinfo, Array2D< bool > &mask_buf, Array2D< bool > &mask_buf_new)
 
Array2D< ROI2D::difference_typencorr::details::get_ROI_SDA (const ROI2D &roi)
 
Array2D< double > ncorr::details::get_seed_params (const Data2D &data, const ROI2D::region_nlinfo &nlinfo, const disp_nloptimizer &d_nloptimizer, const Array2D< ROI2D::difference_type > &SDA, Array2D< double > &params_buf)
 
bool ncorr::details::analyze_point (const Array2D< double > &queue_params, ROI2D::difference_type p1_new_delta, ROI2D::difference_type p2_new_delta, const ROI2D::region_nlinfo &nlinfo, ROI2D::difference_type roi_scalefactor, const disp_nloptimizer &d_nloptimizer, const Array2D< ROI2D::difference_type > &SDA, std::priority_queue< Array2D< double >, std::vector< Array2D< double > >, std::function< bool(const Array2D< double > &, const Array2D< double > &)> > &queue, Array2D< bool > &A_new_ap, Array2D< double > &params_buf)
 
Data2D ncorr::update (const Data2D &, const Disp2D &, INTERP, ROI_UPDATE_MODE mode=ROI_UPDATE_MODE::SKIP_ALL)
 
Disp2D ncorr::add (const std::vector< Disp2D > &, INTERP)
 
Disp2D ncorr::add_with_rois (const std::vector< Disp2D > &disps, const std::vector< ROI2D > &rois, INTERP interp_type)
 
Disp2D ncorr::legacy_detail::add_with_rois_legacy (const std::vector< Disp2D > &disps, const std::vector< ROI2D > &rois, INTERP interp_type)
 
Array2D< double > ncorr::details::get_centroid (const ROI2D::region_nlinfo &nlinfo)
 
std::pair< std::vector< ROI2D::region_nlinfo >, std::vector< ROI2D::region_nlinfo > > ncorr::details::nlinfo_line_split (const Array2D< double > &direc, const Array2D< double > &origin, ROI2D::difference_type partition_offset, const ROI2D::region_nlinfo &nlinfo, Array2D< ROI2D::difference_type > &partition_diagram, Array2D< bool > &mask_buf)
 
void ncorr::details::nlinfo_contig_expansion (const ROI2D::region_nlinfo &sub_nlinfo, const ROI2D::region_nlinfo &nlinfo, ROI2D::difference_type val, Array2D< ROI2D::difference_type > &A, Array2D< bool > &A_ap)
 
std::pair< std::pair< ROI2D::region_nlinfo, ROI2D::region_nlinfo >, bool > ncorr::details::nlinfo_contig_split (ROI2D::difference_type partition_offset, const ROI2D::region_nlinfo &nlinfo, Array2D< ROI2D::difference_type > &partition_diagram, Array2D< bool > &mask_buf)
 
bool ncorr::details::recursive_nlinfo_partition_diagram (ROI2D::difference_type part_num1, ROI2D::difference_type part_num2, const ROI2D::region_nlinfo &nlinfo, Array2D< ROI2D::difference_type > &partition_diagram, Array2D< bool > &mask_buf)
 
Array2D< ROI2D::difference_type > & ncorr::details::get_nlinfo_partition_diagram (const ROI2D::region_nlinfo &nlinfo, ROI2D::difference_type num_partitions, Array2D< ROI2D::difference_type > &partition_diagram, Array2D< bool > &mask_buf)
 
Array2D< ROI2D::difference_typencorr::details::get_ROI_partition_diagram (const ROI2D &roi, ROI2D::difference_type num_partitions)
 
Array2D< ROI2D::difference_typencorr::details::get_nlinfo_partition_diagram_seeds (const Array2D< ROI2D::difference_type > &partition_diagram, const ROI2D::region_nlinfo &nlinfo, ROI2D::difference_type num_partitions, Array2D< ROI2D::difference_type > &SDA, Array2D< bool > &mask_buf1, Array2D< bool > &mask_buf2)
 
std::vector< Array2D< ROI2D::difference_type > > ncorr::details::get_ROI_partition_diagram_seeds (const Array2D< ROI2D::difference_type > &partition_diagram, const ROI2D &roi, ROI2D::difference_type num_partitions)
 
Array2D< double > ncorr::details::get_seed_params (const Array2D< ROI2D::difference_type > &seeds_pos, const subregion_nloptimizer &sr_nloptimizer, Array2D< double > &params_buf)
 
bool ncorr::details::analyze_point (const Array2D< double > &queue_params, ROI2D::difference_type p1_delta, ROI2D::difference_type p2_delta, const ROI2D::region_nlinfo &nlinfo, ROI2D::difference_type scalefactor, const subregion_nloptimizer &sr_nloptimizer, double cutoff_corrcoef, double cutoff_delta_disp, std::priority_queue< Array2D< double >, std::vector< Array2D< double > >, std::function< bool(const Array2D< double > &, const Array2D< double > &)> > &queue, Array2D< bool > &A_ap, Array2D< double > &params_buf)
 
void ncorr::details::worker_RGDIC (subregion_nloptimizer sr_nloptimizer, ROI2D roi_reduced, ROI2D::difference_type scalefactor, double cutoff_corrcoef, double cutoff_delta_disp, Array2D< double > &A_v, Array2D< double > &A_u, Array2D< double > &A_cc, Array2D< bool > &A_ap, Array2D< bool > &A_vp)
 
Disp2D ncorr::RGDIC (const Array2D< double > &, const Array2D< double > &, const ROI2D &, ROI2D::difference_type, INTERP, SUBREGION, ROI2D::difference_type, ROI2D::difference_type, double, bool)
 
Disp2D ncorr::RGDIC_without_thread (const Array2D< double > &A_ref, const Array2D< double > &A_cur, const ROI2D &roi, ROI2D::difference_type scalefactor, INTERP interp_type, SUBREGION subregion_type, ROI2D::difference_type r, double cutoff_corrcoef, bool debug, const std::vector< SeedParams > &seeds_by_region={}, bool seeds_are_optimized=false)
 
void ncorr::save (const DIC_analysis_input &DIC_input, std::ofstream &os)
 
void ncorr::save (const DIC_analysis_input &DIC_input, const std::string &filename)
 
void ncorr::save (const DIC_analysis_output &DIC_output, std::ofstream &os)
 
void ncorr::save (const DIC_analysis_output &DIC_output, const std::string &filename)
 
void ncorr::save (const DIC_analysis_step_data &step_data, std::ofstream &os)
 
void ncorr::save (const DIC_analysis_step_data &step_data, const std::string &filename)
 
DIC_analysis_output ncorr::DIC_analysis (const DIC_analysis_input &)
 
DIC_analysis_output ncorr::DIC_analysis_sequential (const DIC_analysis_input &DIC_input, const std::vector< SeedParams > &seeds_by_region={}, bool seeds_are_optimized=false)
 
DIC_analysis_output ncorr::DIC_analysis_sequential (const DIC_analysis_parallel_input &)
 
Disp2D ncorr::RGDIC_with_seeds (const Array2D< double > &A_ref, const Array2D< double > &A_cur, const ROI2D &roi, const DIC_analysis_parallel_input &input)
 
Disp2D ncorr::details::update (const Disp2D &disp, INTERP interp_type, ROI_UPDATE_MODE mode=ROI_UPDATE_MODE::SKIP_INVALID)
 
DIC_analysis_output ncorr::change_perspective (const DIC_analysis_output &, INTERP)
 
DIC_analysis_output ncorr::change_perspective_with_inversion (const DIC_analysis_output &, INTERP)
 
DIC_analysis_output ncorr::set_units (const DIC_analysis_output &, const std::string &, double)
 
DIC_analysis_output ncorr::filter_by_correlation (const DIC_analysis_output &, double)
 
Strain2D ncorr::LS_strain (const Disp2D &, PERSPECTIVE, double, SUBREGION, ROI2D::difference_type)
 
void ncorr::save (const strain_analysis_input &strain_input, std::ofstream &os)
 
void ncorr::save (const strain_analysis_input &strain_input, const std::string &filename)
 
void ncorr::save (const strain_analysis_output &strain_output, std::ofstream &os)
 
void ncorr::save (const strain_analysis_output &strain_output, const std::string &filename)
 
strain_analysis_output ncorr::strain_analysis (const strain_analysis_input &)
 
cv::Mat ncorr::details::cv_ncorr_data_over_img (const Image2D &img, const Data2D &data, double alpha, double min_data, double max_data, bool enable_colorbar=true, bool enable_axes=true, bool enable_scalebar=true, const std::string &units="pixels", double units_per_pixel=1.0, double num_units=-1.0, double font_size=1.0, ROI2D::difference_type num_tick_marks=11, int colormap=cv::COLORMAP_JET)
 
void ncorr::imshow_ncorr_data_over_img (const Image2D &, const Data2D &, ROI2D::difference_type=-1)
 
void ncorr::save_ncorr_data_over_img (const std::string &, const Image2D &, const Data2D &, double, double, double, bool, bool, bool, const std::string &, double, double, double, ROI2D::difference_type, int)
 
void ncorr::save_ncorr_data_over_img_video (const std::string &, const std::vector< Image2D > &, const std::vector< Data2D > &, double, double, double, double, bool, bool, bool, const std::string &, double, double, double, ROI2D::difference_type, int, double, int)
 
void ncorr::save_DIC_video (const std::string &, const DIC_analysis_input &, const DIC_analysis_output &, DISP, double, double, double=std::numeric_limits< double >::quiet_NaN(), double=std::numeric_limits< double >::quiet_NaN(), bool=true, bool=true, bool=true, double=-1.0, double=1.0, ROI2D::difference_type=11, int=cv::COLORMAP_JET, double=2.0, int=cv::VideoWriter::fourcc('M', 'J', 'P', 'G'))
 
void ncorr::save_strain_video (const std::string &, const strain_analysis_input &, const strain_analysis_output &, STRAIN, double, double, double=std::numeric_limits< double >::quiet_NaN(), double=std::numeric_limits< double >::quiet_NaN(), bool=true, bool=true, bool=true, double=-1.0, double=1.0, ROI2D::difference_type=11, int=cv::COLORMAP_JET, double=2.0, int=cv::VideoWriter::fourcc('M', 'J', 'P', 'G'))
 
Disp2D ncorr::compute_displacements (const details::subregion_nloptimizer &sr_nloptimizer, const ROI2D &roi_reduced, const SeedParams &seedparams, ROI2D::difference_type scalefactor, double cutoff_corrcoef, ROI2D::difference_type region_idx, bool debug)
 
std::vector< SeedComputationDatancorr::compute_only_seed_points (const Array2D< double > &A_ref, const std::vector< Array2D< double > > &A_curs, const ROI2D &roi, ROI2D::difference_type scalefactor, INTERP interp_type, SUBREGION subregion_type, ROI2D::difference_type r, const std::vector< SeedParams > &seeds_by_region, double cutoff_corrcoef, ROI2D::difference_type region_idx, bool debug)
 
std::vector< SeedParamsncorr::propagate_seeds (const std::vector< SeedParams > &seeds, ROI2D::difference_type spacing)
 
SeedAnalysisResult ncorr::analyze_seeds (const details::subregion_nloptimizer &sr_nloptimizer, const Array2D< double > &ref_gs, const ROI2D &roi, const std::vector< SeedParams > &seed_positions, ROI2D::difference_type radius, int cutoff_iteration, double cutoff_max_diffnorm, double cutoff_max_corrcoef, bool debug=true)
 
DIC_analysis_output ncorr::matlab_DIC_analysis_sequential (const DIC_analysis_input &DIC_input, const std::vector< SeedParams > &seeds_by_region={}, bool seeds_are_optimized=false)
 
DIC_analysis_output ncorr::matlab_DIC_analysis_sequential (const DIC_analysis_parallel_input &)
 
DIC_analysis_output ncorr::matlab_DIC_analysis_parallel (const DIC_analysis_parallel_input &)
 
DIC_analysis_output ncorr::DIC_analysis_parallel (const DIC_analysis_parallel_input &)
 
void ncorr::exact_detail::expand_filt (Array2D< double > &plot, const Array2D< bool > &inside_region)
 
void ncorr::exact_detail::fill_region_extrap (const Disp2D &disp, const ROI2D::region_nlinfo &nlinfo, difference_type border, exact_region_disp &out)
 
void ncorr::exact_detail::bind_interpolators (exact_region_disp &out)
 
Disp2D ncorr::exact_add_with_rois (const std::vector< Disp2D > &disps, const std::vector< ROI2D > &rois)
 
DIC_analysis_output ncorr::exact_matlab_DIC_analysis_impl (const DIC_analysis_parallel_input &input, bool run_in_parallel, const std::string &mode_name)
 
DIC_analysis_output ncorr::exact_matlab_DIC_analysis_sequential (const DIC_analysis_input &DIC_input, const std::vector< SeedParams > &seeds_by_region={}, bool seeds_are_optimized=false)
 
DIC_analysis_output ncorr::exact_matlab_DIC_analysis_sequential (const DIC_analysis_parallel_input &)
 
DIC_analysis_output ncorr::exact_matlab_DIC_analysis_parallel (const DIC_analysis_parallel_input &)
 

Variable Documentation

◆ ref_idx

matlab_difference_type ref_idx = 0

Definition at line 4809 of file ncorr.cpp.

◆ seeds_by_frame

std::vector<std::vector<SeedParams> > seeds_by_frame

Definition at line 4810 of file ncorr.cpp.

◆ terminal_seeds

std::vector<SeedParams> terminal_seeds

Definition at line 4811 of file ncorr.cpp.