Skip to content
a C++ implementation of projection satellites into geo-referenced images and evaluating NLOS (Non-Line of Sight))
C++ CMake
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Vision-based approach for GPS Localization Improvement in Semi-Obstructed Areas

by Alireza Ahmadi - July 2018

What is the Problem?

Performance of Global Navigation Satellite System (GNSS) positioning in urban environments is hindered by poor satellite availability because there are many man-made and natural objects in urban environments that obstruct satellite signals.

NLOS (Non-Line of Sight) (one of the error sources in GNSS observation due to receiving signals from satellites which antenna is blind to them)


Our solution

Our approach involves with using a landscape calibrated camera and through image processing algorithms tries to classify the scene to non-sky and free-sky regions, also tries to determine whether the satellites are located in free-sky or not. And finally generates an Elevation map of the environment


Advantages of Integration of vision:

  • Low-cost with respect to laser scanner
  • Able to get a dense data of surrounded area at minimum time
  • Real-time capability for processing data
  • The results are more sensible and intuitive for human, in case of having any type of visualization

Main Pipeline


Step1: NMEA Package(Parser)

Receiving the NMEA package from GPS receiver and extracting Satellites’ information (PRN-Position,...)

Step2: Changing Image Color System to Gray (3 channel RGB to 1 channel intensity)

Once the data (image) acquisition is made, the second step which consists of transforming the acquired image in the most appropriate color space (which guarantees a better detection of objects of interest). In this case, the GRAY scale color system is chosen that decreases the process required to extract the features from the scene.


Step3: Smoothing the image(Gaussian Blur)

The third step concerns with the image smoothing by Gaussian blur operator provided by the OpenCV library, in order to simplify the acquired image and eliminate unnecessary details and noises.


Step4: Edge Detection(Canny operator)

The Next step would be finding the most top edges of buildings in the scene and horizon line of the scene. First, all the edges captured by the camera should reveal sharply in a sense of violent variations in values of neighbored pixels, which Canny operator is used to exploits them,


Step5: Morphological Operators(Dilation and Erosion)

Morphological transformations are some simple operations based on the image shape.


Step6: Line Detection (through Hough Transformation)

in general, a line can be detected by finding the number of intersections between curves in Hough space. The more curves intersecting means that the line represented by that intersection have more points. In general, we can define a threshold of the minimum number of intersections needed to detect a line.


Step7: Watershed Segmentation

Segmentation: The goal of segmentation is to simplify change the representation of an image into something that is more meaningful and easier to analyze. In our case we are interested having the scene classified into sky and no-sky regions.


Auto Sampling the scene for the segmentation


Problems of the Segmentation


Merging results of Line detection and Segmentation


Step8: Satellite Repositioning in images:

Satellites’ positions can be projected into the images through Projection matrix:

  • Camera position and External points (Satellites’ poses) should be described in same coordinate system. (Earth Centered Earth Fixed->ECEF, WGS84) -> filtering the ones which place in the image size and marking them in image.
pin elevationMap

Final Results

  • A satellite falling into the non-sky areas (e.g., buildings, trees) will be rejected.
  • We can generate a grid map or inclination map of the environment in 360 degrees, which can be used in receivers or in post processing procedures.

multiple satellites in the scene


by: Alireza Ahmadi
University of Bonn- Robotics & Geodetic Engineering

You can’t perform that action at this time.