24 #include <fvmodels/shape/accumulators/fit_accum.h>
25 #include <fvmodels/shape/circle.h>
31 namespace firevision {
33 const float FitAccum::TOO_SMALL_DELTA = 1.0e-3f;
40 FitAccum::FitAccum(
void)
46 FitAccum::~FitAccum(
void)
55 A00 = A01 = A02 = 0.0f;
56 A10 = A11 = A12 = 0.0f;
57 A20 = A21 = A22 = 0.0f;
69 A00 += 4 * pt.
x * pt.
x;
70 A01 += 4 * pt.
x * pt.
y;
73 A10 += 4 * pt.
y * pt.
x;
74 A11 += 4 * pt.
y * pt.
y;
81 float r2 = pt.
x * pt.
x + pt.
y * pt.
y;
94 A00 -= 4 * pt.
x * pt.
x;
95 A01 -= 4 * pt.
x * pt.
y;
98 A10 -= 4 * pt.
y * pt.
x;
99 A11 -= 4 * pt.
y * pt.
y;
106 float r2 = pt.
x * pt.
x + pt.
y * pt.
y;
116 FitAccum::getCount(
void)
const
125 FitAccum::getCircle(
void)
const
130 float delta = +A00 * A11 * A22 + A01 * A12 * A20 + A02 * A10 * A21 - A00 * A12 * A21
131 - A01 * A10 * A22 - A02 * A11 * A20;
133 if (delta > -TOO_SMALL_DELTA && delta < TOO_SMALL_DELTA) {
143 c.
center.
x = (float)((+b0 * A11 * A22 + A01 * A12 * b2 + A02 * b1 * A21 - b0 * A12 * A21
144 - A01 * b1 * A22 - A02 * A11 * b2)
146 c.
center.
y = (float)((+A00 * b1 * A22 + b0 * A12 * A20 + A02 * A10 * b2 - A00 * A12 * b2
147 - b0 * A10 * A22 - A02 * b1 * A20)
149 c.
radius = (float)sqrt((+A00 * A11 * b2 + A01 * b1 * A20 + b0 * A10 * A21 - A00 * b1 * A21
150 - A01 * A10 * b2 - b0 * A11 * A20)
float radius
Radius of object.
center_in_roi_t center
Center of object in ROI.
int count
Number of pixels.
Fawkes library namespace.
Point with cartesian coordinates as unsigned integers.
unsigned int x
x coordinate
unsigned int y
y coordinate