The Timbeter log detection algorithm is a multi-step process. Each step progressively improves detection quality while while devoting more time to each potential log detection.
The stages are:
finding initial log candidates
merging candidates into a single log detection
filtering false detections
refining the diameter and location of detections
secondary log detection process.
Initial candidates are found using a sliding window approach. A window considers different rectangular subsections of the image and a detection candidate is created each time the window exactly overlaps a log. The window is moved and scaled, so that all possible log locations and sizes are tested for. Meaning roughly 20 million individual checks every time for an average-sized image.
A single log may trigger the initial detection algorithm multiple times, so many candidates may correspond to the same physical log. Because of this, candidates that are very close to each other are merged into a single log detection. The size and location are set from the weighted average of the initial candidates. The weight comes from the confidence of the candidate.
Once the initial logs are detected, they are filtered: the most unlikely log detections are subsequently deleted. This is based on several different properties. For example, very small detections are much likelier to be false detections. Also, logs that are very far from all other detections are probably either false detections or it is an actual log that is not part of the stack. Many additional factors are considered, including the confidence given by the initial detection and the amount of overlap the detections have with each other.
Filtering is followed by the refining step. The refining process improves the accuracy of found detections. Because the initial detector has to check so many individual locations, it has to be simplified. This unfortunately makes it somewhat imprecise. The refining algorithm, however, is generally only applied to the few hundred detections that are left after filtering. Allowing the refining algorithm to use more processing power and thus, be more precise.
Next, a secondary algorithm for finding logs is applied. Similarly to the initial detection process, this algorithm uses a sliding window approach. However, there is a notable difference: while the initial detection is based on the generic appearance of logs in images, the secondary detector only searches for logs that are similar to those already found. This allows the secondary detector to be able to find logs that have a more unusual appearance. In addition, the secondary detector is only applied to the area of the image, where logs had already been found by the initial detection in Step #1. Detections found by the secondary detector are filtered and refined, similar to the initial detection.
Steps 1 to 5 occur in as little as 30 seconds!
Timbeter's multi step approach builds on the results of previous algorithms allowing Timbeter to achieve precise results in a short amount of time, even on mobiles and tablets with weaker cameras. While even stronger algorithms might be used on a PC (due to PCs stronger processing power), Timbeter would rather provide the measurer their results instantly, even if they are in the middle of a forest with little or no internet connection.
Through extensive research and experimentation the Timbeter engineering team are continually improving the detection quality, so expect more improvements to come in the future.