scalar_t _head_ux, _head_uy, _head_vx, _head_vy;
scalar_t _head_ux_nopolarity, _head_uy_nopolarity, _head_vx_nopolarity, _head_vy_nopolarity;
- // The body frame in that _common_scale. The vectors are of length the radii of the ellipse
+ //**********************************************************************
+ // Useless fields, but they are necessary so that the optimized code
+ // with g++ gives the same results as some reference
+ // experiments. Sorry for that.
scalar_t _body_xc, _body_yc;
- scalar_t _body_radius_1, _body_radius_2, _body_tilt;
- scalar_t _body_ux, _body_uy, _body_vx, _body_vy;
- scalar_t _body_window_scaling;
- int _body_edge_shift;
+ scalar_t _body_tilt;
+ //**********************************************************************
- // The belly frame is defined by the body location and head scale
+ // The belly frame is defined by the belly location and head scale
scalar_t _belly_xc, _belly_yc;
scalar_t _belly_ux, _belly_uy, _belly_vx, _belly_vy;
scalar_t _belly_ux_nopolarity, _belly_uy_nopolarity, _belly_vx_nopolarity, _belly_vy_nopolarity;
scalar_t _belly_window_scaling;
- // The head-belly frame is defined by the head location and the body
- // center location
+ // The head-belly frame is defined by the head location and the belly
scalar_t _head_belly_xc, _head_belly_yc;
scalar_t _head_belly_ux, _head_belly_uy, _head_belly_vx, _head_belly_vy;
int _head_belly_edge_shift;
PiReferential(PoseCell *cell);
enum {
- // A frame centered on the head, of size four times the head radius
- // and, flipped verically if the body center is on the left of the
- // head center
+ // A square frame centered on the head, of size four times the
+ // head radius and, flipped horizontally if the belly is on the
+ // left of the head center
RM_HEAD,
// Same as above, without the flipping
RM_HEAD_NO_POLARITY,
- // A frame centered on the body center, of size size times the
- // head rardius, flipped vertically if the body center is on the
- // left of the head center
+
+ // A frame centered on the belly, of size eight times the head
+ // radius, flipped horizontally if the belly is on the left of the
+ // head center
RM_BELLY,
// Same as above, without the flipping
RM_BELLY_NO_POLARITY,
// A frame centered on the middle point between the head center
- // and the body center, of size twice the distance head center -
- // body center in the head-body direction, and of four times the
- // head radius in the other
+ // and the belly, of size twice the distance head center - belly
+ // in the head-belly direction, and of four times the head radius
+ // in the other
RM_HEAD_BELLY,
// Same as above with rotation of the edges
- RM_HEAD_BELLY_EDGES,
-
- // Not finished yet
- RM_BODY,
- RM_BODY_EDGES
+ RM_HEAD_BELLY_EDGES
};
int common_scale();
// The rectangle coordinates are in the reference frames. For the
- // head for instance , [-1,1] x [-1,1] corresponds to the head
- // bounding box
+ // head for instance [-0.5, 0.5] x [-0.5, 0.5] corresponds to the
+ // head bounding box
void register_rectangle(int registration_mode,
Rectangle *original,
int registration_mode, Rectangle *window,
int filled);
- void draw_edge_and_scale(RGBImage *image,
- int registration_mode, Rectangle *window,
- int _tag, int _edge_scale);
-
static void print_registration_mode(ostream *out, int registration_mode);
};