Optimal Surface Normals

Optimal Surface Normal from Affine Transformation



This project deals with surface normal estimation from calibrated stereo images. We have shown in our Visapp2015 paper [1] how the affine transformation between two projections defines the surface normal of a 3D planar patch. We have given a formula that describes the relationship of surface normals, camera projections, and affine transformations. This formula is general since it works for every kind of cameras. We propose novel methods for estimating the normal of a surface patch if the affine transformation is known between two perspective images. Five methods published in our paper, their Matlab/Octave implementation can be downloaded HERE. The proposed methods are as follows:

  • Fast Normal Estimation (FNE)
  • Linear method when projective depths are unknown (LIN-UPD)
  • Linear method with known projective depths (LIN-KPD)
  • Optimal estimation (OPT)
  • Alternating method (ALT)


[1] D. Baráth, J. Molnár, L. Hajder: Optimal Surface Normal from Affine Transformation, in Proc. of the 10th Intl. Joint Conf. on Computer Vision, Imaging and Computer Graphics Theory and Applications (VISAPP), 2015.

For further information please contact Levente Hajder.

Error | Machine Perception Research Laboratory

Error message

  • Warning: Cannot modify header information - headers already sent by (output started at /mnt/raid/www/home/includes/common.inc:2791) in drupal_send_headers() (line 1499 of /mnt/raid/www/home/includes/bootstrap.inc).
  • PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: SELECT 1 AS expression FROM {variable} variable WHERE ( (name = :db_condition_placeholder_0) ); Array ( [:db_condition_placeholder_0] => cron_last ) in variable_set() (line 1258 of /mnt/raid/www/home/includes/bootstrap.inc).


The website encountered an unexpected error. Please try again later.

Uncaught exception thrown in shutdown function.

PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: DELETE FROM {semaphore} WHERE (value = :db_condition_placeholder_0) ; Array ( [:db_condition_placeholder_0] => 178080399460458247699ca4.39934997 ) in lock_release_all() (line 269 of /mnt/raid/www/home/includes/lock.inc).