Code Monkey home page Code Monkey logo

prasannanatu / panorama-stitching-classcial-and-deep-learning Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 72.19 MB

This repository contains an implementation of panorama stitching, a computer vision technique used to combine multiple images into a seamless panoramic image. The project leverages classical techniques such as feature detection, matching, and RANSAC, along with a deep learning approach using Homography Net and Tensor DLT.

Python 100.00%
feature-extraction feature-matching homography-estimation homographynet image-blending image-warping panorama-stitching ransac

panorama-stitching-classcial-and-deep-learning's Introduction

Panorama Stitching

Outputs

Classical Panorama Stitching Output

Output 1 Output 2
Output 1 Output 2

Supervised and Self-Supervised Output

Supervised Homography Net Loss Self-supervised Homography Net Loss
Supervised Loss Unsupervised Loss

Table of Contents

About The Project

In Phase 1, the project utilizes traditional computer vision methods for stitching together multiple images. This includes Harris Corner Detection, Feature Descriptors, Feature Matching, the RANSAC algorithm, and warping and blending of images.

Phase 2 employs deep learning techniques for panorama stitching. This includes a Homography Net used for supervised learning, and Tensor Direct Linear Transform (DLT) for self-supervised learning.

Repository Structure

.
├── Phase1
│   ├── code
│   │   ├── Wrapper.py
│   ├── Outputs
│   │   ├── mypano1.png
│   │   ├── mypano2.png
|   ├──Data
│   │   ├── Test
│   │   ├── Train
 Phase2
│   ├── Checkopints
│   │   ├──supervised_unsupervised.zip
│   ├── deep_output
│   │   ├── supervisedlos.jpeg
│   │   ├── unsupervisedlos.jpg
│   ├── code
│   │   ├── main.py
│   │   ├── utils.py
├──README.md
└──Report.pdf

Technologies Used

This project uses several technologies and methodologies to achieve panorama stitching:

  • Python: The main programming language used for the implementation of this project.
  • OpenCV: A powerful library used extensively for image processing tasks.
  • NumPy: Essential for high-performance mathematical computations on multi-dimensional arrays and matrices.
  • PyTorch: The deep learning framework used for implementing the Homography Net and Tensor DLT.
  • Homography Net: A supervised learning method using a neural network to predict homography between pairs of images.
  • Tensor Direct Linear Transform (DLT): A self-supervised learning method that predicts homographies purely from the image data.
  • Spatial Transformer: A differentiable module that performs an explicit geometric transformation on the input image, enabling neural networks to learn how to perform spatial transformations on images.

Installation & Usage

To run the project locally, follow these steps:

  1. Clone the repository:
git clone https://github.com/Prasannanatu/panorama-stitching-classcial-and-Deep-Learning.git

Install the required dependencies. You can use the provided requirements.txt file to install the necessary packages. Run the following command:

pip install -r requirements.txt

References

The following sources have been instrumental in the development of this project:

  1. DeTone, D., Malisiewicz, T., & Rabinovich, A. (2016). Deep Image Homography Estimation. arXiv preprint arXiv:1606.03798 [Link]
  2. Nguyen, T., Chen, S. W., Shivakumar, S. S., Taylor, C. J., & Kumar, V. (2018). Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model. In Proceedings of the European Conference on Computer Vision (ECCV) (pp. 621-637).[Link]

3.RBE-549 Computer Vision course project page[link].

Tags

  • Homography Estimation
  • Deep Learning
  • Computer Vision
  • Unsupervised Learning
  • Robust Estimation
  • Image Registration
  • Feature Extraction
  • HomographyNet

panorama-stitching-classcial-and-deep-learning's People

Contributors

prasannanatu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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.