X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=pi_referential.h;h=d5908f62dc2aeb40d0976e0720fa99d88c1e278a;hb=20ec321944108cd1fe74b37ea45db3ba1a2d526a;hp=d0747f2f228cfed80c0788e147d88705cab900d8;hpb=325a05c3977006fb111b0ed80c82122d1c04fb33;p=folded-ctf.git
diff --git a/pi_referential.h b/pi_referential.h
index d0747f2..d5908f6 100644
--- a/pi_referential.h
+++ b/pi_referential.h
@@ -12,7 +12,9 @@
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see . //
// //
-// Written by Francois Fleuret, (C) IDIAP //
+// Written by Francois Fleuret //
+// (C) Idiap Research Institute //
+// //
// Contact for comments & bug reports //
///////////////////////////////////////////////////////////////////////////
@@ -46,18 +48,21 @@ class PiReferential {
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_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;
@@ -73,36 +78,37 @@ public:
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,
+ 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,
@@ -116,10 +122,6 @@ public:
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);
};