Asift and openCV? - opencv

Does opencv allows to use ASIFT ?
http://www.ipol.im/pub/algo/my_affine_sift/
The creator published the c++ so I believe it wouldn't be so hard to implement it into opencv

What do you mean by
Does opencv allows to use ASIFT ?
At this moment, ASIFT is not available in OpenCV directly, but it should be a no-brainer to connect the code provided by the ASIFT authors to OpenCV. Probably all you'll have to do is to convert the OpenCV cv::Mat to some specific image format, by accessing Mat::data pointer.
If you are worried about licensing terms, you should contact the ASIFT authors. OpenCV is free to use/modify/redistribute/sell, under a BSD licence. And it seems that it is the same for ASIFT.
And if you are talking about integrating the code into OpenCV, and sending a patch to the dev guys, there is a guide on how to do it here http://code.opencv.org/projects/opencv/wiki/CodeSubmissions and here http://code.opencv.org/projects/opencv/wiki/How_to_contribute and here http://code.opencv.org/projects/opencv/wiki/CodingStyleGuide . I (and many others) strongly encourage you to do it! It seems to be an important addition to OpenCV.

The 2022 update is that ASIFT is in OpenCV v3.4 and higher.
Examples for the latest stable (v4.6):
C++
Python

Related

OpenCV GPU support and TBB

I am going to train my Haar classifier for flowers(which I am highly skeptical about). I have been following the CodingRobin Tut for everything.
http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
Now, it has been emphasized that I use GPU support, multithreading etc. otherwise the training is gonna take days. I am going to use pre-built libraries and therefore the pre-built opencv_traincascade utility.
I want to ask beforehand, Will I be able to leverage GPU support if I use the pre-built libs, given that I install CUDA?
Where does TBB fit in the whole picture?
Do you recommend me building the whole library from scratch with TBB and CUDA support checked, or that would be a waste?
Note: I am using OpenCV 2.4.11. And I am a complete beginner to OpenCV.

Image Processing on CUDA or OpenCV?

I need to develop an image processing program for my project in which I have to count the number of cars on the road. I am using GPU programming. Should I go for OpenCV program with GPU processing feature or should I develop my entire program on CUDA without any OpenCV library?
The algorithms which I am using for counting the number of cars is background subtraction, segmentation and edge detection.
You can use GPU functions in OpenCV.
First visit the introduction about this : http://docs.opencv.org/modules/gpu/doc/introduction.html
Secondly, I think above mentioned processes are already implemented in OpenCV optimized for GPU. So It will be much easier to develop with OpenCV.
Canny Edge Detection : http://docs.opencv.org/modules/gpu/doc/image_processing.html#gpu-canny
PerElement Operations (including subtraction): http://docs.opencv.org/modules/gpu/doc/per_element_operations.html#per-element-operations
For other functions, visit OpenCV docs.
OpenCV, no doubt, has the biggest collection of Image processing functionality and recently they've started porting functions to CUDA as well. There's a new GPU module in latest OpenCV with few functions ported to CUDA.
Being said that, OpenCV is not the best option to build a CUDA based application as there are many dedicated CUDA libraries like CUVI that beat OpenCV in Performance. If you're looking for an optimized solution, you should also give them a try.

OpenCV for iOS graphics app

I want to create a photo and video manipulation app for the iPad. The app would effect the imagery in various ways (using canny edge detection or bilateral blur for instance).
I saw some very interesting examples of canny edge detection using OpenCV, but is OpenCV the right tool to be looking into if I want to create a graphics app like this?
If so can anyone recommend some good reading materials to get me started.
Thanks for reading!
Yes, you certainly can use OpenCV on iOS. You simply cross-compile the code and include it in your project. OpenCV can easily do what you describe, and much more.
O'Reilly has published a great book on OpenCV, which is probably the best way to get up to speed. It explains the methods and how to use them, with plenty of sample code and images.
Learning OpenCV, Gary Bradski, Adrian Kaehler, O'Reilly 2012
There are a few sample projects around:
Sample OpenCV on iOS project
There are also numerous build scripts etc but note that they are probably not the latest version (2.4).

OpenCV + Webcam compatibility

For the people that have experience with OpenCV, are there any webcams that don't work with OpenCV.
I am looking into the feasibility of a project and I know I am going to need a high quality feed (1080p), so I am going to need a webcam that is capable of that. So does OpenCV have problems with certain cameras?
To be analysing a video feed of that resolution on the fly I am going to need a fast processor, I know this, but will I need a machine that is not consumer available...ie, will an i7 do?
Thanks.
On Linux, if it's supported by v4l2, it is probably going to work (e.g., my home webcam isn't listed, but it's v4l2 compatible and works out of the box). You can always use the camera manufacturer's driver to acquire frames, and feed them to your OpenCV code. You can even sub-class the VideoCapture class, and implement your camera driver to make it work seamlessly with OpenCV.
I would think the latest i7 series should work just fine. You may want to also check out Intel's IPP library for more optimized routines. IPP also easily integrates into OpenCV code since OpenCV was an Intel project at its inception.
If you need really fast image processing, you might want to consider adding a high performance GPU to the box, so that you have that option available to you.
Unfortunately, the page that I'm about to reference doesn't exist anymore. OpenCV evolved a lot since I first wrote this answer in 2011 and it's difficult for them to keep track of which cameras in the market are supported by OpenCV.
Anyway, here is the old list of supported cameras organized by Operating System (this list was available until the beginning of 2013).
It depends if your camera is supported by OpenCV, mainly by the driver model that your camera is using.
Quote from Getting Started with OpenCV capturing,
Currently two camera interfaces can be used on Windows: Video for Windows (VFW) and Matrox Imaging Library (MIL) and two on Linux: Video for Linux(V4L) and IEEE1394. For the latter there exists two implemented interfaces (CvCaptureCAM_DC1394_CPP and CvCapture_DC1394V2).
So if your camera is VFW or MIL compliant under Windows or suits into standard V4L or IEEE1394 driver model, then probably it will work.
But if not, like mevatron says, you can even sub-class the VideoCapture class, and implement your camera driver to make it work seamlessly with OpenCV.

Open-source replacement of Intel Image Processing library

Is there any open-source library to replace proprietary Intel Image Processing Library? At first I need to do image loading-saving, filtering (3x3,5x5 and so) with arbitrary kernel. Support of manychannel images with pixel values stored as float will be wonderful. Also I need a library with good documentation.
PS. both linux/x86 & windows/x86. I want to use it with mingw32 on windows.
PPS. The first task I need to solve using this library is to compute an fractal dimension.
Thanks
There is opencv
If you want to go Cuda then the Nvidia Performance Primitives
OpenCV is probably what you're looking for.
The latest version (2.2) contains both SSE optimization a-la IPP and CUDA implementations.

Resources