OpenPano | Automatic Panorama Stitching From Scratch | Computer Vision library

 by   ppwwyyxx C++ Version: 0.1 License: MIT

kandi X-RAY | OpenPano Summary

kandi X-RAY | OpenPano Summary

OpenPano is a C++ library typically used in Artificial Intelligence, Computer Vision, OpenCV applications. OpenPano has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

OpenPano is a panorama stitching program written in C++ from scratch (without any vision libraries). It mainly follows the routine described in the paper Automatic Panoramic Image Stitching using Invariant Features, which is also the one used by AutoStitch.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              OpenPano has a medium active ecosystem.
              It has 1602 star(s) with 539 fork(s). There are 96 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 25 open issues and 92 have been closed. On average issues are closed in 51 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of OpenPano is 0.1

            kandi-Quality Quality

              OpenPano has no bugs reported.

            kandi-Security Security

              OpenPano has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              OpenPano is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              OpenPano releases are available to install and integrate.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of OpenPano
            Get all kandi verified functions for this library.

            OpenPano Key Features

            No Key Features are available at this moment for OpenPano.

            OpenPano Examples and Code Snippets

            No Code Snippets are available at this moment for OpenPano.

            Community Discussions

            Trending Discussions on OpenPano

            QUESTION

            Panorama stitching for text
            Asked 2018-Jun-05 at 14:56

            I'm looking for a good panorama stitching library for text. I tried OpenCV and OpenPano. They both work good on regular photos, but fail on text. For example I need to stitch the following 3 images:

            The images have about 45% overlapping between each other.

            If there's an option to make one of the mentioned libraries work good on text images, instead of finding another library, that would be great.

            • I need the library to work on linux arm.
            ...

            ANSWER

            Answered 2017-Aug-14 at 07:53

            OpenPano fails at stitching text because it cannot retrieve enough feature points (or keypoints) to do the stitching process.

            Text stitching doesn't need a matching method that is robust to rotations but only to translations. OpenCV conveniently offers such a function. It is called : Template Matching.

            The solution I will develop is based on this OpenCV's feature.

            Pipeline

            I will now explain the main steps of my solution (for further details, please have a look at the code provided bellow).

            Matching process

            In order to match two consecutive images (done in the matchImages function, see code bellow):

            1. We create a template image by taking 45% (H_templ_ratio) of the first image as depicted bellow:

            This step is done in my code by the function genTemplate.

            1. We add black margins to the second image (where we want to find the template). This step is necessary if the text is not aligned in the input images (this is the case on these sample images though). Here is what the image looks like after the margin process. As you can see, the margins are only needed bellow and above the image:

            The template image could theoretically be found anywhere in this margined image. This process is done in the addBlackMargins function.

            1. We apply a canny filter on both the template image and the image where we want to find it (done inside the Mat2Edges function). This will add robustness to the matching process. Here is an example:

            1. We match the template with the image using matchTemplate and we retrieve the best match location with the minMaxLoc function.
            Calculating final image size

            This step consists in calculating the size of the final matrix where we will stitch all the images together. This is particularly needed if all the input images don't have the same height.

            This step is done inside the calcFinalImgSize function. I won't get into to much details here because even though it looks a bit complex (for me at least), this is only simple maths (additions, subtractions, multiplications). Take a pen and paper if you want to understand the formulas.

            Stitching process

            Once we have the match locations for each input images, we only have to do simple maths to copy the input images in the right spot of the final image. Again, I recommend you to check the code for implementation details (see stitchImages function).

            Results

            Here is the result with your input images:

            As you can see, the result is not "pixel perfect" but it should be good enough for OCR.

            And here is another result with input images of different heights:

            Code (Python)

            My program is written in Python and uses cv2 (OpenCV) and numpy modules. However it can be ported (easily) in other languages such as C++, Java and C#.

            Source https://stackoverflow.com/questions/45612933

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install OpenPano

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/ppwwyyxx/OpenPano.git

          • CLI

            gh repo clone ppwwyyxx/OpenPano

          • sshUrl

            git@github.com:ppwwyyxx/OpenPano.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link