@@ -466,6 +466,8 @@ void RegionModality::PrecalculateCameraVariables() {
466466 ppv_ = camera_ptr_->intrinsics ().ppv ;
467467 image_width_minus_1_ = camera_ptr_->image ().cols - 1 ;
468468 image_height_minus_1_ = camera_ptr_->image ().rows - 1 ;
469+ image_width_minus_2_ = camera_ptr_->image ().cols - 2 ;
470+ image_height_minus_2_ = camera_ptr_->image ().rows - 2 ;
469471}
470472
471473void RegionModality::PrecalculatePoseVariables () {
@@ -636,10 +638,10 @@ bool RegionModality::CalculateSegmentProbabilities(
636638 float v_f = center_v + v_step * (float (u) - center_u) + 0 .5f ;
637639 float v_f_end = v_f + v_step * float (line_length_minus_1_);
638640
639- // Check if line is on image
641+ // Check if line is on image (margin of 1 for rounding errors of v_f_end)
640642 if (u < 0 || u_end > image_width_minus_1_ || int (v_f) < 0 ||
641- int (v_f) > image_height_minus_1_ || int (v_f_end) < 0 ||
642- int (v_f_end) > image_height_minus_1_ ) {
643+ int (v_f) > image_height_minus_1_ || int (v_f_end) < 1 ||
644+ int (v_f_end) > image_height_minus_2_ ) {
643645 return false ;
644646 }
645647
@@ -692,10 +694,10 @@ bool RegionModality::CalculateSegmentProbabilities(
692694 float u_f = center_u + u_step * (float (v) - center_v) + 0 .5f ;
693695 float u_f_end = u_f + u_step * float (line_length_minus_1_);
694696
695- // Check if line is on image
697+ // Check if line is on image (margin of 1 for rounding errors of u_f_end)
696698 if (v < 0 || v_end > image_height_minus_1_ || int (u_f) < 0 ||
697- int (u_f) > image_width_minus_1_ || int (u_f_end) < 0 ||
698- int (u_f_end) > image_width_minus_1_ ) {
699+ int (u_f) > image_width_minus_1_ || int (u_f_end) < 1 ||
700+ int (u_f_end) > image_width_minus_2_ ) {
699701 return false ;
700702 }
701703
0 commit comments