protected void constructE ( Point3D_F64 e2 , Point3D_F64 e3 ) { E . zero ( ) ; for ( int i = 0 ; i < 3 ; i ++ ) { for ( int j = 0 ; j < 3 ; j ++ ) { for ( int k = 0 ; k < 3 ; k ++ ) { // which element in the trifocal tensor is being manipulated int row = 9 * i + 3 * j + k ; // which unknowns are being multiplied by int col1 = j * 3 + i ; int col2 = k * 3 + i + 9 ; E . data [ row * 18 + col1 ] = e3 . getIdx ( k ) ; E . data [ row * 18 + col2 ] = - e2 . getIdx ( j ) ; } } } }
The matrix E is a linear system for computing the trifocal tensor . The columns are the unknown square matrices from view 2 and 3 . The right most column in both projection matrices are the provided epipoles whose values are inserted into E