|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Problem with distance calculation
Hey,
We are using RoboRealm for vision processing this year but we are having problems with the distance calculation. This is the code we have as of now: (the output distances are way off) Code:
def IsVertical(n):
return rr.GetArrayVariable("WIDTH")[n] < rr.GetArrayVariable("HEIGHT")[n]
width = 0
if IsVertical(i):
width = VtargetWidth_in
Hot[i] = False
else:
width = VtargetWidth_in
distance = width/(2*math.tan(cameraFieldOfView*(rr.GetArrayVariable("WIDTH")[i]/rr.GetVariable("IMAGE_WIDTH"))*math.pi/360.0))
Another one tried (better results, but still atleast 3ft errors): [this is only for vertical targets] Code:
if IsVertical(i):
d = VtargetRheight_in*imageHeight_px / (2*math.tan(cameraFieldOfView*math.pi/360.0)*rr.GetArrayVariable("HEIGHT")[i])
![]() Last edited by Dan252 : 05-02-2014 at 13:13. |
|
#2
|
|||||
|
|||||
|
Re: Problem with distance calculation
Is the number for the camera field of view set correctly?
|
|
#3
|
|||
|
|||
|
Re: Problem with distance calculation
Yes, it is 47 degrees.
We are using the labview sample images though (with the real distance in their filename) and I'm not entirely sure what camera they used but we tried all of the fov angle options and still had no luck getting close enough results |
|
#4
|
||||
|
||||
|
Re: Problem with distance calculation
Quote:
I'm not sure I understand all your variable names, but here's one way to do it distance = ( targ_width_in / 2.0 ) / tan( 0.01745 * ( ( ( targ_width_pixels / cam_width_pixels) * cam_fov_deg ) / 2.0 ) ) ; The 0.01745 is the degree to radian conversion. With typically only 640 or 720 horizontal pixels, additional precision isn't required. If you precompute the individual camera pixel field of view (IFOV = cam_horizontal_fov / cam_horizontal_pixels), then it is a bit more easier to read: distance = (target_width_in / 2.0 ) / tan( 0.01745 * (IFOV * target_width_pixels / 2.0 )); The IFOV * target_width_pixels provides the angular width of the target. Hope this helps. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|