24 #include <fvmodels/shape/accumulators/fit_accum.h> 26 #include <fvmodels/shape/circle.h> 36 const float FitAccum::TOO_SMALL_DELTA = 1.0e-3f;
43 FitAccum::FitAccum(
void)
49 FitAccum::~FitAccum(
void)
58 A00 = A01 = A02 = 0.0f;
59 A10 = A11 = A12 = 0.0f;
60 A20 = A21 = A22 = 0.0f;
72 A00 += 4 * pt.
x * pt.
x;
73 A01 += 4 * pt.
x * pt.
y;
76 A10 += 4 * pt.
y * pt.
x;
77 A11 += 4 * pt.
y * pt.
y;
84 float r2 = pt.
x * pt.
x + pt.
y * pt.
y;
98 A00 -= 4 * pt.
x * pt.
x;
99 A01 -= 4 * pt.
x * pt.
y;
102 A10 -= 4 * pt.
y * pt.
x;
103 A11 -= 4 * pt.
y * pt.
y;
110 float r2 = pt.
x * pt.
x + pt.
y * pt.
y;
120 FitAccum::getCount(
void)
const 129 FitAccum::getCircle(
void)
const 134 float delta = + A00 * A11 * A22 + A01 * A12 * A20 + A02 * A10 * A21
135 - A00 * A12 * A21 - A01 * A10 * A22 - A02 * A11 * A20;
137 if (delta > -TOO_SMALL_DELTA && delta < TOO_SMALL_DELTA)
150 c.
center.
x = (float)( ( + b0 * A11 * A22 + A01 * A12 * b2 + A02 * b1 * A21
151 - b0 * A12 * A21 - A01 * b1 * A22 - A02 * A11 * b2 ) / delta);
152 c.
center.
y = (float)( ( + A00 * b1 * A22 + b0 * A12 * A20 + A02 * A10 * b2
153 - A00 * A12 * b2 - b0 * A10 * A22 - A02 * b1 * A20 ) / delta);
154 c.
radius = (float)sqrt((+ A00 * A11 * b2 + A01 * b1 * A20 + b0 * A10 * A21
155 - A00 * b1 * A21 - A01 * A10 * b2 - b0 * A11 * A20 ) / delta
Fawkes library namespace.
unsigned int y
y coordinate
unsigned int x
x coordinate
Point with cartesian coordinates as unsigned integers.
int count
Number of pixels.
center_in_roi_t center
Center of object in ROI.
float radius
Radius of object.