Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
Which free/open source machine/computer vision libraries do exist?
Summary of answers
Libraries
OpenCV
SimpleCV
VxL
VLFeat
LibCVD
iceWing
CImg
Motion
ccv
Other
RoboRealm Vision Software Applications
Wikipedia: List of SIFT implementations
Stack Overflow: What is the best image manipulation library
What language are you using? VLFeat seems like a pretty good one for C++ (and actively maintained), though I haven't actually used it. I'm mainly familiar with SIFT - there's a number of implementations listed at the bottom of the Wikipedia article.
libCVD http://savannah.nongnu.org/projects/libcvd
Cambridge Video Dynamics - Library for images, video capture, display, computer vision and more. Integrates well with TooN for a linear algebra framework. Language: C++
This is actively developed, and has a lot of useful features and algorithms, and generally those guys make things to work very fast.
It is LGPL.
It is possible to compile it on Win, Linux and MacOS X.
There is also an intention to provide port for Python with this one, to allow
to prototype Computer Vision algorithms with Python and SciPy very fast (i am not sure at which stage it is now, but there was a paper about it in a Python conference.)
If you are trying to do anything in real-time you should seriously consider libCVD.
For example,
PTAM (Parallel Tracking And Mapping) framework by Georg Klein uses this library.
RoboRealm compiled a huge list of vision software.
This older question mentions lots of libraries.
My university works with IceWing a rapid prototyping for vision tasks that is used to add tasks make chains out of them and have a GUI for seeing the results etc.
The library is widely used for vision related tasks in all the robots that are developed in Bielefeld
You can find the library here
If you are programing C++ you could check out CImg. While it may not be the most optimized library out there I have found it to be user friendly. It's also neat that it does not force you to deploy additional dlls.
If you need only motion detection, you could get away with Motion
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm trying to learn how to build an augmented reality app to place a 3D object into the world without the need for a "target". So far, pretty much every augmented reality framework seems to only work with targets; Vuforia, Wikitude, etc. Some have slight extensions on target tracking, such as Vuforia's "Extended Tracking" and "Smart Terrain" features, but in the end these are afflicted by the same limitation -- the SDKs are hopelessly obsessed with "targets".
Then I came across Google Tango. It's hard to tell exactly, but it appears to be the only option I could find which offers placing 3D objects into the real world and allowing the user to walk around with the 3D objects staying in place (relative to the world).
Am I correct in my assumption that Google Tango is the only option for this? If I'm going to spend $512 on a Tango development kit, I want to first make sure there weren't other augmented reality libraries I could have used for this.
Kudan provides markerless tracking, via SLAM. They have a free trial version and no hardware necessary.
Markerles tracking is not new. 13th Lab's PointCloud SDK prodided markerless tracking a few years ago. But it removed that offering when their implementation was licensed exclusively by a 3rd party.
The SLAM algorithm is neither new nor proprietary. Anyone can implement it from the CalTech academic paper, though it's a graduate-level problem to tackle!
Check out http://easyar.com markerless tracking and other cool features. And it is free and opensource
Wikitude also have a markerless tech. I have not tried it to tell how good it works.
Vuforia had something called Smart Terrain which was more of an interaction with environment. But the tech is quite old and I am not sure they kept it going in the last couple of years.
Actually, none can really claim to have a working markerless, it is more of a working in certain conditions. You need proper hardware fast enough to process all the calculations and limited usage conditions as no fast movement and ideal environment.
Microsoft is also coming up with Hololens but hardware is at $3000 and only for dev at the moment.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I have the skills with C++, ruby,rails, and some other scripting languages. I want to start experimenting and learn concepts in Data mining and machine learning.
I want to be well equipped with the programming knowledge required for those concepts.
Which language has best support for DM and ML? puthon, Java, C++? Is there anything coming up in Javascript?
Thanks
Use whatever you are most comfortable with.
At least if it has the basics around. JavaScript and PHP are not very good in this domain. They just don't scale well for numerical computations. Python, R, Java and Scala are most popular. Theres Matlab, but there is not much happening there anymore. There is Julia which has a similar syntax but which is much more alive and shows some promise, if it weren't for colum-major,1-indexed arrays and the matlab-like syntax. Some use Lua, others Mathematica...
There are many many factors that play a role.
For example, scripting languages like Python and R are really slow - but these two also interface very well to C libraries (and Fortran!) so if you nostly use them as a "driver" and the libraries do all the work then they can be very usable. Just make sure to not assume every module is fast...
I think that perhaps your question is a bit off target. The languages themselves don't generally have the support: it's packages that interface with those languages, such as Apache Spark (interface to their ML package), Intel's MKL (vector and matrix operations optimized for Xeon Phi), SciKit (Python interface), etc.
That said, I see the most active support for languages that drive at distributed processing. In my ambit, Java/Spark is currently the front-runner, but one or two major releases can change the market considerably -- see the buzz on Tensor, for instance, or the staying power of BeautifulSoup.
For experimentation, start with your comfort zone. There are plenty of good tools that interface well with Ruby and C++, as well. As long as you're using this to learn the underlying concepts, I believe that you'll do best with a language you already know: that gives you one less area of frustration in your learning curve.
Anony-Mousse and Patricio have given you very good points with which I totally concur. I'm working in Python and Scala, with Java and Spark just underneath.
Python has a very strong support from the Data Science Community, you have very good packages like Pandas and Python has a very good integration with Spark
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
During developing algorithm I need a lot of well known descriptos, such as SURF, HOG, Hessian, combined with classifiers (SVM).
Also I would need to do a lot of tweaking of these algorithms (not just hyperparameters changing).
As far as I know Matlab computer vision toolbox is not very good for all of these.
Which language or software has more open source libraries and provides best flexibility?
OpenCV - Open-source C++ library, with interface to Python and Java.
Sounds like it has everything you need.
OpenCV is fast and contains everything you need, I would prefer to use it in python (it has an interface for python)
and then use Scikit-learn for machine-learning, which is a simpler yet powerful library in python. with a very active open-source community
Since you are familiar with Matlab, NumPy and matplotlib should be easier to learn, they have a lot of methods and syntax in common. I did matlab before python too and found easier to grasp NumPy
Scipy, Pandas, Ipython-Notebook are other libraries that can be easily used and are shipped with Anaconda distribution of python. Scikitlearn is also shipped with Anaconda.
just get the Anaconda distribution from link below and you're ready to work, everything is well managed in anaconda, you don't even need to worry about package management and dependency issues.
https://www.continuum.io/downloads
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Can anyone direct me to a free people tracking library? I would like to be able to use an input image (or video) and get the position of people in it. I have looked at the Reading People Tracker but cannot compile it! I am on Linux (Ubuntu) but windows would be okay (if anyone can tell me how, this would be great). Preferably, it would be for C/C++ but java, c#, ruby and python would be okay too. Thanks in advance, ell.
Not specifically a people tracking library, but as a general tracking approach "Predator" is very highly regarded: http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html - Authors site includes some very impressive demonstration of results on youtube
This article fully explains an algorithm used for tracking moving people, and the accompanying source code is here; it is pure Java. You can see it in action in this video.
(Disclaimer: I'm the author; but I do think this is very useful, and have successfully used the algorithm a lot myself.)
The algorithm tracks moving objects in general, finds their bounding rectangle (which the application draws), counts the number of pixels in each objects, and consistently assigns them the same integer ID throughout the video frames.
When it comes to commercial computer vision applications, OpenCV and the Point Cloud Library aka PCL are your best friends (C++, but there are Java and C# bindings). And articles like the one linked explains how to use tools like OpenCV to accomplish full stack motion tracking. (The pure Java implementation shows how it works down to the individual pixels.)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I find myself to be a visual person and sometimes it's easier to learn something if I can draw diagram/pictures out of it. My question is which tool do I use if I want to map a programming framework (for example .net) visually and see the relationship between all entities (such as classes and members).
You might try NDepend. The great Scott Hanselman discusses it more here. Tons of visual dependency formats too. It sounds like its only for .NET though.
I find doxygen is useful for generating all kinds of dependency information when faced with a new project. It apparently handles "C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D". It uses Graphviz to generate graphical dependency charts. You can include full source code, with hyperlinks from everything that was recognised. If you are lucky there will be some documentation that doxygen understands in there already. You can then navigate around the code quickly, learning what all the relationships are.
The tool NDepend proposes both an interactive Dependency Graph and an interactive Dependency Matrix. Also, the tool is integrated in VisualStudio 2012, 2010 and 2008. Disclaimer: I am one of the developers of the tool
Whether you need to exhibit Call Graph, Coupling Graph, Inheritance Graph, Dependency Graph, very large Graph, pinpoints Dependency Cycles and more, NDepend will generate some visual diagrams. Here are some screenshots:
A decent first-cut might be to write a simple PERL script to parse out dependencies and then pipe that data to Graphviz for visualization.
I'm not sure if you are asking only about .NET or other frameworks, my experience is mostly with Java but I'm sure similar tools exist for .NET.
On the level of classes you can get an auto-generated visualization using UML tools that can typically reverse engineer source code into a diagram. Netbeans is free and has Java source to UML reverse engineering features.
Class diagrams however are very low level, they tell you little (directly) about the larger architectural themes. At that point tools like Structure101 can be valuable in discovering architectural properties that you didn't realize were there. They have a trial version and can also deal with C and C++.
I second the Doxygen comment by Nick. I am using Doxygen for C#.NET and it generates class diagrams, inheritance diagrams, etc. Here is an informative blog post.