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);
}
Beispiel #3
0
/** 
 * 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;
    }
}
Beispiel #4
0
void LaplacianBlending::buildPyramids() {
    buildLaplacianPyramid(left,leftLapPyr,leftSmallestLevel);
    buildLaplacianPyramid(right,rightLapPyr,rightSmallestLevel);
    buildGaussianPyramid();
}
void LaplacianBlending::buildPyramids() 
{  
	buildLaplacianPyramid(left,leftLapPyr,leftHighestLevel);  
	buildLaplacianPyramid(right,rightLapPyr,rightHighestLevel);  

}