Consider the images were captured with the following EXIF info (focal length is in milimeters):
Tag | Name | Value |
---|---|---|
0xa002 | ExifImageWidth | 2400 |
0xa003 | ExifImageHeight | 1800 |
0xa20e | FocalPlaneXResolution | 2160000/225 |
0xa20f | FocalPlaneYResolution | 1611200/168 |
0xa210 | FocalPlaneResolutionUnit | inch |
0x920a | FocalLength | 7400/1000 |
The images were then resized.
u{i,j}
are points in the i-th image and u{j,i}
are corresponding points in the j-th image. Save in 06_data.mat
H_ij
for every pair of adjacent images by the same method (optimizing 4 over 10) as in HW-05; use your u2h_optim
function for each homography.
06_histograms.pdf
.
H_i4
for every i ∈ <1,7> that maps the images above into the reference image 04 (thus H_44
is identity). Then construct inverse homographies H_4i
.
H
, where H{i,j}
is the homography from i to j. Save in06_data.mat
.
06_borders.pdf
.
06_panorama.png
.
K
using the actual image size and the original EXIF. All the images share the same calibration. Store it in 06_data.mat
06_borders_c.pdf
).
06_panorama_c.png
).
06_panorama_c_own.png
). Credited by at most 2 bonus points. In this case submit the input images as well (06_image01.jpg
, etc ).
The cylinder is defined in the coordinate system γ (blue) of the image 04 (green) such that:
This leads that the cylinder has radius = 1 in the γ system. The cylinder surface is a set of points <latex>[x_{\gamma} y_{\gamma} z_{\gamma}]^\top</latex> such that
<latex>x_{\gamma}^2 + z_{\gamma}^2 = 1</latex>
For parametrisation of the cylinder surface we define two coordinate systems: the first (magenta) is based on γ, second (red) is pixel-based system of panoramic image.
First, the surface of the cylinder is parametrised by circumference length (equal to angle since radius=1) and by the <latex>y_{\gamma}</latex> coordinate. The ray <latex>\lambda [x_{\gamma} y_{\gamma} z_{\gamma}]^\top</latex> intersects the cylinder in the point
<latex>\lambda=\frac{1}{\sqrt{x_{\gamma}^2 + z_{\gamma}^2}}</latex>
<latex>[ a_{c\gamma}; y_{c\gamma} ] = [ \mbox{the angle given by } x_{\gamma} \mbox{ and } z_{\gamma}; \frac{y_{\gamma}}{\sqrt{x_{\gamma}^2 + z_{\gamma}^2}} ]</latex>
Second, the pixel size must be applied and image origin adjusted. Since the horizontal pixel size is 1/K(1,1) measured in units given by γ system, this leads to
<latex>[ x_c; y_c ] = K_{11} [ a_{c\gamma}; y_{c\gamma} ] + [x_{0c}; y_{0c} ]</latex>
where the origin <latex>[x_{0c}; y_{0c}]</latex> must be found such that all pixels from the input images will fit into the resulting panorama.
Upload an archive consisting of:
06_data.mat
06_histograms.pdf
06_borders.pdf
06_panorama.png
06_borders_c.pdf
06_panorama_c.png
any other files required by hw07.m (including data and files from the repository).