fusion_probabilities.cpp 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "fusion_probabilities.h"
  2. int iv::fusion::FusionProbabilities::ComputePointInBox(cv::Point2f PointInCamera, Point top_left, Point bot_right)
  3. {
  4. if(!((PointInCamera.x>=top_left.x)&&(PointInCamera.x<=bot_right.x)&&(PointInCamera.y>=bot_right.y)&&(PointInCamera.y<=top_left.y)))
  5. {
  6. return 0;
  7. } else {
  8. return 1;
  9. }
  10. }
  11. int iv::fusion::FusionProbabilities::ComputeLidarCameraFusionProb(const iv::fusion::fusionobject& li_ra_fusion_object, const iv::vision::Bbox3D& vision_object )
  12. {
  13. std::vector<cv::Point2f> lidarIncamera;
  14. int flag = 0;
  15. Point top_left, bot_right;
  16. top_left.x = vision_object.top_left_x();
  17. top_left.y = vision_object.top_left_y();
  18. bot_right.x = vision_object.bottom_right_x();
  19. bot_right.y = vision_object.bottom_right_y();
  20. iv::fusion::Transformation::PointInCamera( li_ra_fusion_object,lidarIncamera);
  21. for(std::vector<cv::Point2f>::iterator point2D = lidarIncamera.begin(); point2D != lidarIncamera.end(); point2D++)
  22. {
  23. flag = flag + ComputePointInBox(*point2D, top_left,bot_right);
  24. }
  25. lidarIncamera.clear();
  26. return flag;
  27. }
  28. //int iv::fusion::FusionProbabilities::ComputeRadarInBox(Point radarincamera, Point top_left, Point bot_right)
  29. //{
  30. // if(!((radarincamera.x>=top_left.x)&&(radarincamera.x<=bot_right.x)&&(radarincamera.y>=bot_right.y)&&(radarincamera.y<=top_left.y)))
  31. // {
  32. // return 0;
  33. // } else {
  34. // return 1;
  35. // }
  36. //}
  37. //int iv::fusion::FusionProbabilities::ComputeRadarCameraFusionProb(const iv::radar::radarobject &radar_object, const iv::vision::cameraobject &camera_object)
  38. //{
  39. // double z = 0.3;
  40. // int flag = 0;
  41. // Point top_left, bot_right;
  42. // top_left.x = camera_object.x() - int(camera_object.w()/2);
  43. // top_left.y = camera_object.y() + int(camera_object.h()/2);
  44. // bot_right.x = camera_object.x() + int(camera_object.w()/2);
  45. // bot_right.y = camera_object.y() - int(camera_object.h()/2);
  46. // for(int i = 0; i<5; i++)
  47. // {
  48. // Point radar_in_world, radar_in_camera;
  49. // radar_in_world.x = radar_object.x();
  50. // radar_in_world.y = radar_object.y();
  51. // radar_in_world.z = z*(i+1);
  52. // radar_in_camera = iv::fusion::Transformation::RadarToCamera(radar_in_world);
  53. // flag = flag + iv::fusion::FusionProbabilities::ComputeRadarInBox(radar_in_camera, top_left, bot_right);
  54. // }
  55. // if(flag>=3)
  56. // {
  57. // return 1;
  58. // }else {
  59. // return 0;
  60. // }
  61. //}
  62. //毫米波雷达object点是否和激光雷达object的俯视box匹配
  63. int iv::fusion::FusionProbabilities::ComputRadarLidarmatch(const iv::radar::radarobject& radarPoint, const iv::lidar::object& lidarobject)
  64. {
  65. if(!((radarPoint.x()>=lidarobject.max_point().x())&&(radarPoint.x()<= lidarobject.min_point().x())&&
  66. ((radarPoint.y() - 2)>=lidarobject.max_point().y())&&((radarPoint.y() - 2)<=lidarobject.min_point().y())))
  67. {
  68. return 0;
  69. } else {
  70. return 1;
  71. }
  72. }