-
Notifications
You must be signed in to change notification settings - Fork 5
Generation Run Analysis
Once the program has finished, a GUI will pop up with data collected from the run. You are encouraged to double check this data to make sure it is accurate. Of course, we do maintain a high degree of confidence in the accuracy of this program, so feel free to trust the standard output results once you are comfortable with the program to save time if you choose to use this in a pipeline.
The sine wave shown on the bottom is a smoothed graph of the average pixel value on the y axis and frame number on the x axis. The red dots are the local maxes of the graph. The green dots are the first valley and the last valley.
The graph by default shows 50 frames. You can navigate through the graph by clicking the arrow buttons on the left and right of the graph.
For each frame, you can see the raw, edge detected, and contour applied images. You can check these frames to make sure that they are low on noise and correctly formed. The culprit for malformed graphs will probably become apparent by looking at the frames.
The "<<" and ">>" skip to the previous and next local max on the graph. The "<" and ">" jumpt to the previous and next frame on the graph. The number in the center is the index of the frame of the images. It turns red when that frame is a local max.
This is a list of all the frame indexes of local maxes that the graph found. These are all points x such that f(x-1) < f(x) > f(x+1). If the graph has errors (i.e. a jagged peak has two maxes), you can change the list in the text box by adding points, removing points, and changing points. The number of local maxes between the start and end valley is used to determine your droplet generation rate. The size of the droplets is analyzed at each local max as well.
This 2 member list is the start and end valley frame index. This is the first and last point x such that f(x-1) > f(x) < f(x+1). The droplet generation rate is obtained by the following equation.
Drops per second = (# of local maxes / (end valley - start valley)) * FPS
This is a list of all droplet diameters in pixels. You can add, change, or omit any of these values. If there is an error in one of the diameters, the easiest way to fix it is probably just deleting that data point.
These are the weights used to smooth the graph in triangle smoothing (moving weighted average). Let's take w1, w2, ..., wn as our weights. For every data point in set f, make a new data set g. Then assign each point i in the data set f as the following equation for g.
g(i) = (f(i) + w1 * f(i-1) + w1 * f(i+1) + w2 * f(i-2) + w2 * f(i+2) ... + wn * f(i-n) + wn * f(i+n)) / (w1 + w2 + ... + wn + 1)
The minVal and maxVal for hysteresis in Canny's edge detection. Gradient values below the minVal are definitely not edges. Values above the maxVal are definitely edges. Values in between depend on their proximity to a sure edge. Read more on OpenCV's implementation here. Basically, set these numbers lower if the frames are too dark or all black. Raise them if there is too much noise that cause the contours to fit incorrectly.