code: public static void decomposeDiac( double w11 , double w12 , double w13 , double w22 , double w23 , double w33,
  									  CameraPinhole intrinsic )
  	{
  		// divide by w33 to ensure that it is equal to one
  		double cx = w13/w33;
  		double cy = w23/w33;
  		double fy = Math.sqrt(Math.abs(w22/w33-cy*cy));
  		double skew = (w12/w33 - cx*cy)/fy;
  		double fx = Math.sqrt(Math.abs(w11/w33-skew*skew - cx*cx));
  
  		intrinsic.cx = cx;
  		intrinsic.cy = cy;
  		intrinsic.fx = fx;
  		intrinsic.fy = fy;
  		intrinsic.skew = skew;
  	}
docs: Extracts the camera calibration matrix on the dual image of the absolute conic (DIAC). Elements
  which could cause problems if negative have the absolute value taken to avoid NaN.
  
  The upper triangular elements in w (DIAC) are passed in.
  
  @param intrinsic (output) K extracted from w