{"id":26422442,"url":"https://github.com/plstcharles/litiv","last_synced_at":"2025-03-18T02:05:15.345Z","repository":{"id":140025893,"uuid":"42379470","full_name":"plstcharles/litiv","owner":"plstcharles","description":"C++ implementation pool for computer vision R\u0026D projects.","archived":false,"fork":false,"pushed_at":"2024-01-15T21:07:03.000Z","size":10317,"stargazers_count":100,"open_issues_count":6,"forks_count":30,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-01-16T02:52:25.657Z","etag":null,"topics":["algorithms","computer-vision","image-processing","library","litiv","opencv","segmentation"],"latest_commit_sha":null,"homepage":"http://www.polymtl.ca/litiv/en/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plstcharles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-09-13T01:30:11.000Z","updated_at":"2024-01-11T08:51:36.000Z","dependencies_parsed_at":"2024-01-15T23:08:56.005Z","dependency_job_id":null,"html_url":"https://github.com/plstcharles/litiv","commit_stats":null,"previous_names":[],"tags_count":20,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plstcharles%2Flitiv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plstcharles%2Flitiv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plstcharles%2Flitiv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plstcharles%2Flitiv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plstcharles","download_url":"https://codeload.github.com/plstcharles/litiv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244141433,"owners_count":20404836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","computer-vision","image-processing","library","litiv","opencv","segmentation"],"created_at":"2025-03-18T02:04:18.629Z","updated_at":"2025-03-18T02:05:15.324Z","avatar_url":"https://github.com/plstcharles.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"LITIV Computer Vision Framework\n===============================\n\n[![License](https://img.shields.io/badge/license-Apache%202-green.svg)](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0))\n[![Language](https://img.shields.io/badge/lang-C%2B%2B14-f34b7d.svg)](http://en.cppreference.com/w/cpp/compiler_support)\n[![Build Status](https://travis-ci.org/plstcharles/litiv.svg?branch=master)](https://travis-ci.org/plstcharles/litiv)\n[![Stable Release](https://img.shields.io/github/release/plstcharles/litiv.svg)](https://github.com/plstcharles/litiv/releases)\n\nThis framework contains various libraries, executables and scripts originating from computer vision R\u0026D projects undertaken in the [LITIV lab (Laboratoire d'Interprétation et de Traitement d'Images et Vidéo)](http://www.polymtl.ca/litiv/en/), at Polytechnique Montréal. For now, it primarily consists of C++ algorithm implementations and utilities, most of which rely on [OpenCV](http://opencv.org/). Its build system is based on [CMake](https://cmake.org/), and its structure is inspired by OpenCV. The framework should be compatible with most Unix/Windows systems given proper configuration; it has been developed in part on Windows 7/8/10 with MSVC2015v3, and Ubuntu/Fedora with CLion.\n\nMost of the source code behind the LITIV framework is available under the [Apache 2.0 license](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)); see the [LICENSE](./LICENSE.txt) file for more information. Some third-party libraries and utilities are provided under their own BSD ([2-clause](https://tldrlegal.com/license/bsd-2-clause-license-(freebsd)) or [3-clause](https://tldrlegal.com/license/bsd-3-clause-license-(revised))) licenses. Specific licensing details are available in each source file or folder. While this means the LITIV framework source code can be used in distributed commercial applications, be aware that external algorithms that may be used therein (e.g. ViBe, FastPD) are covered by patents in some countries. Note that we will offer no legal advice on possible patent infringements cases; the LITIV framework should be primarily used for testing, evaluation, research, and development purposes in an academic setting.\n\nThe framework currently has little documentation outside doxygen comments in header files. If you want to learn more about the algorithms, your best bet is to read the papers that introduced them. More minimalist code samples \u0026 unit tests are also always in the works. For now, module behavior validation primarily relies on assertions, and part of these are only enabled for debug builds. If you are looking for a place to start digging, it is recommended to start in the [*apps*](./apps/) and [*samples*](./samples/) folders; their executable projects can provide a high-level look at some features of the framework. The [*apps*](./apps/) folder contains mostly development sandboxes and testbenches (mostly uncommented), while the [*samples*](./samples/) folder contains cleaner use-case examples with more adequate descriptions.\n\nStructure Overview\n------------------\nAs stated before, the LITIV framework structure is inspired by OpenCV's structure. This means libraries are split into [*modules*](./modules/), and they are all assembled under a global library ([*world*](./modules/world/)) for easier linking. Third-party components are kept in their own folder ([*3rdparty*](./3rdparty/)) at the root level. The [*apps*](./apps/) and [*samples*](./samples/) folders contain various executables which rely on LITIV algorithms and utilities for testing and evaluation. The [*scripts*](./scripts/) folder contains evaluation/test scripts that once had some purpose in the lab (it needs cleaning). For testing, each subproject can have its own *test* directory, and it will automatically be parsed and added via CTest.\n\nAll internal modules can be dynamically or statically linked on Unix systems, and only statically linked on Windows (symbol exports are still missing).\n\nRequirements\n------------\n\nThe primary goal here is to have the framework core only depend on OpenCV/CMake, and have as many OpenCV-based implementations as possible. This is not always possible however, so building without all dependencies will disable some features. Here is the list of required and optional dependencies:\n\n* **[CMake](https://cmake.org/) \u003e= 3.1.0 (required)**\n* **[OpenCV](http://opencv.org/) \u003e= 3.0.0 (required)**\n* [GLFW](http://www.glfw.org/) \u003e= 3.0.0 or [FreeGLUT](http://freeglut.sourceforge.net/) \u003e= 2.8.0 (optional, for GLSL implementations)\n* [GLEW](http://glew.sourceforge.net/) \u003e= 1.9.0 (optional, for GLSL implementations)\n* [GLM](http://glm.g-truc.net/) (optional, for GLSL implementations)\n* [CUDA](https://developer.nvidia.com/cuda-toolkit) \u003e= 7.0 with compute \u003e=3.0 (optional, for some optimizations)\n* [Boost](http://www.boost.org/) \u003e= 1.49 (optional, for some 3rdparty implementations, e.g. SoSPD)\n* [OpenGM](https://github.com/plstcharles/opengm) (optional, for mutual segmentation algorithms)\n\nA dockerfile which builds an Ubuntu image including all these dependencies is available [here](./Dockerfile). The images built by Travis are periodically uploaded to Docker Hub [here](https://hub.docker.com/r/plstcharles/litiv-base/) and [here](https://hub.docker.com/r/plstcharles/litiv/).\n\nBuilding\n--------\n\nThis is a CMake-based project; to get your desired solution format (Makefiles, .sln, ...) and compile the framework, you must create a 'build' directory somewhere (ideally, in this directory), startup cmake from there (via command-line or gui), and point to the source directory (where this README is located). For example, in command-line:\n```\ngit clone https://github.com/plstcharles/litiv\ncd litiv\nmkdir build\ncd build\ncmake ../\n```\nUsing the CMake GUI is highly encouraged, as you will have direct access to more options when configuring the framework. It is also easier to set paths to missing/optional 3rd party libraries using the interface.\n\nModules Overview\n----------------\n\nA list of all internal modules is presented below; for more information, refer to their README files.\n\n* [**datasets**](./modules/datasets/) : Provides dataset parsing and evaluation utilities with precaching and async processing support.\n* [**features2d**](./modules/features2d/) : Provides feature descriptors \u0026 matchers ([LBSP](./modules/features2d/include/litiv/features2d/LBSP.hpp), [DASC](./modules/features2d/include/litiv/features2d/DASC.hpp), [LSS](./modules/features2d/include/litiv/features2d/LSS.hpp), [MI](./modules/features2d/include/litiv/features2d/MI.hpp), [ShapeContext](./modules/features2d/include/litiv/features2d/SC.hpp)).\n* [**imgproc**](./modules/imgproc/) : Provides image processing algos and utilities ([edge detectors](./modules/imgproc/include/litiv/imgproc/EdgeDetectorLBSP.hpp), [SLIC superpixels extractor](./modules/imgproc/include/litiv/imgproc/SLIC.hpp), [image warper](./modules/imgproc/include/litiv/imgproc/imwarp.hpp), ...).\n* [**test**](./modules/test/) : Provides utilities for project-wide unit/performance testing; never exported for external usage.\n* [**utils**](./modules/utils/) : Equivalent of OpenCV's \"core\" module; contains miscellaneous common utilities ([see list here](./modules/utils/README.md)).\n* [**video**](./modules/video/) : Provides background subtraction algos \u0026 utilities ([LOBSTER](./modules/video/include/litiv/video/BackgroundSubtractorLOBSTER.hpp), [SuBSENSE](./modules/video/include/litiv/video/BackgroundSubtractorSuBSENSE.hpp), [PAWCS](./modules/video/include/litiv/video/BackgroundSubtractorPAWCS.hpp) and [others](./modules/video/include/litiv/video/)).\n* [**vptz**](./modules/vptz/) : Provides a compact version of the [VirtualPTZ library](https://bitbucket.org/pierre_luc_st_charles/virtualptz_standalone) used to evaluate PTZ trackers.\n* [**world**](./modules/world/) : Provides nothing, and pre-links other modules to make linking easier/faster elsewhere.\n\nNotes\n-----\nFor a more user-friendly, stable and documented background subtraction/video segmentation framework with various other utilities, see [Andrews Sobral's BGSLibrary](https://github.com/andrewssobral/bgslibrary).\n\nRelease notes and versions for the LITIV framework are maintained through [Github Releases](https://github.com/plstcharles/litiv/releases). You are expected to configure and compile the framework yourself based on your own needs \u0026 your machine's capabilities.\n\nCitation\n--------\nIf you use a module from this framework in your own work, please cite its related LITIV publication(s) as acknowledgment. See [this page](http://www.polymtl.ca/litiv/pub/index.php) for a full list.\n\nContributing\n------------\nIf you have something you'd like to contribute to the LITIV framework (algorithm, improvement or bugfix), you can send it in as a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplstcharles%2Flitiv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplstcharles%2Flitiv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplstcharles%2Flitiv/lists"}