Guest User

Untitled

a guest
Jul 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include <vil/vil_rgb.h>
  2. #include <vil/vil_load.h>
  3. #include <vil/vil_save.h>
  4. #include <vil/vil_image_view.h>
  5. #include <vil/vil_convert.h>
  6. #include <vil/vil_image_view.h>
  7. #include <vgl/vgl_point_2d.h>
  8. #include <vgl/vgl_homg_point_2d.h>
  9. #include <vpgl/vpgl_poly_radial_distortion.h>
  10.  
  11. //#include <vpgl/vpgl_poly_radial_distortion.txx>
  12. //vpgl_POLY_RADIAL_DISTORTION_INSTANTIATE(unsigned int,5);
  13.  
  14. int main(void)
  15. {
  16. vil_image_view<vil_rgb<vxl_byte> > img;
  17. img = vil_load("input_image.jpg");
  18.  
  19. // Para crear imagen nueva del mismo tamano
  20. unsigned ni = img.ni();
  21. unsigned nj = img.nj();
  22.  
  23. vil_image_view<vil_rgb<vxl_byte> > image(ni,nj);
  24.  
  25. // Distortion Coefficients, Utilizando el MatLab Calibration ToolBox
  26. // Camara Panasonic, Lumix DMC-TZ5 de Richard
  27. vcl_vector<double> k(2);
  28. k[0] = -0.0005; //-0.07536;
  29. k[1] = 0.000001; //0.08944;
  30. //k[2] = -0.00061;
  31. //k[3] = 0.00176;
  32. //k[4] = 0.00000;
  33.  
  34. // Second parameter of vpgl_poly_radial_dist<unsigned, k.size()>
  35. vpgl_poly_radial_distortion<double, 2>
  36. dist(vgl_point_2d<double>(ni/2,nj/2), k);
  37.  
  38. // Copy distorted points position to create fixed image.
  39. for (unsigned j = 0; j < img.nj(); ++j)
  40. {
  41. for (unsigned i = 0; i < img.ni(); ++i)
  42. {
  43. vgl_homg_point_2d<double> punto = vgl_homg_point_2d<double>(i, j);
  44. punto = dist.distort(punto);
  45. if( punto.x()<img.ni() && punto.y()<img.nj() && punto.x() >= 0 && punto.y() >= 0 )
  46. image(i,j) = img(punto.x(), punto.y());
  47. }
  48. }
  49.  
  50. vil_save(image, "dist_image.jpg");
  51.  
  52.  
  53. img = vil_load("dist_image.jpg");
  54. // Copy undistorted points position to create fixed image.
  55.  
  56. for (unsigned j = 0; j < img.nj(); ++j)
  57.  
  58. {
  59.  
  60. for (unsigned i = 0; i < img.ni(); ++i)
  61.  
  62. {
  63.  
  64. vgl_homg_point_2d<double> punto = vgl_homg_point_2d<double>(i, j);
  65.  
  66. punto = dist.undistort(punto);
  67. if( punto.x()<img.ni() && punto.y()<img.nj()
  68. && punto.x() >= 0 && punto.y() >= 0 )
  69. {
  70. image(i,j) = img(punto.x(),punto.y());
  71. }
  72.  
  73. }
  74.  
  75. }
  76.  
  77.  
  78.  
  79. vil_save(image, "undist_image.jpg");
  80.  
  81. return 0;
  82. }
Add Comment
Please, Sign In to add comment