public void computeStability ( Se3_F64 targetToCamera , double disturbance , FiducialStability results ) { targetToCamera . invert ( referenceCameraToTarget ) ; maxOrientation = 0 ; maxLocation = 0 ; Point3D_F64 cameraPt = new Point3D_F64 ( ) ; for ( int i = 0 ; i < points2D3D . size ( ) ; i ++ ) { Point2D3D p23 = points2D3D . get ( i ) ; targetToCamera . transform ( p23 . location , cameraPt ) ; p23 . observation . x = cameraPt . x / cameraPt . z ; p23 . observation . y = cameraPt . y / cameraPt . z ; refNorm . get ( i ) . set ( p23 . observation ) ; normToPixel . compute ( p23 . observation . x , p23 . observation . y , refPixels . get ( i ) ) ; } for ( int i = 0 ; i < points2D3D . size ( ) ; i ++ ) { // see what happens if you tweak this observation a little bit perturb ( disturbance , refPixels . get ( i ) , points2D3D . get ( i ) ) ; // set it back to the nominal value points2D3D . get ( i ) . observation . set ( refNorm . get ( i ) ) ; } results . location = maxLocation ; results . orientation = maxOrientation ; }
Estimate how sensitive this observation is to pixel noise