# Tag Info

20

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&u_0\\... 12 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 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. 4 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 ... 4 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 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 - ... 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 ... 1 I think you can't do Homography on lines. I don't remember the equations but I don't think lines in one image are kept as lines in the other image. What you can do is treat a line as set of points and have Homography estimation using many point samples. 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

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

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

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

The method used was a parametric representation of the matrix $H$. For intuition, thing of rotation matrix in $\mathbb{R}^{2}$, namely $H \in \mathbb{R}^{2 \times 2}$. Since we have series of those (In case of video, a series in time) we can define $H \left( t \right)$. As a rotation matrix it can be parameterized by a single parameter $\theta$ ...

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.

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