From: Wheeler, F. (CRD) <wh...@cr...> - 2002-03-14 15:08:34
|
Here is some code that warps an image according to a homography using vil_warp. #include <vcl_iostream.h> #include <vcl_fstream.h> #include <vul/vul_arg.h> #include <vnl/vnl_double_3x3.h> #include <vil/vil_load.h> #include <vil/vil_save.h> #include <vil/vil_warp.h> class h_mapping : public vil_warp_mapping { public: h_mapping (const vnl_double_3x3 & H) : H_(H) { } virtual ~h_mapping () { } virtual void forward_map (double x1, double y1, double * x2, double * y2) const { assert (0); } virtual void inverse_map (double x2, double y2, double * x1, double * y1) const { double d = H_(2,0)*x2 + H_(2,1)*y2 + H_(2,2); *x1 = (H_(0,0)*x2 + H_(0,1)*y2 + H_(0,2)) / d; *y1 = (H_(1,0)*x2 + H_(1,1)*y2 + H_(1,2)) / d; } private: vnl_double_3x3 H_; }; int main (int argc, char ** argv) { vul_arg<char *> ifn("-i", "Input image filename", 0); vul_arg<char *> ofn("-o", "Output image filename", 0); vul_arg<char *> hfn("-h", "Homography filename", 0); vul_arg<int> ow ("-ow", "Output image width", -1); vul_arg<int> oh ("-oh", "Output image height", -1); vul_arg_parse (argc, argv); assert (ifn() && ofn() && hfn()); vcl_ifstream hfs (hfn()); vnl_double_3x3 H; hfs >> H; vil_image iimg = vil_load (ifn()); h_mapping mapper (H); vil_image oimg = vil_warp (iimg, mapper, vil_warp_interpolation_bilinear, ow(), oh()); vil_save (oimg, ofn(), iimg.file_format()); return 0; } -----Original Message----- From: "Van Genechten, Bjorn" [mailto:Bjo...@as...] Sent: Thursday, March 14, 2002 5:53 AM To: Vxl User List (E-mail) Subject: [Vxl-users] vil_warp Is there someone who has some example code available wich uses the vil_warp methods ? Thanks, Bjorn |