diff --git a/modules/sfm/include/opencv2/sfm/simple_pipeline.hpp b/modules/sfm/include/opencv2/sfm/simple_pipeline.hpp
index 1bd4e17ffe125e201879347d734cb296cf7782e8..6aca8e5b498e91a559a8cc1f177c4e939e9b3466 100644
--- a/modules/sfm/include/opencv2/sfm/simple_pipeline.hpp
+++ b/modules/sfm/include/opencv2/sfm/simple_pipeline.hpp
@@ -55,7 +55,8 @@ enum {
 
 /** @brief Data structure describing the camera model and its parameters.
   @param _distortion_model Type of camera model.
-  @param _focal_length focal length of the camera (in pixels).
+  @param _focal_length_x focal length of the camera (in pixels).
+  @param _focal_length_y focal length of the camera (in pixels).
   @param _principal_point_x principal point of the camera in the x direction (in pixels).
   @param _principal_point_y principal point of the camera in the y direction (in pixels).
   @param _polynomial_k1 radial distortion parameter.
@@ -73,7 +74,8 @@ class CV_EXPORTS_W_SIMPLE libmv_CameraIntrinsicsOptions
 public:
   CV_WRAP
   libmv_CameraIntrinsicsOptions(const int _distortion_model=0,
-                                const double _focal_length=0,
+                                const double _focal_length_x=0,
+                                const double _focal_length_y=0,
                                 const double _principal_point_x=0,
                                 const double _principal_point_y=0,
                                 const double _polynomial_k1=0,
@@ -84,7 +86,8 @@ public:
     : distortion_model(_distortion_model),
       image_width(2*_principal_point_x),
       image_height(2*_principal_point_y),
-      focal_length(_focal_length),
+      focal_length_x(_focal_length_x),
+      focal_length_y(_focal_length_y),
       principal_point_x(_principal_point_x),
       principal_point_y(_principal_point_y),
       polynomial_k1(_polynomial_k1),
@@ -103,7 +106,8 @@ public:
   // Common settings of all distortion models.
   CV_PROP_RW int distortion_model;
   CV_PROP_RW int image_width, image_height;
-  CV_PROP_RW double focal_length;
+  CV_PROP_RW double focal_length_x;
+  CV_PROP_RW double focal_length_y;
   CV_PROP_RW double principal_point_x, principal_point_y;
 
   // Radial distortion model.
diff --git a/modules/sfm/src/libmv_capi.h b/modules/sfm/src/libmv_capi.h
index cf2e5daf75aea8e64757fdb43e4c46a09e0be4e4..d5dd7b9f9f90a9c1d3d2521f27b136ad846b426f 100644
--- a/modules/sfm/src/libmv_capi.h
+++ b/modules/sfm/src/libmv_capi.h
@@ -203,8 +203,8 @@ static bool selectTwoKeyframesBasedOnGRICAndVariance(
 static void libmv_cameraIntrinsicsFillFromOptions(
     const libmv_CameraIntrinsicsOptions* camera_intrinsics_options,
     CameraIntrinsics* camera_intrinsics) {
-  camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
-                                    camera_intrinsics_options->focal_length);
+  camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length_x,
+                                    camera_intrinsics_options->focal_length_y);
 
   camera_intrinsics->SetPrincipalPoint(
       camera_intrinsics_options->principal_point_x,
diff --git a/modules/sfm/src/reconstruct.cpp b/modules/sfm/src/reconstruct.cpp
index 254678ac954baa98011d45a634f5d89daca43358..52f628c547042cb43ecc072e18e96004deb58d6d 100644
--- a/modules/sfm/src/reconstruct.cpp
+++ b/modules/sfm/src/reconstruct.cpp
@@ -69,7 +69,8 @@ namespace sfm
 
     // Camera data
     Matx33d Ka = K.getMat();
-    const double focal_length = Ka(0,0);
+    const double focal_length_x = Ka(0,0);
+    const double focal_length_y = Ka(1,1);
     const double principal_x = Ka(0,2), principal_y = Ka(1,2), k1 = 0, k2 = 0, k3 = 0;
 
     // Set reconstruction options
@@ -77,7 +78,8 @@ namespace sfm
 
     libmv_CameraIntrinsicsOptions camera_instrinsic_options =
       libmv_CameraIntrinsicsOptions(SFM_DISTORTION_MODEL_POLYNOMIAL,
-                                    focal_length, principal_x, principal_y,
+                                    focal_length_x, focal_length_y,
+                                    principal_x, principal_y,
                                     k1, k2, k3);
 
     //-- Instantiate reconstruction pipeline