Giter VIP home page Giter VIP logo

ahmetozlu / augmented_reality Goto Github PK

View Code? Open in Web Editor NEW
207.0 14.0 55.0 51 KB

:gem: "Marker-less Augmented Reality" with OpenCV and OpenGL.

Home Page: https://www.youtube.com/watch?v=nPfR5ACrqu0

License: MIT License

C++ 98.42% CMake 1.58%
opencv opengl computer-vision augmented-reality marker-less object-recognition feature-extraction feature-matching pose-estimation rendering-3d-graphics

augmented_reality's Introduction

Marker-less Augmented Reality

In this project readers will learn how to create a standard real-time project using OpenCV (for desktop), and how to perform a new method of marker-less augmented reality, using the actual environment as the input instead of printed square markers. It covers some of the theory of marker-less AR and show how to apply it in useful projects. Please contact if you need professional marker-less AR project with the super high accuracy!

See the related Medium post for more information!

Quick Demo

  • MarkerlessAR_V1

  • MarkerlessAR_V2

  • When my OpenGL code works :D


TODOs:

  • Fixing the performance issues:
    • Separate "detection" and "tracking" in 2 threads.
    • Once the target image is detected just track the keypoints using sparse optical flow (calcOpticalFlowPyrLK) and compute camera pose (solvePnp) instead of performing feature detection and matching on every frame. The feature detection will be performed again when tracking is lost on most of the keypoints.
  • Dimensionality reduction will be performed on key points to make pattern detector more robust.

Citation

If you use this code for your publications, please cite it as:

@ONLINE{mar,
    author = "Ahmet Özlü",
    title  = "Marker-less Augmented Reality with OpenCV and OpenGL",
    year   = "2018",
    url    = "https://github.com/ahmetozlu/augmented_reality"
}

Author

Ahmet Özlü

License

This system is available under the MIT license. See the LICENSE file for more info.

augmented_reality's People

Contributors

ahmetozlu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

augmented_reality's Issues

Some tips to improve your algorithm

Hi,

I've just found this repo and wanted to give some tips to improve your algorithm.

  1. Don't do feature detection and matching on every frame. This is really slow, once you've found the target image you can just track the keypoints using sparse optical flow (calcOpticalFlowPyrLK) and compute camera pose (solvePnp) but only do feature detection again when you loose tracking on most of your keypoints.
  2. If you use this approach you could separate detection and tracking in 2 threads, making the tracking able to recover fast if it starts loosing keypoints.

Here it is a sample repo I made for MarkerlessAR for iOS, it doesn't include separate threads but you can figure out how tracking works:

https://github.com/pawlusmall/MarkerlessAR

Your documentation and code is very clean and understandable for those wanting to learn how AR works, congratulations.

What version of opencv do you use

may i ask you What version of opencv do you use?when i run you code in oppencv3.4.0 i meet some problem such as :1、cv::Ptrcv::FeatureDetector detector = new cv::ORB(1000),2、cv::Ptrcv::DescriptorExtractor extractor = new cv::FREAK(false, false), it reminded me that Objects of abstract class type are not allowed

Portable for WebAR

Hi! This can be portable for WebAR? i.e OpenCV.js or some way to transpile for web?

Thanks,
Pablo.

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.