summaryrefslogtreecommitdiffhomepage
path: root/tracker-pt/point_extractor.cpp
AgeCommit message (Collapse)Author
2017-06-30tracker/pt: reformat lightlyStanislaw Halik
2017-06-22tracker/pt: replace point extraction algorithmStanislaw Halik
Profiling over a longer time period showed a bottleneck while iterating pixels with `cv::floodFill()'. Contours are actually faster, and we have MeanShift to establish the proper center basing on pixel intensities.
2017-06-19tracker/{aruco,pt}: convert camera image with BGR weightsStanislaw Halik
We were using the wrong weights for all the years. Fuck me.
2017-06-18tracker/pt: tweak meanshift cpu usageStanislaw Halik
2017-06-12tracker/pt: cleanupStanislaw Halik
Also, changing "f" typedef to "float" won't break the build anymore.
2017-06-12tracker/pt: fix LED radius offsetStanislaw Halik
2017-06-11tracker/pt: show detected blobs as circlesStanislaw Halik
2017-04-18many: use std::f{max,min} for floating-point valuesStanislaw Halik
2017-04-18tracker/pt: revert extractor changeStanislaw Halik
2017-04-18tracker/pt: replace original blob center search with meanshiftStanislaw Halik
The functions are almost identical so why not. I removed several bits: - weighting by squared pixel value is bad. weight by pixel value instead. - making the ROI twice as big doesn't make sense and makes for misdetected blobs. remove it. - switch radius coefficient to something doing less iterations. - sprinkle some __restrict pointer qualifier. - cv::floodfill invocation had some hardcoded flag value. - point radius circle and the bullseye line length weren't adjusted by scaling ratio. while the circle fitted the radius tightly, it was now clutter, so I removed it, leaving only the properly-scaled bullseye. - brightness had to go sadly since it's not accumulated anymore.
2017-03-03tracker/pt: show average point radius on the displayopentrack-2.3.1_fix3Stanislaw Halik
Helps with choosing automatic threshold slider position.
2017-02-21tracker/pt: change meanshift kernel size coefficientStanislaw Halik
From my usage the value of 1.5 is excessively conservative.
2017-02-21tracker/pt: resize the camera feed, not the previewStanislaw Halik
This makes the point size text and point crosses not alias due to the resize. Due to nice pixel coordinate system, the cross-drawing lambda only needs minimal changes.
2016-12-16tracker/pt: refactor camera info handlingStanislaw Halik
- Pass `struct CamInfo' rather than several elements separately - Reformat - Return `struct CamInfo' together with the frame since then it's always valid - Move the focal length formula into `struct CamInfo' - Remove incorrect focal length formula rather than #if 0 - Pass some stuff by reference and not by pointer
2016-12-10tracker/pt: make overlay look more of the same on 320x240 as 640x480Stanislaw Halik
2016-12-09tracker/pt: show right overlay wrt frame sizeStanislaw Halik
2016-12-09tracker/pt: use the right delta for iteration stopStanislaw Halik
2016-12-09tracker/pt: inline meanshift eval funStanislaw Halik
2016-12-09tracker/pt: improved precision and noise rejection by mean shift filteringDaMichel
2016-11-12tracker/pt: refactorStanislaw Halik
- separate .{cpp,hpp} for few classes - don't include namespaces globally; harmless but looks bad anyway - class with all public members to struct
2016-10-11tracker/pt: fix brain fart in extractorStanislaw Halik
It's multiplied by 3 just a few lines below. So ~2 is actually a good lower bound.
2016-10-11tracker/pt: increase min point radius to sensible valueStanislaw Halik
We can't possibly have LEDs smaller than (6/3=2) each. Especially not (2.5/6).
2016-10-10tracker/pt: get rid of heap allocationStanislaw Halik
Use stack arrays rather than vectors. std::array may be a better choice though.
2016-09-28tracker/pt: don't check for blob limit pointlesslyStanislaw Halik
It's branch predicted anyway, but for clarity.
2016-09-25tracker/pt: square the center weightStanislaw Halik
Follow original implementation.
2016-09-21tracker/pt: fix area/radius confusion in extractorStanislaw Halik
2016-09-21tracker/pt: fix harmless fencepost errorStanislaw Halik
2016-09-21many: remove compat/pi-constant.hppStanislaw Halik
With -D_USE_MATH_DEFINES MSVC defines the standard M_PI and friends. Since this preprocessor definition is now always passed as part of the build system for MSVC. We can use M_PI as if on a mission.
2016-09-16tracker/pt: get rid of pt_types classStanislaw Halik
2016-08-28tracker/pt: merge 2 variables used exactly the same wayStanislaw Halik
2016-08-12all: rename modules s#^opentrack-##. and opentrack -> apiStanislaw Halik
Adjust usages.
2016-07-31tracker/{pt,aruco}: don't include opencv highgui, videoio is enoughStanislaw Halik
2016-07-25tracker/pt: drop signed/unsigned warningStanislaw Halik
2016-07-20tracker/pt: change brightness formulaStanislaw Halik
Use square root of area. Otherwise very small bright points are unfairly used.
2016-07-20tracker/pt: adjust min/max radius for auto thresholdStanislaw Halik
2016-07-20tracker/pt: fix wrong input to flood fillStanislaw Halik
The binary frame needs to be used, not grayscale. v2: Use brightness for sorting points.
2016-07-19tracker/pt: reduce lockingStanislaw Halik
2016-07-19move nan check to compatStanislaw Halik
2016-07-19tracker/pt: round text position of displayed point radiiStanislaw Halik
2016-07-19tracker/pt: replace point extractor with original one by Patrick RuoffStanislaw Halik
The new extractor we've been using doesn't take into account brightness at all. All contours give is the ability to sort points by circularity. v2: Change the auto threshold point size range to 2->7 pixels radius. Issue: #389 v3: sort by radius instead
2016-07-16tracker/pt: don't scale down auto threshold valueStanislaw Halik
Also, make the slider signify the max point radius (hence squaring).
2016-07-16tracker/pt: declare floating-point type size in one placeStanislaw Halik
We want double precision for POSIT. It's best for the type to be set in ope place without the need to go over everything while switching it back and forth during tests. Machine epsilon for float is very small as per <https://en.wikipedia.org/wiki/Machine_epsilon>. Also see the absurdly high epsilon of 1e-4 of POSIT that we've had. With floats, making the epsilon lower resulted in change deltas flushing to zero. This typically led to the translation Z value being very unstable in PT. After the epsilon and data type size changes the Z value is stable.
2016-06-21tracker/pt: adjust auto threshold max area sizeStanislaw Halik
2016-06-21tracker/pt: fix points at (0,0) which are really NaNStanislaw Halik
Issue: #318 cf. http://forum.il2sturmovik.ru/topic/2291-open-track/page-26
2016-05-15many: remove executable bit from source filesStanislaw Halik
We no longer have this recurring problem since I enabled ignoring executable bit changes on the Windows workstation.
2016-05-13Revert "tracker/pt: experimental non-white color removal"Stanislaw Halik
This reverts commit 546cfb5ad52dcfe1421d1af5e7baeada588ac735. @MathijsG points out that some users have red LEDs, not uniform white. Issue: #355
2016-05-13tracker/pt: adjust auto threshold max pixel valueStanislaw Halik
The confusion stems from the max slider value. It's 255, not 100 as is the default. Max pixel count change to 20 was confused as we'll counting area and not radius here. Taking into account that the value was divided by 100 previously, it's bit less than the previous one but not as confused as then. Reported-by: @MathijsG Issue: #355
2016-04-29tracker/pt: conversion to unsigned char clamps by itselfStanislaw Halik
Remove redundant operation on the frame.
2016-04-27tracker/pt: sensible max point sizeStanislaw Halik
2016-04-27tracker/pt: experimental non-white color removalStanislaw Halik
It's enabled only for automatic thresholding. With it on, it's possible to keep tracking in normal light conditions without changing gain or exposure beforehand. It won't function on badly overexposed images, or with other bright white colors in the frame. It should function on somewhat overexposed images. CPU usage is somewhat high, even taking advantage of all OpenCV SIMD goodness as per the code. We can revert the change if user reception is bad.