Instrinsic Camera Parameters

I am trying to understand intrinsic camera parameters.

Specifically I not able to understand the skew factor and pixel scaling derivation in it.

Example:

Most of the literature explanation starts like this $(x, y, z)$ - point in real world $(x', y')$ - point in image Derivation Step 1: $$x' = \frac{fx}z \\ y' = \frac{fy}z$$

Step 2: Account for origin shift of the coordinate system (Image plane) $(O_x, O_y)$

$$x' = \frac{fx}z + O_x \\ y' = \frac{fy}z + O_y$$

Step 3:

Account in skew, here I really don't understand it Consider a point in the image and its coordinates

According to oblique coordinate system - $u', v'$ According to Cartesian coordinate system - $u, v$

Angle between basis of oblique coordinates - $l$

relationship

$$u' = u - v\cot(l) \\ v' = {v\over \sin(l)}$$

What I don't understand is they replace $x$ and $y$ with $u'$ and $v'$. Instead I feel it should be other way around, $x$ and $y$ with $u$ and $v$.

After that step, pixel scaling is done.

In that too most textbook misses one condition when they consider height and width of pixel they don't mention the cases. For example in case of skew is the height along the basis of oblique coordinates or along the Cartesian coordinates. This is also confusing?

To summarize I have two question:

Q-1 How coordinate system is transformed when there is skew?

Q-2 How pixel scaling is done?

• Please format your mathematical expressions with MathJax. You can find a quick reference here. – amd Sep 1 '18 at 20:30

Basically, it looks you’re getting the active and passive interpretations of coordinate transformations backwards. After projecting onto the image plane in step 1, each of the following steps changes the coordinate axes in some way. This is the passive view: we’re not moving any points around, only changing the labels that we use to describe them. In order to find the coordinates of a point in this new coordinate system, you essentially have to undo the operation that maps the old coordinate axes onto the new ones.

Let’s examine the skew in step 3. The new $u'$-$v'$ coordinate system has the same origin as the old $u$-$v$ system, and the $u$ and $u'$ axes coincide. The $v'$-axis is tilted at some angle $\alpha\ne\pi/2$ from the $u'$-axis (using $l$ as the name of an angular measure feels wrong somehow), like so: The $u'$-coordinate of a point is the signed distance from the $v'$-axis measured parallel to the $u'$-axis, which is easily found to be $u-v\cot\alpha$. Similarly, the $v'$-coordinate of a point is the signed distance to the $u'$-axis, measured parallel to the $v'$-axis, i.e., $v'=v\csc\alpha$. If you instead used the inverse of this map, you’d be treating the transformation as active: points get moved around while the coordinate system remains the same. If the image is rendered on a rectangular grid of pixels, these oblique axes get “straightened out.”

Unfortunately, your characterization of step 2 is somewhat at odds with this passive view of a transformation. The translation in that step does shift the origin, but $O$ is not the location of the new origin in the old coordinate system. If it were, we’d be subtracting its coordinates to get a point’s coordinate in the new frame. Instead, it’s the new coordinates of the old origin. A perhaps less confusing way to view what’s going on in step 2 is that you’re choosing the coordinates of the principal point—the point at which the camera’s axis intersects the image plane—and adjusting the coordinate system accordingly.

That leaves coordinate scaling. At each step in this cascade of coordinate transformations, you start with the most recent coordinate system. Since scaling happens after skew in your development, it is done in the directions of the oblique coordinate axes established in step 3.

• Just so to understand properly. What is happening in reality? Is the position of point itself is changing because of the skew or just labeling of point? – Peri Javia Sep 4 '18 at 14:13