Search
u1
u2
vp1
vp2
07_vp1.pdf
07_vp2.pdf
07_vp1_zoom.pdf
07_vp2_zoom.pdf
K
angle
C1
C2
R1
R2
07_box_wire1.pdf
07_box_wire2.pdf
07_box_wire3.pdf
07_seq_wire.avi
07_box_tx.png
07_seq_tx.avi
07_data.mat
K(3,3)=1
Let $R_1$, $C_1$ is the first camera pose and $R_2$, $C_2$ is the second camera pose. Let $\lambda$ be the interpolation parameter taking value from 0 (meaning the first camera) to 1 (meaning the second camera). Then use following
$C = (1-\lambda) C_1 + \lambda C_2$
$R = (R_2 R_1^\top)^\lambda R_1$
Note that we are using matrix power here. Due to numeric accuracy, it is necessary to take only the real part of the result.
C = C2 * lambda + C1 * (1-lambda);
C = C2 * lambda + C1 * (1-lambda)
R = real( (R2 * R1')^lambda * R1 );
R = scipy.linalg.fractional_matrix_power( R2 @ R1.T, lambda ).real @ R1
Homography from the cube face, projected in the image, to the texture image, must be established. The problem concerning whether the pixels are inside or outside the face is easily solved in the coordinate system of the texture.
Also visibility must be solved here. The easiest way is to consider each face's normal vector, computed from the sides using the vector product (take care with the sign). Also the direction vector from the camera to some point of the face must be computed. Then the face is visible only if the normal vector form an acute angle with the direction vector, i.e. it's cosine (dot product) is positive.
You can use any possibility, e.g. helpers from the tools repository (but feel free to use own solution)
Matlab:
wr = SeqWriter( '07_seq_wire.avi' ); for i = frames_range % prepare figure ... f = getframe( gca ); im = im2double( f.cdata ); writer.write( im ); end writer.Close()
Python:
import tools import SeqWriter import matplotlib.pyplot as plt writer = SeqWriter( '07_seq_wire.avi' ) for i in frames_range # prepare figure ... im = tools.getframe( plt.gcf() ) writer.Write( im ) writer.Close()
Upload an archive consisting of:
hw07.m
hw07.py
any other files required by your implementation (including data and files from the repository).