/// <summary> /// Uses Infer3DExactLMS to infer a random world point from a number of different projections of the point. /// It writes out the squared errors corresponding to different number of projections into a file. /// </summary> /// <param name="numProjections">the max number of projections to use.</param> /// <param name="gaussianNoiseSigma">the standard deviation of the gaussian noise to be added to the projected points.</param> public static void ShowErrorInfer3DExactLMS(int numProjections, double gaussianNoiseSigma, string fileName) { ContinuousUniform dist = new ContinuousUniform(0, 1); Normal gaussianNoise = new Normal(0, gaussianNoiseSigma); DenseMatrix worldPoint = new DenseMatrix(4,1); worldPoint = (DenseMatrix) worldPoint.Random(4,1, dist); ProjectedPoint[] projections = new ProjectedPoint[numProjections]; for (int i = 0; i < projections.Length; i++) { projections[i] = new ProjectedPoint(); projections[i].worldToImage = new DenseMatrix(3, 4); projections[i].worldToImage = (DenseMatrix)projections[i].worldToImage.Random(3, 4, dist); projections[i].projectedPoint = (projections[i].worldToImage * worldPoint); projections[i].projectedPoint += (DenseMatrix)projections[i].projectedPoint.Random(3, 1, gaussianNoise); } File.WriteAllLines(fileName, Enumerable.Range(2, numProjections) .Select(i => String.Format("{0}\t{1}", i, (worldPoint - Infer3DExactLMS(projections.Take(i))).L2Norm()))); }
/// <summary> /// Uses Infer3DExactLMS to infer a random world point from a number of different projections of the point. /// It writes out the squared errors corresponding to different number of projections into a file. /// </summary> /// <param name="numProjections">the max number of projections to use.</param> /// <param name="gaussianNoiseSigma">the standard deviation of the gaussian noise to be added to the projected points.</param> public static void ShowErrorInfer3DExactLMS(int numProjections, double gaussianNoiseSigma, string fileName) { ContinuousUniform dist = new ContinuousUniform(0, 1); Normal gaussianNoise = new Normal(0, gaussianNoiseSigma); DenseMatrix worldPoint = new DenseMatrix(4, 1); worldPoint = (DenseMatrix)worldPoint.Random(4, 1, dist); ProjectedPoint[] projections = new ProjectedPoint[numProjections]; for (int i = 0; i < projections.Length; i++) { projections[i] = new ProjectedPoint(); projections[i].worldToImage = new DenseMatrix(3, 4); projections[i].worldToImage = (DenseMatrix)projections[i].worldToImage.Random(3, 4, dist); projections[i].projectedPoint = (projections[i].worldToImage * worldPoint); projections[i].projectedPoint += (DenseMatrix)projections[i].projectedPoint.Random(3, 1, gaussianNoise); } File.WriteAllLines(fileName, Enumerable.Range(2, numProjections) .Select(i => String.Format("{0}\t{1}", i, (worldPoint - Infer3DExactLMS(projections.Take(i))).L2Norm()))); }