Giter Club home page Giter Club logo

computer-vision's Introduction

Computer Vision

Computer vision exercise with Python and OpenCV.

This repo contains three differents Jupyter Notebooks, divided on different sections and problems of the Computer Vision subject of University of Granada, from applying filters to an image, to the estimation of fundamental matrix equation of the cameras. The code and the images are also available on the repo.


Filtering and subsetting

  • Gaussian filters: one of the exercises consists on create a gaussian filter to create a mask and convolves the images with this masks.
  • Hybrid images: the hybrid images are two differents images mixed on a new image that contain the low frequencies of one of the images, and the high frequencies of the other image, to create the "illusion" that if you look the image closer, you can see the image where we take the high frequencies, and if you look further, the image of the low frequencies appear.
  • Gaussian Pyramid: to make it easier to appreciate the effect of the hybrid images, you can create a gaussian pyramid where it appears the same image at different scales.

Keypoints, descriptors, homographies and panoramas

  • Harris points detection: these is my own implementation of Harris Points detector, that detect and compute this points at three different scales, and show 100 points (of the 1500 points in total) for every scale on an new image. The green points belongs to the original scale, the blue ones are belongs to the mid scale and the red ones to the last scale.
  • KAZE/AKAZE detectors: I use one of this detectors to detect and compute de keypoints of two images, and calculate the matches between two images with a brute force matcher and cross validation, using OpenCV funtions AKAZE_create or KAZE_create, detectAndCompute, BF_Matcher and match.
  • Panorama construction: to create a panorama, I use all of the previous point to find the homography between two images with findHomography. With this I can create a linear panorama using a white canvas to insert the images transformed by the homography.

Camera estimation and epipolar geometry

  • Camera estimation: camera estimation from points correspondences using the DLT algorithm and the Frobenius norm to calculate the error.
  • Camera calibration: camera calibration using chessboard images and the OpenCV functions findChessboardCorners, drawChessboardCorners to visualize the pattern and calibrateCamera to calibrate the camera. To correct the lens distortion I use getOptimalNewCameraMatrix and undistort.
  • Fundamental matrix estimation: equation estimation using BRISK/ORB detector to get points corresponences and 8-point algorithm with RANSAC. Also we can see the epilines on the images.
  • Essential matrix estimation, translation and rotation between two images: essential matrix estimation using points correspondences, and the 4 possible solutions to [R|T] matrix problem.

Requirements

  • Python 3.
  • NumPy.
  • OpenCV.

computer-vision's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.