Go to the documentation of this file.00001 #ifndef rgrl_matcher_pseudo_3d_h_
00002 #define rgrl_matcher_pseudo_3d_h_
00003
00004
00005
00006
00007
00008
00009 #include <rgrl/rgrl_matcher.h>
00010 #include <rgrl/rgrl_feature_set.h>
00011 #include <rgrl/rgrl_view.h>
00012 #include <rgrl/rgrl_transformation.h>
00013 #include <rgrl/rgrl_scale.h>
00014 #include <rgrl/rgrl_feature_sptr.h>
00015 #include "rgrl_evaluator.h"
00016 #include <rgrl/rgrl_mask_sptr.h>
00017 #include <rgrl/rgrl_mask.h>
00018 #include <vil3d/vil3d_image_view.h>
00019 #include <vnl/vnl_double_3.h>
00020 #include <vnl/vnl_int_3.h>
00021 #include "rgrl_evaluator_sptr.h"
00022 #if 0
00023 #include <itkImage.h>
00024 #endif
00025
00026
00027
00028
00029
00030 template < class PixelType >
00031 class rgrl_matcher_pseudo_3d
00032 : public rgrl_matcher
00033 {
00034 public:
00035
00036 class rgrl_mapped_pixel_type
00037 {
00038 public:
00039 vnl_int_3 location;
00040 double intensity;
00041 double weight;
00042 };
00043
00044 typedef vcl_vector< rgrl_mapped_pixel_type > rgrl_mapped_pixel_vector_type;
00045
00046
00047
00048 rgrl_matcher_pseudo_3d( vil3d_image_view<PixelType> const& from_image,
00049 vil3d_image_view<PixelType> const& to_image,
00050 vnl_vector< double > const& from_spacing_ratio,
00051 vnl_vector< double > const& to_spacing_ratio,
00052 rgrl_evaluator_sptr evaluator,
00053 rgrl_mask_sptr mask = 0 );
00054
00055
00056
00057
00058 rgrl_match_set_sptr
00059 compute_matches( rgrl_feature_set const& from_features,
00060 rgrl_feature_set const& to_features,
00061 rgrl_view const& current_view,
00062 rgrl_transformation const& current_xform,
00063 rgrl_scale const& current_scale,
00064 rgrl_match_set_sptr const& old_matches = 0 );
00065
00066
00067 rgrl_type_macro( rgrl_matcher_pseudo_3d, rgrl_matcher);
00068
00069 private:
00070
00071 void
00072 map_region_intensities( rgrl_transformation const& trans,
00073 rgrl_feature_sptr feature_sptr,
00074 rgrl_mapped_pixel_vector_type & mapped_pixels ) const;
00075
00076
00077 void
00078 map_region_intensities( vcl_vector< vnl_vector<int> > const& pixel_locations,
00079 rgrl_transformation const& trans,
00080 rgrl_feature_sptr feature_sptr,
00081 rgrl_mapped_pixel_vector_type & mapped_pixels) const;
00082
00083 void
00084 match_mapped_region( rgrl_feature_sptr mapped_feature,
00085 rgrl_mapped_pixel_vector_type const& mapped_pixels,
00086 rgrl_scale const& current_scale,
00087 vcl_vector< rgrl_feature_sptr > & matched_to_features,
00088 vcl_vector< double > & match_weights ) const;
00089
00090 double compute_response( vnl_double_3 const& mapped_location,
00091 rgrl_mapped_pixel_vector_type const& mapped_pixels,
00092 vnl_double_3 const& shift ) const;
00093
00094 private:
00095 #if 0
00096 typedef itkImage< PixelType, Dimension > ImageType;
00097 #endif
00098
00099
00100
00101 vil3d_image_view<PixelType> from_image_;
00102 vil3d_image_view<PixelType> to_image_;
00103
00104
00105
00106
00107
00108
00109
00110 rgrl_mask_sptr mask_;
00111 rgrl_evaluator_sptr evaluator_;
00112
00113
00114
00115 vnl_double_3 from_spacing_ratio_;
00116 vnl_double_3 to_spacing_ratio_;
00117 };
00118
00119 #endif // rgrl_matcher_pseudo_3d_h_