code: public boolean estimate(List<Homography2D_F64> viewsI_to_view0 , CameraPinhole calibration ) {
  		singular = false;
  		int N = viewsI_to_view0.size();
  
  		ensureDeterminantOfOne(viewsI_to_view0);
  
  		A.reshape(N*6,6);
  
  		for (int i = 0; i < N; i++) {
  			add(i,viewsI_to_view0.get(i),A);
  		}
  
  		// Compute the SVD for its null space
  		if( !svd.decompose(A)) {
  			return false;
  		}
  
  		DMatrixRMaj nv = new DMatrixRMaj(6,1);
  		SingularOps_DDRM.nullVector(svd,true,nv);
  
  		if( !extractCalibration(nv,calibration) )
  			return false;
  
  		// determine if the solution is good by looking at two smallest singular values
  		// If there isn't a steep drop it either isn't singular or more there is more than 1 singular value
  		double sv[] = svd.getSingularValues();
  		Arrays.sort(sv);
  		if( singularThreshold*sv[1] <= sv[0] )  {
  			return false;
  		}
  		return true;
  	}
docs: Assumes that the camera parameter are constant
  @param viewsI_to_view0 (Input) List of observed homographies. Modified so that determinant is one.
  @param calibration (Output) found calibration
  @return true if successful