Coder Social home page Coder Social logo

computervision-hw2's Introduction

EN.601.661 โ€“ Computer Vision - Homework 2

To View This

This is a readme written in markdown. You can access here to view it online.

How to Run

# The results will be found in ./results/
python hw2.py

We also provide the pre-computed outputs in the directory ./results

Development Environment

Package Version
Python 2.7.10
NumPy 1.13.3
OpenCV 3.3.0
matplotlib 1.5.3
SymPy 1.1.1

The Corner Detection Results

The corner detection result of bikes1
corner detection of bikes1

The corner detection result of bikes2
corner detection of bikes2

The corner detection result of bikes3
corner detection of bikes3

The corner detection result of graf1
corner detection of graf1

The corner detection result of graf2
corner detection of graf2

The corner detection result of graf3
corner detection of graf3

The corner detection result of leuven1
corner detection of leuven1

The corner detection result of leuven2
corner detection of leuven2

The corner detection result of leuven3
corner detection of leuven3

The corner detection result of wall1
corner detection of wall1

The corner detection result of wall2
corner detection of wall2

The corner detection result of wall3
corner detection of wall3

The Matching Results using the Sum-of-Squared-Distance

bikes1 and bikes2
ssd matching bikes1 and bikes2 The matchings between the two images look very good.

bikes1 and bikes3
ssd matching bikes1 and bikes3 The matchings between the two images look very good.

graf1 and graf2
ssd matching graf1 and graf2 The matchings between the two images look very good.

graf1 and graf3
ssd matching graf1 and graf3 The matchings between the two images are not very ideal. This is probably due to the big rotation which change the appearance.

leuven1 and leuven2
ssd matching leuven1 and leuven2 The matchings between the two images are not very ideal. This is probably due to the big lighting difference between the two images.

leuven1 and leuven3
ssd matching leuven1 and leuven3 The matchings between the two images are not very ideal. This is probably due to the big lighting difference between the two images.

wall1 and wall2
ssd matching wall1 and wall2 The matchings between the two images are not very ideal. This is probably due to the fact that the walls have repeating patterns and everywhere looks similar.

wall1 and wall3
ssd matching wall1 and wall3 The matchings between the two images are not very ideal. This is probably due to the fact that the walls have repeating patterns and everywhere looks similar.

The Matching Results using the Simple-SIFT

bikes1 and bikes2
ssift matching bikes1 and bikes2
The matchings between the two images look very good.

bikes1 and bikes3
ssift matching bikes1 and bikes3
The matchings between the two images look very good.

graf1 and graf2
ssift matching graf1 and graf2
The matchings between the two images look very good.

graf1 and graf3
ssift matching graf1 and graf3
The matchings between the two images are not very ideal. This is probably due to the big rotation which change the appearance.

leuven1 and leuven2
ssift matching leuven1 and leuven2
The matchings between the two images look very good.

leuven1 and leuven3
ssift matching leuven1 and leuven3
The matchings between the two images look very good.

wall1 and wall2
ssift matching wall1 and wall2
The matchings between the two images are sparse but accurate.

wall1 and wall3
ssift matching wall1 and wall3
The matchings between the two images are not very ideal. This is probably due to the big rotation that changes the distributions of the gradients.

RANSAC and Stitching using Affine and SSD

bikes1 and bikes2
ransac bikes1 and bikes2 stitch bikes1 and bikes2 The alignment between the two images looks very good.

bikes1 and bikes3
ransac bikes1 and bikes3 stitch bikes1 and bikes3 The alignment between the two images looks very good.

graf1 and graf2
ransac graf1 and graf2 stitch graf1 and graf2 The alignment between the two images looks very good.

graf1 and graf3
ransac graf1 and graf3 stitch graf1 and graf3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big rotation that changes the appearance.

leuven1 and leuven2
ransac leuven1 and leuven2 stitch leuven1 and leuven2 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big lighting difference between the images.

leuven1 and leuven3
ransac leuven1 and leuven3 stitch leuven1 and leuven3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big lighting difference between the images.

wall1 and wall2
ransac wall1 and wall2 stitch wall1 and wall2 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the fact that the walls have repeating patterns.

wall1 and wall3
ransac wall1 and wall3 stitch wall1 and wall3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the fact that the walls have repeating patterns. Besides, the rotation is also big.

RANSAC and Stitching using Perspective and SSD

bikes1 and bikes2
ransac bikes1 and bikes2 stitch bikes1 and bikes2 The alignment between the two images looks very good.

bikes1 and bikes3
ransac bikes1 and bikes3 stitch bikes1 and bikes3 The alignment between the two images looks very good.

graf1 and graf2
ransac graf1 and graf2 stitch graf1 and graf2 The alignment between the two images looks very good.

graf1 and graf3
ransac graf1 and graf3 stitch graf1 and graf3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big rotation that changes the appearance.

leuven1 and leuven2
ransac leuven1 and leuven2 stitch leuven1 and leuven2 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big lighting difference between the images.

leuven1 and leuven3
ransac leuven1 and leuven3 stitch leuven1 and leuven3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the big lighting difference between the images.

wall1 and wall2
ransac wall1 and wall2 stitch wall1 and wall2 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the fact that the walls have repeating patterns.

wall1 and wall3
ransac wall1 and wall3 stitch wall1 and wall3 The alignment between the two images is not ideal. This is because the matching results are not ideal, which is due to the fact that the walls have repeating patterns. Besides, the rotation is also big.

RANSAC and Stitching using Affine and SSIFT

bikes1 and bikes2
ransac bikes1 and bikes2 stitch bikes1 and bikes2
Using SSIFT produces similar but a little bit worse result. This is probably due to that the second image is blurred thus has less clear gradients.

bikes1 and bikes3
ransac bikes1 and bikes3 stitch bikes1 and bikes3
Using SSIFT produces similar but a little bit worse result. This is probably due to that the third image is blurred thus has less clear gradients.

graf1 and graf2
ransac graf1 and graf2 stitch graf1 and graf2
Using SSIFT produces similar result.

graf1 and graf3
ransac graf1 and graf3 stitch graf1 and graf3
Using SSIFT cannot produce good result, either.

leuven1 and leuven2
ransac leuven1 and leuven2 stitch leuven1 and leuven2
Using SSIFT produces result that is much better than using SSD. This is because the lighting changes do not change the distribution of gradients too much.

leuven1 and leuven3
ransac leuven1 and leuven3 stitch leuven1 and leuven3
Using SSIFT produces result that is much better than using SSD. This is because the lighting changes do not change the distribution of gradients too much.

wall1 and wall2
ransac wall1 and wall2 stitch wall1 and wall2
Using SSIFT produces result that is much better than using SSD. But I think this is due to the mechanism we use to determine the matchings between two points.

wall1 and wall3
ransac wall1 and wall3 stitch wall1 and wall3
Using SSIFT cannot produce good result, either. This is because of the big difference in the gradients.

RANSAC and Stitching using Perspective and SSIFT

bikes1 and bikes2
ransac bikes1 and bikes2 stitch bikes1 and bikes2

bikes1 and bikes3
ransac bikes1 and bikes3 stitch bikes1 and bikes3

graf1 and graf2
ransac graf1 and graf2 stitch graf1 and graf2

graf1 and graf3
ransac graf1 and graf3 stitch graf1 and graf3

leuven1 and leuven2
ransac leuven1 and leuven2 stitch leuven1 and leuven2

leuven1 and leuven3
ransac leuven1 and leuven3 stitch leuven1 and leuven3

wall1 and wall2
ransac wall1 and wall2 stitch wall1 and wall2

wall1 and wall3
ransac wall1 and wall3 stitch wall1 and wall3

computervision-hw2's People

Contributors

joe-siyuan-qiao avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.