Introdcution
Here we will collect all ideas how to speed-up the code and improve recognition of the rings. I just collected everything proposed so far. Please, add your ideas and comment on the presented ones.
Preprocessing steps
- Before doing anything else, find all bright in-focus dots and remove them from the image. This should improve noise reduction.
Reducing area to search for rings
- Hough transform
- Hough transform works well with sharp edges. According to Thorsten and Alexandre it fails with test data.
- Shall we pass through some edge-detection / segmentation algorithm before?
- Comment: usually edge-detection (Canny algorithm) is first applied
- Shall we pass through some edge-detection / segmentation algorithm before?
- Hough transform works well with sharp edges. According to Thorsten and Alexandre it fails with test data.
- Convolution as implemented by Thorsten
- How to select threshold?
- Increase threshold step-by-step until for a few steps only false rings are found?
- How to select threshold?
- Under-sample data. We can average 4- or 9-neighboring points (or even more).
- We still should be able to find big rings, but checking 4 times less points. This also will reduce maximal thickness of pattern we are looking for and hence allow us to use fastest Thorsten implementation. The actual position of the ring is tuned later in the code anyway if I remember correctly.
- This should sharpen the edges and may be helpful for Hough algorithm.
- We can define the maximal speed of the particles and only look for them in the area they can reach from previously detected positions. This as well can limit the radiuses to check.
Code optimization
- We can try Xeon Phi with larger caches which could result in faster sorting.
Last modified 11 years ago
Last modified on Aug 29, 2014, 4:33:01 PM