processing
Classes and functions used to correlate and match the pixel groups in thresholded images across cameras for a given timestep.
Classes
This Class holds all of the information regarding camera matrices and transforms of them. |
|
A smooting filter implementation for points in 3d space. |
|
A kalman filter implementation for tracking in 2D. |
Functions
Creates a ray with arbitrary specified length from the camera through the image pixel specified. |
|
This function does optimal correction of the points in the images according to the matrices of the cameras. If the world was perfect and there was no noise, there would be no need for this step as the epipolar lines from the matching points of each camera’s image would intersect in 3d space. However, since there is noise they don’t always intersect. This function adjusts the camera pixels in such a way that the minimum amount of pixel movement in order to get the epipolar lines to intersect is achieved. |
|
Enumerates all possible combinations of a 2 tier nested list where the length of the first list is variable, and each list contained is of the same length. |
|
Automatic method for finding point correspondences across camera images. Works when the number of points is low, like 5 or smaller. The number of combinations to calculate is given by (maxNumPoints!)^(numCam -1). For example, 3 points with 6 cams = ~8000 combinations, where as 5 points with 6 cams = ~24 billion combos) |
|
Since checking every possibility of combination for large numbers of cameras and points is computationally irresponsible, a quick and dirty workaround is to ask the user to provide us with the inital matching points for each image. The user is presented with a timestep where all cameras can see all of the points that are to be tracked. The pixel clusters that were found by the thresholding algorithm are shown by small markers. The user is asked to double click on the first point to track for the first camera, then the image for the second camera is shown and the user clicks the corresponding point in this image to what they clicked int the previous image. This proceeds through all of the cameras and then begins again with the first camera and the next point that is to be tracked. |
|
Different types of methods for ordering points in an unsupervised manner. No guarantee regarding which ones function and which ones don’t. They are hanging around as examples and historical reasons. |
|
Different types of methods for ordering points in an unsupervised manner. No guarantee regarding which ones function and which ones don’t. They are hanging around as examples and historical reasons. |
|
Different types of methods for ordering points in an unsupervised manner. No guarantee regarding which ones function and which ones don’t. They are hanging around as examples and historical reasons. |
|
Triangulates the matched pixel set it is given and returns the triangulated 3d points sorted into timesteps. |
|
Triangulate the matched pixels for each timestep, but use the information about previous steps to inform the triangulation and make it more smooth in the presence of errors. (Not currently working) |
|
Triangulate the matched pixels for each timestep, but use a kalman filter to inform the triangulation and make it more smooth in the presence of errors. |
|
Multiplication operator overload for matrices to be multiplied by points. |