Search code examples
javascriptmathgoogle-maps-api-3gisgoogle-street-view

Height/Elevation of a pixel from ground in Google Street View


I am looking to find the height of every pixel from ground in the google street view.

enter image description here

Couple of things I know can be calculated are:

  1. Pitch of a pixel

  2. Depth map of every pixel from camera

    There is a javascript library to fetch depth map too.

enter image description here

Is it possible to put the two together to calculate actual height of a pixel from ground?


Solution

  • If we know the height of the camera then this becomes a simple matter of trigonometry.

    tan(angle) = height-above-camera / depth
    

    so

    height-above-camera = depth * tan(angle)
    

    If the camera is known to be 8ft above ground then we can get the actual height of a pixel as

    height = 8ft + depth * tan(angle)
    

    The whole calculation depends on the quality of the depth map.

    Another thing you could exploit is assuming the blocks in the depth map end at ground level. Then run an edge detection on the image.

    canny edge detection

    Here I've used an online Canny Edge detection which is picking out the base of the block on the right-hand side. A bit of trig should get the height.

    Better than using image processing if you allow interactive use, get the user to click on the base of the object and the top of the object. Knowing the pitch of the point at the base allows the distance to be calculated.