private boolean estimateMotion() {
		// organize the data
		List<Stereo2D3D> data = new ArrayList<>();

		for( PointTrack l : candidates ) {
			LeftTrackInfo info = l.getCookie();
			PointTrack r = info.right;

			Stereo2D3D stereo = info.location;
			// compute normalized image coordinate for track in left and right image
			leftImageToNorm.compute(l.x,l.y,info.location.leftObs);
			rightImageToNorm.compute(r.x,r.y,info.location.rightObs);

			data.add(stereo);
		}

		// Robustly estimate left camera motion
		if( !matcher.process(data) )
			return false;

		Se3_F64 keyToCurr = matcher.getModelParameters();
		keyToCurr.invert(currToKey);

		// mark tracks that are in the inlier set
		int N = matcher.getMatchSet().size();
		for( int i = 0; i < N; i++ ) {
			int index = matcher.getInputIndex(i);
			LeftTrackInfo info = candidates.get(index).getCookie();
			info.lastInlier = tick;
		}

//		System.out.println("Inlier set size: "+N);

		return true;
	}
private boolean estimateMotion ( ) { List < Stereo2D3D > data = new ArrayList < > ( ) ; for ( PointTrack l : candidates ) { LeftTrackInfo info = l . getCookie ( ) ; PointTrack r = info . right ; Stereo2D3D stereo = info . location ; leftImageToNorm . compute ( l . x , l . y , info . location . leftObs ) ; rightImageToNorm . compute ( r . x , r . y , info . location . rightObs ) ; data . add ( stereo ) ; } if ( ! matcher . process ( data ) ) return false ; Se3_F64 keyToCurr = matcher . getModelParameters ( ) ; keyToCurr . invert ( currToKey ) ; int N = matcher . getMatchSet ( ) . size ( ) ; for ( int i = 0 ; i < N ; i ++ ) { int index = matcher . getInputIndex ( i ) ; LeftTrackInfo info = candidates . get ( index ) . getCookie ( ) ; info . lastInlier = tick ; } return true ; }
Given the set of active tracks, estimate the cameras motion robustly
@return