Optimized Belief Propagation (CPU and GPU)
SharedBpProcessingFuncts.h File Reference

Functions for belief propagation processing that are used in both optimized CPU and CUDA implementations. More...

Include dependency graph for SharedBpProcessingFuncts.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 beliefprop
 Namespace for enums, constants, structures, and functions specific to belief propagation processing.
 

Functions

template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::DtStereo (T f[DISP_VALS])
 function retrieve the minimum value at each 1-d disparity value in O(n) time using Felzenszwalb's method (see "Efficient Belief Propagation for Early Vision") More...
 
template<RunData_t T>
ARCHITECTURE_ADDITION void beliefprop::DtStereo (T *f, unsigned int bp_settings_disp_vals)
 
template<RunData_t T>
ARCHITECTURE_ADDITION void beliefprop::DtStereo (T *f, unsigned int bp_settings_disp_vals, unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level)
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::MsgStereo (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const U messages_neighbor_1[DISP_VALS], const U messages_neighbor_2[DISP_VALS], const U messages_neighbor_3[DISP_VALS], const U data_costs[DISP_VALS], T *dst_message_array, U disc_k_bp, bool data_aligned)
 
template<RunData_t T, RunData_t U>
ARCHITECTURE_ADDITION void beliefprop::MsgStereo (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const U *messages_neighbor_1, const U *messages_neighbor_2, const U *messages_neighbor_3, const U *data_costs, T *dst_message_array, U disc_k_bp, bool data_aligned, unsigned int bp_settings_disp_vals)
 
template<RunData_t T, RunData_t U, beliefprop::MessageComp M>
ARCHITECTURE_ADDITION void beliefprop::SetInitDstProcessing (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *prev_u_message_array, const T *prev_d_message_array, const T *prev_l_message_array, const T *prev_r_message_array, const T *data_message_array, T *dst_message_array, U disc_k_bp, bool data_aligned, unsigned int bp_settings_disp_vals, U *dst_processing, unsigned int checkerboard_adjustment, unsigned int offset_data, unsigned int current_disparity, unsigned int proc_array_idx)
 
template<RunData_t T, RunData_t U, beliefprop::MessageComp M>
ARCHITECTURE_ADDITION void beliefprop::MsgStereo (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *prev_u_message_array, const T *prev_d_message_array, const T *prev_l_message_array, const T *prev_r_message_array, const T *data_message_array, T *dst_message_array, U disc_k_bp, bool data_aligned, unsigned int bp_settings_disp_vals, U *dst_processing, unsigned int checkerboard_adjustment, unsigned int offset_data)
 
template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::InitializeBottomLevelDataPixel (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const float *image_1_pixels_device, const float *image_2_pixels_device, T *data_cost_stereo_checkerboard_0, T *data_cost_stereo_checkerboard_1, float lambda_bp, float data_k_bp, unsigned int bp_settings_disp_vals)
 Initialize the "data cost" for each possible disparity between the two full-sized input images ("bottom" of the image pyramid). Image data is stored in the image_1_pixels_device and image_2_pixels_device arrays. More...
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::InitializeCurrentLevelDataPixel (unsigned int x_val, unsigned int y_val, beliefprop::CheckerboardPart checkerboard_part, const beliefprop::BpLevelProperties &current_bp_level, const beliefprop::BpLevelProperties &prev_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, T *data_cost_current_level, unsigned int offset_num, unsigned int bp_settings_disp_vals)
 Initialize the data costs at the "next" level up in the pyramid given that the data at the lower has been set. More...
 
template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::InitializeMessageValsToDefaultKernelPixel (unsigned int x_val_in_checkerboard, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, T *message_u_checkerboard_0, T *message_d_checkerboard_0, T *message_l_checkerboard_0, T *message_r_checkerboard_0, T *message_u_checkerboard_1, T *message_d_checkerboard_1, T *message_l_checkerboard_1, T *message_r_checkerboard_1, unsigned int bp_settings_disp_vals)
 Initialize the message values at each pixel of the current level to the default value. More...
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::RunBPIterationUpdateMsgVals (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const U prev_u_message[DISP_VALS], const U prev_d_message[DISP_VALS], const U prev_l_message[DISP_VALS], const U prev_r_message[DISP_VALS], const U data_message[DISP_VALS], T *current_u_message, T *current_d_message, T *current_l_message, T *current_r_message, const U disc_k_bp, bool data_aligned)
 Kernel function to run the current iteration of belief propagation where the input messages and data costs come in as array and the output message values are stored in array. More...
 
template<RunData_t T, RunData_t U>
ARCHITECTURE_ADDITION void beliefprop::RunBPIterationUpdateMsgVals (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const U *prev_u_message, const U *prev_d_message, const U *prev_l_message, const U *prev_r_message, const U *data_message, T *current_u_message, T *current_d_message, T *current_l_message, T *current_r_message, const U disc_k_bp, bool data_aligned, unsigned int bp_settings_disp_vals)
 
template<RunData_t T, RunData_t U>
ARCHITECTURE_ADDITION void beliefprop::RunBPIterationUpdateMsgVals (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *prev_u_message_array, const T *prev_d_message_array, const T *prev_l_message_array, const T *prev_r_message_array, const T *data_message_array, T *current_u_message, T *current_d_message, T *current_l_message, T *current_r_message, const U disc_k_bp, bool data_aligned, unsigned int bp_settings_disp_vals, U *dst_processing, unsigned int checkerboard_adjustment, unsigned int offset_data)
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::RunBPIterationUsingCheckerboardUpdatesKernel (unsigned int x_val, unsigned int y_val, beliefprop::CheckerboardPart checkerboard_to_update, const beliefprop::BpLevelProperties &current_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, T *message_u_checkerboard_0, T *message_d_checkerboard_0, T *message_l_checkerboard_0, T *message_r_checkerboard_0, T *message_u_checkerboard_1, T *message_d_checkerboard_1, T *message_l_checkerboard_1, T *message_r_checkerboard_1, float disc_k_bp, unsigned int offset_data, bool data_aligned, unsigned int bp_settings_disp_vals)
 Kernel function to run the current iteration of belief propagation in parallel using the checkerboard update method where half the pixels in the "checkerboard" scheme retrieve messages from each 4-connected neighbor and then update their message based on the retrieved messages and the data cost. More...
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::RunBPIterationUsingCheckerboardUpdatesKernel (unsigned int x_val, unsigned int y_val, beliefprop::CheckerboardPart checkerboard_to_update, const beliefprop::BpLevelProperties &current_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, T *message_u_checkerboard_0, T *message_d_checkerboard_0, T *message_l_checkerboard_0, T *message_r_checkerboard_0, T *message_u_checkerboard_1, T *message_d_checkerboard_1, T *message_l_checkerboard_1, T *message_r_checkerboard_1, float disc_k_bp, unsigned int offset_data, bool data_aligned, unsigned int bp_settings_disp_vals, void *dst_processing)
 
template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::CopyMsgDataToNextLevelPixel (unsigned int x_val, unsigned int y_val, beliefprop::CheckerboardPart checkerboard_part, const beliefprop::BpLevelProperties &current_bp_level, const beliefprop::BpLevelProperties &next_bp_level, const T *message_u_prev_checkerboard_0, const T *message_d_prev_checkerboard_0, const T *message_l_prev_checkerboard_0, const T *message_r_prev_checkerboard_0, const T *message_u_prev_checkerboard_1, const T *message_d_prev_checkerboard_1, const T *message_l_prev_checkerboard_1, const T *message_r_prev_checkerboard_1, T *message_u_checkerboard_0, T *message_d_checkerboard_0, T *message_l_checkerboard_0, T *message_r_checkerboard_0, T *message_u_checkerboard_1, T *message_d_checkerboard_1, T *message_l_checkerboard_1, T *message_r_checkerboard_1, unsigned int bp_settings_disp_vals)
 Kernel to copy the computed BP message values at the current level to the corresponding locations at the "next" level down the kernel works from the point of view of the pixel at the prev level that is being copied to four different places. More...
 
template<RunData_t T, RunData_t U, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::RetrieveOutputDisparityPixel (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, const T *message_u_checkerboard_0, const T *message_d_checkerboard_0, const T *message_l_checkerboard_0, const T *message_r_checkerboard_0, const T *message_u_checkerboard_1, const T *message_d_checkerboard_1, const T *message_l_checkerboard_1, const T *message_r_checkerboard_1, float *disparity_between_images_device, unsigned int bp_settings_disp_vals)
 
template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::PrintDataAndMessageValsAtPointKernel (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, const T *message_u_checkerboard_0, const T *message_d_checkerboard_0, const T *message_l_checkerboard_0, const T *message_r_checkerboard_0, const T *message_u_checkerboard_1, const T *message_d_checkerboard_1, const T *message_l_checkerboard_1, const T *message_r_checkerboard_1, unsigned int bp_settings_disp_vals=0)
 
template<RunData_t T, unsigned int DISP_VALS>
ARCHITECTURE_ADDITION void beliefprop::PrintDataAndMessageValsToPointKernel (unsigned int x_val, unsigned int y_val, const beliefprop::BpLevelProperties &current_bp_level, const T *data_cost_checkerboard_0, const T *data_cost_checkerboard_1, const T *message_u_checkerboard_0, const T *message_d_checkerboard_0, const T *message_l_checkerboard_0, const T *message_r_checkerboard_0, const T *message_u_checkerboard_1, const T *message_d_checkerboard_1, const T *message_l_checkerboard_1, const T *message_r_checkerboard_1, unsigned int bp_settings_disp_vals=0)
 

Detailed Description

Functions for belief propagation processing that are used in both optimized CPU and CUDA implementations.

Author
Scott Grauer-Gray

Definition in file SharedBpProcessingFuncts.h.