Ofir Lavi

CSEP576 – Computer Vision

 

Project 2

 

Panorama 1: My final 360-panorama picture

Live Picture Panorama

 

Panorama 2: My final panorama picture:

Live Picture Panorama

 

      

 

To produce less than 360 panorama and not to cat big portion of the picture, I made changes in BlendImages() as describe in the extra credit section.

 

 

Panorama 3: hand-held sequence:

Live Picture Panorama

 

Class Test Panoramas:

 

  Stitch 2:                                Stitch 4:

  

 

Panorama 4: Full Panorama Test:

Live Picture Panorama

 

Extra Credit:

 

  1. Lukas-Kanade gives sub-pixel motion estimation:

I implemented a round() function in BlendImages.cpp. This helps setting the pixels at half points and remove some of the noise.

  1. Make edits to one of your panoramas using your scissoring tool and photoshop:

At panorama-2 a bird got into my picture by mistake. This is a moving object and unique object for this frame only. This is the same as using the scissoring tool.

3.      Try shooting a sequence with some objects moving:

At panorama 1 I have a moving car that did not affect or created noise on the picture.

 

New features that are not part of the Bells and Whistles:

 

To create panorama picture that less than 360, I modified BlendImages()code as follows:

·         I updated the final shape size:

From     CShape cShape(mShape.width - width, height, nBands);

To  CShape cShape(mShape.width - blendWidth, height, nBands);

 

·        I changed my A matrix

360:           A[0][0]=1; A[0][1]=0; A[0][2]=width/2;

         A[1][0]=a; A[1][1]=1; A[1][2]=pos_y;

         A[2][0]=0; A[2][1]=0; A[2][2]=1;

 

<360:         A[0][0]=1; A[0][1]=0; A[0][2]= blendWidth/2;

         A[1][0]=a; A[1][1]=1; A[1][2]=pos_y;

         A[2][0]=0; A[2][1]=0; A[2][2]=1;