docs: public void process( DMatrixRMaj K1 , Se3_F64 worldToCamera1 ,
  						 DMatrixRMaj K2 , Se3_F64 worldToCamera2 )
  	{
  		SimpleMatrix sK1 = SimpleMatrix.wrap(K1);
  		SimpleMatrix sK2 = SimpleMatrix.wrap(K2);
  		SimpleMatrix R1 = SimpleMatrix.wrap(worldToCamera1.getR());
  		SimpleMatrix R2 = SimpleMatrix.wrap(worldToCamera2.getR());
  		SimpleMatrix T1 = new SimpleMatrix(3,1,true,
  				new double[]{worldToCamera1.getT().x,worldToCamera1.getT().y,worldToCamera1.getT().z});
  		SimpleMatrix T2 = new SimpleMatrix(3,1,true,
  				new double[]{worldToCamera2.getT().x,worldToCamera2.getT().y,worldToCamera2.getT().z});
  
  		//  P = K*[R|T]
  		SimpleMatrix KR1 = sK1.mult(R1);
  		SimpleMatrix KR2 = sK2.mult(R2);
  
  		// compute optical centers in world reference frame
  		// c = -R'*T
  		SimpleMatrix c1 = R1.transpose().mult(T1.scale(-1));
  		SimpleMatrix c2 = R2.transpose().mult(T2.scale(-1));
  
  		// new coordinate system axises
  		selectAxises(R1,R2, c1, c2);
  
  		// new extrinsic parameters, rotation matrix with rows of camera 1's coordinate system in
  		// the world frame
  		SimpleMatrix RR = new SimpleMatrix(3,3,true,
  				new double[]{
  				v1.x,v1.y,v1.z,
  				v2.x,v2.y,v2.z,
  				v3.x,v3.y,v3.z});
  
  		// new calibration matrix that is an average of the original
  		K = sK1.plus(sK2).scale(0.5);
  		K.set(0,1,0);// set skew to zero
  
  		// new projection rotation matrices
  		SimpleMatrix KRR = K.mult(RR);
  
  		// rectification transforms
  		rect1.set(KRR.mult(KR1.invert()).getDDRM());
  		rect2.set(KRR.mult(KR2.invert()).getDDRM());
  
  		rectifiedR = RR.getDDRM();
  	}