kfusion::Intr kfusion::Intr::operator()(int level_index) const
{
  int div = 1 << level_index;
  return (Intr (fx / div, fy / div, cx / div, cy / div));
}
Esempio n. 2
0
int main (int argc, char** argv) 
{
	const Eigen::Vector3i resolution = Eigen::Vector3i(512, 512, 512);
	//const Eigen::Vector3f volumeSize = Eigen::Vector3f(0.24f, 0.24, 0.24f);
	const Eigen::Vector3f volumeSize = Eigen::Vector3f(4.0f, 4.0f, 4.0f);
	int width = 512;
	int height = 424;
	float depthThres = 2.0f;
	bool doVoxelFilter = false;

	TsdfVolume tsdfV(resolution, volumeSize);
	ColorVolume colorV(tsdfV);
	EvoRec evoRec(tsdfV, colorV, width, height, depthThres, doVoxelFilter);
	
	// begins process evoslam data
	FrameInfo Kf1;
	Kf1.rotMatUnscaled = Eigen::Matrix3f::Identity();
	/*Kf1.rotMatUnscaled(0, 0) = 1;
	Kf1.rotMatUnscaled(0, 1) = 0.0215;
	Kf1.rotMatUnscaled(0, 2) = 0;
	Kf1.rotMatUnscaled(1, 0) = 0;
	Kf1.rotMatUnscaled(1, 1) = 0.9877;
	Kf1.rotMatUnscaled(1, 2) = 0.1546;
	Kf1.rotMatUnscaled(2, 0) = 0;
	Kf1.rotMatUnscaled(2, 1) = -0.1546;
	Kf1.rotMatUnscaled(2, 2) = 0.9877;
	Kf1.transVec = Eigen::Vector3f(-0.05, -0.28, -0.93);*/
	Kf1.transVec = Eigen::Vector3f(0, 0, 0);
	//Kf1.transVec = Eigen::Vector3f(1.5, 1.5, 1.5);
	Kf1.scale = 1;
	Kf1.intr = Intr(367.221, 367.221, 252.952, 208.622);

	FrameInfo Kf2;
	Kf2.rotMatUnscaled = Eigen::Matrix3f::Identity();
	Kf2.rotMatUnscaled(0, 0) = 0.134495157429655;
	Kf2.rotMatUnscaled(0, 1) = 0.080498653293076;
	Kf2.rotMatUnscaled(0, 2) = -0.987639113971279;
	Kf2.rotMatUnscaled(1, 0) = -0.144135633421401;
	Kf2.rotMatUnscaled(1, 1) = 0.987683785283996;
	Kf2.rotMatUnscaled(1, 2) = 0.060874128045401;
	Kf2.rotMatUnscaled(2, 0) = 0.980375423909730;
	Kf2.rotMatUnscaled(2, 1) = 0.134166713849142;
	Kf2.rotMatUnscaled(2, 2) = 0.144441410574456;
	Kf2.rotMatUnscaled = Kf1.rotMatUnscaled * Kf2.rotMatUnscaled;
	Kf2.transVec = Kf1.rotMatUnscaled * (Eigen::Vector3f(1.128942737114943e+03 / 1000.0f, -1.432967440937596e+02 / 1000.0f, 7.893658796324055e+02 / 1000.0f)) + Kf1.transVec;
	Kf2.scale = 1;
	Kf2.intr = Intr(366.507, 366.507, 259.864, 206.676);

	FrameInfo Kf3;
	//Kf.rotMatUnscaled << 1, 0, 0, 0, -1, 0, 0, 0, 1;
	//Kf.transVec  = Eigen::Vector3f(0,0,0);
	Kf3.rotMatUnscaled = Eigen::Matrix3f::Identity();
	Kf3.rotMatUnscaled(0, 0) = -0.993943048364607;
	Kf3.rotMatUnscaled(0, 1) = 0.030325927333675;
	Kf3.rotMatUnscaled(0, 2) = -0.105629327078354;
	Kf3.rotMatUnscaled(1, 0) = 0.004398346757531;
	Kf3.rotMatUnscaled(1, 1) = 0.971379193082247;
	Kf3.rotMatUnscaled(1, 2) = 0.237493405787788;
	Kf3.rotMatUnscaled(2, 0) = 0.109808338269340;
	Kf3.rotMatUnscaled(2, 1) = 0.235590325306951;
	Kf3.rotMatUnscaled(2, 2) = -0.965628980234278;
	Kf3.rotMatUnscaled = Kf1.rotMatUnscaled * Kf3.rotMatUnscaled;
	Kf3.transVec = Kf1.rotMatUnscaled * (Eigen::Vector3f(2.507968161837474e+02 / 1000.0f, -3.275127035049086e+02 / 1000.0f, 2.057818523590235e+03 / 1000.0f) )+ Kf1.transVec;
	Kf3.scale = 1;
	Kf3.intr = Intr(366.996, 366.996, 256.466, 209.012);

	FrameInfo Kf4;
	Kf4.rotMatUnscaled = Eigen::Matrix3f::Identity();
	Kf4.rotMatUnscaled(0, 0) = -0.073896009032637;
	Kf4.rotMatUnscaled(0, 1) = -0.155250763238798;
	Kf4.rotMatUnscaled(0, 2) = 0.985107395344700;
	Kf4.rotMatUnscaled(1, 0) = 0.158951733970376;
	Kf4.rotMatUnscaled(1, 1) = 0.973346494691277;
	Kf4.rotMatUnscaled(1, 2) = 0.165320741408982;
	Kf4.rotMatUnscaled(2, 0) = -0.984517001436166;
	Kf4.rotMatUnscaled(2, 1) = 0.168801071637521;
	Kf4.rotMatUnscaled(2, 2) = -0.047249043346561;
	Kf4.rotMatUnscaled = Kf1.rotMatUnscaled * Kf4.rotMatUnscaled;
	Kf4.transVec = Kf1.rotMatUnscaled * ( Eigen::Vector3f(-8.272323915033728e+02 / 1000.0f, -1.737204056866098e+02 / 1000.0f, 1.256884341974619e+03 / 1000.0f)) + Kf1.transVec;
	Kf4.scale = 1;
	Kf4.intr = Intr(366.604, 366.604, 257.112, 198.123);

	evoRec.processKeyFrame("test_tsdf_data_4/022718143547_undistorted_1_1.bin","test_tsdf_data_4/022718143547_registered_1_1.jpg", Kf1);
	//evoRec.processKeyFrame("test_tsdf_data_4/023446243547_undistorted_1_1.bin", "test_tsdf_data_4/023446243547_registered_1_1.jpg", Kf2);
	//evoRec.processKeyFrame("test_tsdf_data_4/001489661447_undistorted_1_1.bin", "test_tsdf_data_4/001489661447_registered_1_1.jpg", Kf3);
	//evoRec.processKeyFrame("test_tsdf_data_4/001496161447_undistorted_1_1.bin", "test_tsdf_data_4/001496161447_registered_1_1.jpg", Kf4);

	evoRec.savePointCloud("tsdf_cloud.pcd");
	//evoRec.generatePointCloud("test_tsdf_data_4/022718143547_undistorted_1_1.bin","test_tsdf_data_4/022718143547_registered_1_1.jpg", Kf1);

}