Exemple #1
0
    std::vector<Displacement> createDisplacementVecFromJSON(const rapidjson::Document &config_doc) {
        std::vector< std::vector< float > > disp_vec;

        if (config_doc.HasMember("displacements")) {
            createVectorFromJSON(config_doc, "displacements", disp_vec);
        }

        std::vector<Displacement> disp_out(disp_vec.size());

        for(size_t i = 0; i < disp_vec.size(); ++i) {
            if (disp_vec[i].size() != 6) {
                throw std::runtime_error(
                    (boost::format("Row %d in displacements does not specify x, y and z translations and rotations.") % i).str()
                );
            }
            disp_out[i] << disp_vec[i][0], disp_vec[i][1], disp_vec[i][2],
                    disp_vec[i][3], disp_vec[i][4], disp_vec[i][5];
        }
        return disp_out;
    }
Exemple #2
0
int main(){


	name_pool.push_back("teddy");


    for(int iii = 0;iii<name_pool.size();iii++){

    std::string directory = "/Users/xiaotan/Data/CTMAP/";

	std::string imL_name = directory+name_pool[iii]+"/imL.png";
	std::string imR_name = directory+name_pool[iii]+"/imR.png";



	cv::Mat imL=cv::imread(imL_name.c_str());
	cv::Mat imR=cv::imread(imR_name.c_str());



	cv::Mat imL_;
	cv::Mat imR_;
	cv::flip(imR,imL_,1);
	cv::flip(imL,imR_,1);







	int height = imL.rows;
	int width = imL.cols;

		
double * cost = cal_cost(imL,imR,15.0/255,4.0/255,0.86,1);				//15,4.0 0.86 1
///////////////////////////////////smooth before using for guiding////////////////////////////////
/*
	cv::medianBlur(imL,imL,3);
	cv::medianBlur(imR,imR,3);
	cv::medianBlur(imL_,imL_,3);
	cv::medianBlur(imR_,imR_,3);
*/

	imL.convertTo(imL,CV_64FC3);
	imR.convertTo(imR,CV_64FC3);

	imL = imL.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255)));
	imR = imR.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255)));


	imL_.convertTo(imL_,CV_64FC3);
	imR_.convertTo(imR_,CV_64FC3);

	imL_ = imL_.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255)));
	imR_ = imR_.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255)));


	double delta_step = 1.5;
	double delta_min = 0.00001;




	double * old_V = NULL;
	double * old_V_ = NULL;

	cv::Mat disp_L;
	cv::Mat disp_R;



	stereo_pyra( cost,imL, F_win, Eps, 0.00002, 0.00002*5, 0,old_V,disp_L);
	Exp_and_norm(old_V,cost,width,height);



	cv::Mat out_im;
    disp_out(imL,old_V,Disp_K,out_im);
    cv::imwrite("/Users/xiaotan/Data/CTMAP/teddy/result.png",out_im);



	free(old_V);
	free(old_V_);

		free(cost);
	}

return 0;



}