Project 5A: IMAGE WARPING and MOSAICING

Orginal iPad

<matplotlib.image.AxesImage at 0x7ffb93191150>

Rectified image so iPad is flat

<matplotlib.image.AxesImage at 0x7ffb90e38f10>

Original Image

<matplotlib.image.AxesImage at 0x7ffb91a40d10>

Rectified Image so vinyl is flat and normal

<matplotlib.image.AxesImage at 0x7ffb919733d0>

Original Image

<matplotlib.image.AxesImage at 0x7ffb9464ac10>

Rectified Image and the image plane it is projected onto

<matplotlib.image.AxesImage at 0x7ffb94638990>
<matplotlib.image.AxesImage at 0x7ffb90e11650>

Blending the two images together for a mosiac

<matplotlib.image.AxesImage at 0x7ffaf0e8ef90>

Example 2

Orginal Image

<matplotlib.image.AxesImage at 0x7f9621cd8c50>

Rectified Image and the image plane it is projected onto

<matplotlib.image.AxesImage at 0x7f96200e8450>
<matplotlib.image.AxesImage at 0x7f96200ca390>

Blending the two images together for a mosiac

<matplotlib.image.AxesImage at 0x7f96298a43d0>

Example 3

Original Image

<matplotlib.image.AxesImage at 0x7f96200f8cd0>

Rectified Image and the image plane it is projected onto

<matplotlib.image.AxesImage at 0x7f96220efd10>
<matplotlib.image.AxesImage at 0x7f9621634990>

As you can see, the rectfied image is based off of the back wall, so the wall on the right is disporpoortionately skewed.

Blending the two images together

<matplotlib.image.AxesImage at 0x7f9621727e90>

I think the coolest thing I learned was how image rectifiying actually works. My drone takes 360 photos so I always wondered how they rendered it into a flat picture. I didn't get a chance to implement a 360 mosiac but that would be the next thing I look at.

<>:18: SyntaxWarning: assertion is always true, perhaps remove parentheses?
<>:18: SyntaxWarning: assertion is always true, perhaps remove parentheses?
<>:18: SyntaxWarning: assertion is always true, perhaps remove parentheses?
<ipython-input-7-50d17f8b70e0>:18: SyntaxWarning: assertion is always true, perhaps remove parentheses?
  assert(dimx == dimc, 'Data dimension does not match dimension of centers')
/Users/tusharchopra/anaconda3/envs/194/lib/python3.7/site-packages/ipykernel_launcher.py:20: FutureWarning: Until version 0.16, threshold_rel was set to 0.1 by default. Starting from version 0.16, the default value is set to None. Until version 0.18, a None value corresponds to a threshold value of 0.1. The default behavior will match skimage.feature.peak_local_max. To avoid this warning, set threshold_rel=0.

All Harris Corners

Top points after ANMS

Matched points

[(3563, 2614), (1624, 1692), (3559, 1783), (3663, 1345)]
[(1595, 2632), (1548, 1805), (1666, 1221), (207, 1929)]

Best matched points to compute homography

<matplotlib.collections.PathCollection at 0x7f80175e5b90>
<matplotlib.collections.PathCollection at 0x7f801741eb50>
/Users/tusharchopra/anaconda3/envs/194/lib/python3.7/site-packages/ipykernel_launcher.py:20: FutureWarning: Until version 0.16, threshold_rel was set to 0.1 by default. Starting from version 0.16, the default value is set to None. Until version 0.18, a None value corresponds to a threshold value of 0.1. The default behavior will match skimage.feature.peak_local_max. To avoid this warning, set threshold_rel=0.

Mosiac

I didn't get a chance a to use the homography calculated by the ransac to create an image, but the process would use the same warp function from part 1

2 More examples

<matplotlib.collections.PathCollection at 0x7f7fb8699290>
/Users/tusharchopra/anaconda3/envs/194/lib/python3.7/site-packages/ipykernel_launcher.py:20: FutureWarning: Until version 0.16, threshold_rel was set to 0.1 by default. Starting from version 0.16, the default value is set to None. Until version 0.18, a None value corresponds to a threshold value of 0.1. The default behavior will match skimage.feature.peak_local_max. To avoid this warning, set threshold_rel=0.
<matplotlib.collections.PathCollection at 0x7f7f79740290>

I think the coolest thing I learned was how image rectifiying actually works. My drone takes 360 photos so I always wondered how they rendered it into a flat picture. I didn't get a chance to implement a 360 mosiac but that would be the next thing I look at.