Ehsan Khoramshahi Web Page

Computer Science PhD Student at University of Helsinki,

Research Scientist at National Land Survey of Finland, Finnish Geospatial Research Institute (FGI)

Contact Information


Ehsan Khoramshahi,

National Land Survey of Finland, PL 84, 00521 Helsinki, Finland.


Email: Ehsan.khoramshahi (at) [,]

Phone: (+358) 40 4444 135

This web page:

My Resume


Recent publications


1-     Journal articles

·        Geometric and Reflectance Signature Characterization of Complex Canopies Using Hyperspectral Stereoscopic Images from UAV and Terrestrial Platforms, ISPRS 2016. Honkavaara, E.; Hakala, T.; Nevalainen, O.; Viljanen, N.; Rosnell, T.; Khoramshahi, E.; Näsi, R.; Oliveira, R.; Tommaselli, A.

·        SLAM-Aided Stem Mapping for Forest Inventory with Small-Footprint Mobile LiDAR. Forests 2016,

Jian Tang, Yuwei Chen, Antero Kukko, Harri Kaartinen, Anttoni Jaakkola, Ehsan Khoramshahi, Teemu Hakala, Juha Hyyppä, Markus Holopainen and Hannu Hyyppä.

·        Passive Localization of a Robot using Multiple-View Geometry, in Architectural Design of Advanced Swarm Robotics Systems,

Khoramshahi E., Honkavaara.E, Hyyppä J, Myllymäki P. Jan 2015.

·        Image Quality Assessment and Outliers Filtering in an Image-Based Animal Supervision System, Khoramshahi E., Hietaoja J., Valros A., Yun J., Pastell M., in International Journal of Agricultural and Environmental Information Systems, 6(2), 15-30, 2015.


2-     Recent conference articles

·        An Automatic Method for Adjustment of a Camera Calibration Room, in FIG 2017. EhsanKhoramshahi, Eija Honkavaara, and Tomi Rosnell.



3-    Recent Developments


1-     ImageLab is my C++ based user interface that is coupled with  the various processing engines that I developed for my research. It has been developed with the goal of creating real-time image-processing algorithms. (snapshots)  (pdf) (source)

     It includes data input modules, as well as processing, output and visualization modules.

List of ImageLab’s capabilities:

a.      A graphical user-interface that acts as a laboratory for algorithm design and comparison.

b.     Many input units developed to allow image inputs to feed into the processing units. Input units for video, matrix and binary inputs also have been developed.

c.      Fourier spectral analysis has been developed and optimized (FFT).

d.     Unsupervised clustering techniques such as :K-Means, Kohonen SOM, and hierarchical clustering are developed and added.

e.      Supervised classification by multi-layer Perceptron (feed-forward Neural network), as well as Logistic-regression (LR) have been added.

f.      Convex-optimization methods, such as gradient descent, Barzilai-Borwein, and conjugate gradients have been implemented.

g.     An optimized and parallel implementation of Matrix class has been developed. Efficient multiplication based on aligned data with SSE2/SSE3/parallelization has been added.

h.     Matrix factorization methods (QR with pivoting, LU, SVD based on Householder transformation) has been developed.

i.       An optimized version of Intel MKL has been integrated into my matrix implementation. The computational core has migrated from 32-bit to 64-bit architecture.

j.       Weighted Linear least-square solver has been added.

k.     Constraint weighted linear least-square solver has been added.

l.       Keypoint extractor (SIFT, SURF), and robust matching has been added (under improvement).


2-     DAG  is my C++ based implementation of a general Bayesian network. It includes scoring functions for structure learning, and exact and approximate inference methods. (snapshots) (pdf) (source)

a.      Classes for nodes, clusters, and sep-sets have been implemented.

b.     Junction Tree Algorithm (JTA) has been implemented.

c.      Exact inference has been added.

d.     Maximum a posterior estimate (MAP) has been developed.

e.      Scoring functions (BIC,AIC) for structure learning have been added.

f.      Soft/hard evidence entry has been implemented.

g.     Graphical user interface has been added, now DAG acts independently and as a module inside ImageLab.


3-     BundleCore is my C++ based implementation of a constraint-based Bundle-Adjustment routine. It includes the following parts:

a.      The Brown’s model for direct and inverse camera calibration modeling.

b.     Collinearity, intersection and resection solver based on weighted linear least-square (snapshots of error ellipses).

c.      Co-planarity solver to estimate an Essential matrix and decompose it to a set of orientations and rotations.

d.     Exterior orientation estimator based on weighted linear least-square.

e.      Network estimator for creating a massive reference map.

f.      Automatic coded target reading.

g.     3D registration module.

h.     Single-frame camera Bundle Block-adjustment least square estimator (snapshots of structure estimation and corresponding error ellipsoids).

i.       Multi-projective camera calibration routine (snapshots of an  and an  structural calibration


4-     BundleGUI is my basic GUI developed specifically for the Bundle-Core. It is able to load the same project, and be statically linked to the computational core. It is specifically

designed to be used for the manual reading and labeling of an image’s points. It is planned to be merged with the ImageLab.