Open-source replacement of Intel Image Processing library - image-processing

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.

Related

Asift and 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

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.

Intel IPP or OpenCV

i want to specialize in image and video processing. Which library is better for signal processing, Intel IPP or OpenCV? What are the differences between them?
Adem Metin Çalı
You might not need to pick one or the other. If you have IPP installed, then you can compile OpenCV to call IPP internally. I think the OpenCV compiler flag for this is USE_IPP.
You can investigate whether the OpenCV functionality that you'd like to use can take advantage of the IPP back end.
If you tell us more about what you're building, I can give more detailed advice on the trade-offs with IPP, OpenCV, or some blend of the two.
For me it does not seem like an either-or situation.
You can check the differences and how they work together right from the Intel guys.
For some of us it might matter that while OpenCV is free, IPP is not. (When I checked a license was ~$200.) However it covers areas other than image/video processing (it also covers sound processing and cryptography for example).

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.

Is OpenCV 2.0 optimized for AMD processors?

I know that in the past OpenCV was based on IPP and was optimized only for Intel CPUs. Is this still the case with OpenCV 2.0?
History says that OpenCV was originally developed by Intel.
If you check OpenCV faq, they'll say:
OpenCV itself is open source and written in quite portable C/C++, it runs on other processors already and should be fairly easy to port (for example, there are already some CUDA optimizations on NVidia. On the other hand, OpenCV can sometimes run much faster on Intel processors (and sometimes AMD) because it can take advantage of SSE optimizations. OpenCV can be compiled statically with IPP libraries from Intel also which can speed up some function.
I have used it on other processors and different OS and I've always been very happy, including for video processing applications.

Resources