We’re rewarding the question askers & reputations are being recalculated! Read more.
19

It is important to understand that the only problem here is to obtain the extrinsic parameters. Camera intrinsics can be measured off-line and there are lots of applications for that purpose. What are camera intrinsics? Camera intrinsic parameters is usually called the camera calibration matrix, $K$. We can write $$K = \begin{bmatrix}\alpha_u&s&...


11

The normalization is basically a preconditioning to decrease condition number of the matrix $A$ (the larger the condition number, the nearer the matrix is to the singular matrix). The normalizing transform is also represented by a matrix in the case of homography estimation, and this happens to be usable as a good preconditioner matrix. The reason why is ...


4

There is a problem in checking whether the homography is OK. The algorithm for checking correct homographies may interest someone, so I will write it down here: 1) Create a quadrilateral $ABDC$ with vertex coordinates (in homogenous coordinates): $$\begin{eqnarray} A:& (-w/2,-h/2, 1.0) \\ B:& (w/2,-h/2, 1.0) \\ C:& (-w/2,h/2, 1.0) \\ D: &(...


4

I think when looking at the formula for the homography matrix: $$ H_{ba} = R - \frac{tn^T}{d} $$ where $R$ is the rotation matrix by which $b$ is rotated in relation to $a$; $t$ is the translation vector from $a$ to $b$; $n$ and $d$ are the normal vector of the plane and the distance to the plane respectively (see Homography-3D plane to plane equation). ...


3

I will explain two approaches for this: 1) One approach would require a line matching algorithm. After matching the lines, you could simply use the end points of the lines in order to compute homography. To achieve that EDLine or LSD based descriptors are recently proposed in OpenCV. Also, hashing and fast matching of them are also implemented. Check out ...


3

While explaining the two-dimensional case very well, the answer proposed by Jav_Rock does not provide a valid solution for camera poses in three-dimensional space. Note that for this problem multiple possible solutions exist. This paper provides closed formulas for decomposing the homography, but the formulas are somewhat complex. OpenCV 3 already ...


2

If the lines are not parallel, you can calculate the point of their intersection and use it as a point of reference. In your painting, you can use the purple points as well: By the way, the intersection of the lines need not to be in the image. As long as the lines are parallel If the lines are parallel, you can use them to get additional constraints. For ...


2

The Wikipedia article states: "What makes the direct linear transformation problem distinct..is the fact that the left [X] and right [AY] sides of the defining equation [X = AY] can differ by an unknown multiplicative factor which is dependent on k" In the above X, A, Y are matrices. So to avoid having to estimate the factor, you simply normalise all the ...


2

It is because in the case of fundamental matrix, each correspondence point relates to only one constraint(i.e it maps a point to a line in other image). Hence 8 correspondence points are required. But in the case of homography, each correspondence solves two constraints. Hence only 4 correspondence points are sufficient.


2

I've never actually done Panorama Stitching, but I was talking to people who were, and I was involved in a project where we had to estimate the homography for fine localization for visual navigation, so here it goes. Basic approach Rough outline of the approach using RANSAC (you can read more of the approach in this Master thesis, page 12,13 - ...


1

Check out my answer to a somewhat similar problem here. You will need to generalize $$ x = A_x m^2 + B_x mn + C_x n^2 + D_x m + E_x n + F_x $$ to $$ x_{new} = A_x x^2 + B_x y^2 + C_x z^2 + D_x x y + E_x x z + F_x y z + G_x x + H_x y + I_x z + J_x $$ Also the same for $y$ and $z$. This will lead to needing to solve a 10x10 inverse. If it is linear, ...


1

The Essential matrix is defined only up to scale, so you cannot extract scale from it. In other words, if you multiply $t$ and all the 3D world points in your scene by a constant factor, the essential matrix will be the same. If you have to get the scale, then you need some additional information. Either you need to have an object of a known size in the ...


1

First, calibrate your intrinsics: The focal lengths and the principal point. Homography is not really a rigid transformation and rather a mapping of a plane onto another one. What you really need is a 6DOF parametrization, which is the camera pose. If you have the intrinsics, you could transfer your coordinates to the normalized coordinates and estimate the ...


1

Matrix/vector operations are really strongly optimized in Matlab/Octave. Use them whenever you can. In your case, instead of multiplying the 3x3 homography matrix with a 3x1 vector for NxM times you can easily modify your calculation to do a multiplication with a 3x3 matrix and a 3xM matrix for N times. Check out this Octave code: warning ("off", "Octave:...


1

You should use the function maketform to create your homography, and apply it on image by using imtransform. Don't forget to apply transpose on your matrix, because Matlab works on pixels as rows, not as columns. A = transpose([....]) %Your matrix in here t = maketform( A, 'perspective'); imOut = imtransform(im,t);


1

What do you mean by "apply this matrix to all pixels of the image without treating them one by one"? The image is made of pixels, each one with its x-y location. The homography maps a coordinate on a plane into another one so you actually HAVE to apply it to every single pixel (x' ; y' ; 1) = H (x ; y ; 1) where H is your 3x3 homography matrix. Doing this ...


1

It's a matter of numerical accuracy. By normalizing the data set, you center your data and give it unit variance. These conditions are better handled by the solbver then.


1

Yes it is possible to compute the extrinsics given the intrisics, some points in 3D and their projections in the image. If all your 3D points are in the same plane, then the math for computing the extrinsics is explained in the paper by Zhengyou Zhang, which is the basis for the camera calibration code in OpenCV. If your 3D points are not co-planar, then ...


1

You are trying to detect and reject abrupt changes in the 3x3 matrix, right? Think of the 3x3 matrix as a 9 element vector space. Apply smoothing on each of the 9 dimensions. If the original 9 elements are not similar to the smoothed vector, then reject it and use the smoothed estimate (minus the contribution from the rejected one?). As far as how to ...


1

There is an interesting paper on this topic: http://link.springer.com/chapter/10.1007%2F978-3-642-17691-3_19# The paper describes a method to filter out some wrong correspondences before computing homographies in the RANSAC algorithm.


1

If you have estimated the homography as $x_i \sim Hx_i^'$ and you calculate the model error as $\sum_{j=1\dots n}\|x_j - Hx_j^'\|$ you may face problems when the estimated planes are almost perpendicular. You can increase the robustness by estimating another homography $H^'$ such that $x^' = H^'x$ and calculating the model error as $\sum_{...


Only top voted, non community-wiki answers of a minimum length are eligible