Go to the documentation of this file.00001
00021 #ifndef POSE_VALIDATION_H
00022 #define POSE_VALIDATION_H
00023
00024 #include <rviz/ogre_helpers/render_system.h>
00025
00026 #include <OGRE/Ogre.h>
00027 #include <OGRE/OgreException.h>
00028 #include <OGRE/OgreRoot.h>
00029
00030 #include <HalconCpp.h>
00031
00032 #include "object_descriptor.h"
00033 #include "recognition_result.h"
00034
00035
00036
00037 namespace descriptor_surface_based_recognition {
00038
00042 class PoseValidation {
00043
00044 private:
00046 double image_width_;
00047
00049 double image_height_;
00050
00052 bool is_initialized_;
00053
00054
00056 Ogre::Root* root_;
00057 Ogre::SceneManager* scene_manager_;
00058 rviz::RenderSystem* render_sys_;
00059 Ogre::Camera* camera_;
00060 Ogre::SceneNode* camera_node_;
00061 Ogre::TexturePtr rtt_texture_;
00062 Ogre::RenderTexture* render_texture_;
00063 Ogre::RenderWindow *window_;
00064
00073 HalconCpp::HImage renderObjectImage(RecognitionResult *recognition_result, Ogre::MeshPtr mesh);
00074
00075
00076 public:
00077
00081 PoseValidation();
00082
00089 PoseValidation(double image_width, double image_height, double far_plane, double near_plane, double cx, double cy, double fx, double fy, int render_width, int render_height);
00090
00096 bool isInitialized() const;
00097
00107 HalconCpp::HTuple validateObject(ObjectDescriptor *object, RecognitionResult *recognition_result, Ogre::MeshPtr mesh);
00108
00118 bool compareHomographyMatrices(HalconCpp::HHomMat2D original, HalconCpp::HHomMat2D rendered, int pose_validation_dist_err);
00119
00120 };
00121
00122
00123 }
00124
00125 #endif