head_registration.h
Go to the documentation of this file.
00001 
00002 #ifndef HEAD_TRACKING_H
00003 #define HEAD_TRACKING_H
00004 #include <pcl/kdtree/kdtree_flann.h>
00005 #include <pcl/surface/mls.h>
00006 #include <pcl/registration/ia_ransac.h>
00007 #include <pcl/registration/icp_nl.h>
00008 #include <pcl/segmentation/extract_clusters.h>
00009 
00010 #include <hrl_head_registration/pcl_basic.h>
00011 #include <hrl_head_registration/skin_color_util.h>
00012 #include <hrl_head_registration/hsl_rgb_conversions.h>
00013 
00014 typedef pcl::KdTree<PRGB> KDTree;
00015 
00016 #define COPY_PT_INTO_CLOUD(source, dest, ind) \
00017 do { \
00018     PRGB pt; \
00019     pt.x = source->points[ind].x; pt.y = source->points[ind].y; pt.z = source->points[ind].z; \
00020     pt.rgb = source->points[ind].rgb; \
00021     dest->points.push_back(pt); \
00022 } while(0)
00023 
00024 #define PT_IS_NOT_NAN(pc, ind) ( (pc)->points[(ind)].x == (pc)->points[(ind)].x && \
00025                                  (pc)->points[(ind)].y == (pc)->points[(ind)].y && \
00026                                  (pc)->points[(ind)].z == (pc)->points[(ind)].z  )
00027 
00028 void extractSkinPC(const PCRGB::Ptr& pc_in, PCRGB::Ptr& pc_out, double thresh);
00029 int32_t findClosestPoint(const PCRGB::Ptr& pc, uint32_t u, uint32_t v);
00030 void sphereTrim(const PCRGB::Ptr& pc_in, PCRGB::Ptr& pc_out, uint32_t ind, double radius);
00031 
00032 
00033 void extractFace(const PCRGB::Ptr& input_pc, PCRGB::Ptr& out_pc, int u_click, int v_click);
00034 void extractFaceColorModel(const PCRGB::Ptr& input_pc, PCRGB::Ptr& out_pc, int u_click, int v_click);
00035 bool findFaceRegistration(const PCRGB::Ptr& template_pc, const PCRGB::Ptr& input_pc,
00036                           int u_click, int v_click, Eigen::Affine3d& tf_mat);
00037 
00038 #endif


hrl_head_registration
Author(s): Kelsey Hawkins
autogenerated on Wed Nov 27 2013 11:45:27