What ORB algorithm implementations are available? - c#

We want implement ORB algorithm on C# language. Yes, we can use OpenCV with wrapping, but it's very heavy for our purposes.
I make some research in web and found only this https://github.com/opencv/opencv/blob/master/modules/features2d/src/orb.cpp and try to reimplement ORB source.
But now it's works with multiple bugs and very slow, I think we make some mistakes.
OpenCV have a lot of macros and links to other functions from OCV Core. And C++ it's very hard for sugar-language programmers like C#.
Would you get some links on other ORB implementations (may be on other languages), or good theoretical link, where we can check our C# ORB implementation step by step?

Some other implementations I found:
skimage.feature.ORB (Python) with source code in master here
Arrayfire ORB

There is a good post about explanation of ORB descriptor: A tutorial on binary descriptors – part 3 – The ORB descriptor. If you want to know detailed information leave a comment to this post.
Also try to read the original paper ORB: an efficient alternative to SIFT or SURF.
You may contact to the authors about source code via emails directly.

Related

Windows SendMessage constant reference?

There is a list of all SendMessage constants with their little description of the purpose for each message?
I've found this, but does not explain any of the constants:
http://wiki.winehq.org/List_Of_Windows_Messages
I can search into MSDN for a specific constant to know what it does, but I want to know in a easy way which is the purpose of each message, for example reading a list of the constants with a little description of each one.
Where I can find some info like that?
There is no 'easy way to know the purpose of each message' it takes several paragraphs or pages to describe the intricacies of how to use them (and 'easy way' does not automatically mean internet/online).
The Constants are somewhat descriptive in themselves, but for an online, searchable reference look at the PInvoke site. I thought the old Win32API add-in for VB6 was great too.
EDIT BOOKS
The Win32 SDK by Microsoft (three volumes) was excellent. It is all online in MSDN now, but the book format was excellently laid out.
Visual Basic Programmer's Guide to the Win32 API by Dan Appelman was basically a rehash of the SDK (as they all more or less are) but with VB4/5/6 examples.
All of Petzold's books are pretty much the gold standard for the Win32 API.

Open source 3D Geometry libraries?

I'm working on a personal project that involves finding the intersections of tubes (thin walled cylinders). It requires two main math computations I'm trying to find in a library or in sample code.
1) The minimum distance between two lines. (I've found code for this already)
2) The two corresponding points on the two lines that are each closest to the other line.
I've found plenty of sites with the math on how to do #2, but no sample code of anyone implementing it.
I am fully capable of writing this from scratch based on the math, but I'd much prefer saving several hours of coding, testing, and verifying by finding existing code I can incorporate in my C# app. Even if the sample is in another language, I can port things over to C# much faster than writing from scratch.
Since this is very much a "solved problem," I assume there has to be an open source library in some language already in existence, and re-inventing the wheel (and testing it and verifying it) would be a waste of time. (And, as we all know, any time we can spare from life for "personal projects" is a scarce and valuable commodity.)
There many open source library, if you familiar width javascript, you can try three.js, there is an implementation https://github.com/mrdoob/three.js/blob/master/src/extras/geometries/CylinderGeometry.js
or you can find some ascriptscript library, like papervision3d
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cylinder.as

Code libraries/applications in C#

I am refreshing my memory on C# (first used it several years ago), and I want to look at some real world quality code (rather than the simplistic ones used in many books).
My preference would be mathematical/statistics libraries written in C# as I would like to see how Matrices and PDEs (partial differential equations etc) are implemented in C#.
Can anyone recommend a good quality online resource where I can view some 'industrial grade' preferably (Math/Stats) library/application written in C#?
Math .NET may be will be interesting for you.
You might be interested in WPF Dynamic Data Display.
Mono (an open source, cross platform implementation of .net) is also open source.
Numerical Methods and the related projects might be of interest.

AI Programming Resources with a focus on Web Applications

I'm interested in learning some AI algorithms that have a practical use in web applications eg. search, product recommendations etc. Obviously since I'm asking this question I am look for some more entry level material.
Any sort of useful stuff on the subject is good - books, blogs, tutorials, anything. My language of choice is c# so anything in that would be awesome but I'm happy to look at examples in other languages.
Toby Segaran's Programming Collective Intelligence isn't strictly an AI book I guess, but it does cover the kind of topics you're interested in (e.g. product recommendations, predictions, price modelling), and as a newcomer to the field I found it pretty accessible. It does sometimes skip over algorithmic detail in favour of "here's how to use this technique via an existing library" though; also the code samples are written in Python though it's clearly explained and easily translated to C#. It has a strong Web focus because, as the title implies, it deals with mining data from user-provided content, particularly on external sites such as eBay, etc.
I use AForge.NET in several projects. There are quite simple and fast implementations of genetic algorithms, neural networks, machine learning and so on.
It is an open-source project, so I can recommend it as a starting framework for any project using AI.
There is an excellent series of Google talks that will cover the foundations called Statistical Aspects of Data Mining. It's the same graduate level class that David Meese gives at Stanford.
The book Algorithms of the Intelligent Web by Haralambos Marmanis & Dmitry Babenko (Manning ed. 2009) provide a primer into this kind of things.
This book covers a rather broad spectrum of areas where "smarts" can be applied to web applications. Because of this, many topics receive at a rather superficial treatment, BUT each chapter includes very relevant references for digging further.
Also, code-wise, the working examples found in the book are made available in a code.google.com project (sorry however, mostly java, not C# as suggested in the question)
I cannot think of other AI resources specifically focused on Web applications, but many areas of AI-at-large are relevant the "intelligent web", in particular:
Natural Language Processing
[some] Neural Networks
Machine learning and classifiers
"Algorithms of the Intelligent Web" by Marmanis & Babenko. Hands down the best reference for what you need (based on your description). Yes, the code is written in Java but it is so clean and straightforward that you can probably transliterate it, into whatever you want, rather quickly.
In terms of search functionality it goes beyond indexing and describes, in-detail, PageRank, user click enhancements, and a PageRank-inspired ranking algorithm for plain documents (ASCII, Word, PDF) that the author called DocRank.
The book also provides, probably the best, practical coverage of recommendation engines, e.g. user-user, item-item, content based.

C# linear algebra library

Is there stable linear algebra (more specifically, vectors, matrices, multidimensional arrays and basic operations on them) library for C#?
Search yielded a few open source libraries which are either not updated for couple of years or are in an early beta stage - and Centerspace NMath. Which alternatives are worth checking?
Math.NET. We're using it in production.
See: http://en.wikipedia.org/wiki/List_of_numerical_libraries
http://www.alglib.net/ - Open source. Multi-language library.
http://www.mathdotnet.com/ - Open source. As mentioned by others. dnAnalytics is replaced by http://numerics.mathdotnet.com/ in this.
http://www.lutzroeder.com/dotnet/ - Lutz Roeder has a open source port Mapack.Net of LAPACK.
http://www.extremeoptimization.com/ - Commercial.
I am using ILNumerics.NET
www.ilnumerics.net
Very good support and stable. I don't have any comparison though.
We have evaluated nMath and were quite pleased with its programmability and speed. Their support staff even worked over a weekend to figure out a bug we found. We liked that they used Intel's Kernel Math library instead of rolling their own numerics. [Edited to add: have been using in production for years]
Few weeks ago I found a new c# library FinMath contains implementations of many various methods and techniques including basic linear algebra, such as:
Vector and Matrix implementations (easy to use high-level interfaces covering most of all BLAS functionality)
Algorithms of matrix factorizations (LU, QR, SVD, Cholesky).
And many other useful things like statistics, factor and cluster analysis, linear and quadratic programming solver and etc.
Unfortunately, it's not free, but it's extremely fast, because it uses MKL for most complex computations and at the same time it distributed as single library supports both 32bit and 64bit modes and requires no special maintenance to use, like taking care about native libraries.
Have you looked into dnAnalytics?
Although it is not updated, not open source, and not for commercial usage, one might want to check out D* from Microsoft Research. It's a very cool symbolic math library, especially for doing derivatives, but really it's a little matlab in the hands of a .NET programmer.
http://research.microsoft.com/en-us/downloads/4714703d-782c-4e37-830d-0e3b7662f743

Categories