#pragma once #include #include // std::pair #include // all opencv header #include "hdrplus/burst.h" namespace hdrplus { class align { public: align() = default; ~align() = default; /** * @brief Run alignment on burst of images * * @param burst_images collection of burst images * @param aligements alignment in pixel value pair. * Outer most vector is per alternative image. * Inner most two vector is for horizontle & verticle tiles */ void process( const hdrplus::burst& burst_images, \ std::vector>>>& aligements ); private: // From original image to coarse image const std::vector inv_scale_factors = { 1, 2, 4, 4 }; const std::vector distances = { 1, 2, 2, 2 }; // L1 / L2 distance const std::vector grayimg_search_radious = { 1, 4, 4, 4 }; const std::vector grayimg_tile_sizes = { 16, 16, 16, 8 }; const int num_levels = 4; }; void align_image_level( \ const cv::Mat& ref_img, \ const cv::Mat& alt_img, \ const std::vector>>& reftiles_start, \ std::vector>>& prev_aligement, \ std::vector>>& alignment, \ int scale_factor_prev_curr, \ int tile_size, \ int prev_tile_size, \ int search_radiou, \ int distance ); } // namespace hdrplus