void LapalicanClass::Run() { LoadImg(); buildLaplacianPyramid(backgroundImg, bgLapPyr); buildLaplacianPyramid(foregroundImg, fgLapPyr); buildGaussianPyramid(foregroundImg, fgGauPyramid); buildGaussianPyramid(fgMask, maskGauPyramid); buildGaussianPyramid(backgroundImg, bgGauPyramid); blendInEachLevel(); reconstructImg(); }
Mat MultiBandBlender::blend(Mat& imageMat1,Mat& imageMat2,Mat& mask) { assert(imageMat1.rows==imageMat2.rows&&imageMat2.rows==mask.rows); assert(imageMat1.cols==imageMat2.cols&&imageMat2.cols==mask.cols); vector<Mat> gaussianPymid1,gaussianPymid2,gaussianPymidMask; vector<Mat> laplacianPymid1,laplacianPymid2; buildGaussianPyramid(imageMat1,gaussianPymid1); buildLaplacianPyramid(gaussianPymid1,laplacianPymid1); buildGaussianPyramid(imageMat2,gaussianPymid2); buildLaplacianPyramid(gaussianPymid2,laplacianPymid2); buildGaussianPyramid(mask,gaussianPymidMask); return reconstruct(laplacianPymid1,laplacianPymid2,gaussianPymidMask); }
/** * spatialFilter - spatial filtering an image * * @param src - source image * @param pyramid - destinate pyramid */ bool VideoProcessor::spatialFilter(const cv::Mat &src, std::vector<cv::Mat> &pyramid) { switch (spatialType) { case LAPLACIAN: // laplacian pyramid return buildLaplacianPyramid(src, levels, pyramid); break; case GAUSSIAN: // gaussian pyramid return buildGaussianPyramid(src, levels, pyramid); break; default: return false; break; } }
void LaplacianBlending::buildPyramids() { buildLaplacianPyramid(left,leftLapPyr,leftSmallestLevel); buildLaplacianPyramid(right,rightLapPyr,rightSmallestLevel); buildGaussianPyramid(); }
void LaplacianBlending::buildPyramids() { buildLaplacianPyramid(left,leftLapPyr,leftHighestLevel); buildLaplacianPyramid(right,rightLapPyr,rightHighestLevel); }