Does any of you have some experience with these libraries? I mean
which of them are probably the best for amateur and semi-professional
work?
Can anyone compare them in terms of possibilities, speed and
flexibility of using?
Regards
Tom
Be more specific about what you want to do.
Why did you pick these 3 libraries out of the hundreds of
possibilities?
I'm hardly qualified to answer, but here goes anyway.
JAI vs. OpenCV vs. ITK
Apart from their technical qualities, there may be in reality more
important criteria.
1. Language. Are you more comfortable in Java (JAI) or C++ (the other
two); C++ is no joke for someone not expert in it, or willing to climb a
steep learning curve (e.g. for a Java programmer). OTOH, OpenCV (the
only one I know anything about) may allow an application programmer to
avoid the difficult systems programming aspects of C++.
2. Support. Are there newsgroups or mail-lists devoted to any of them?
There is a sort of group devoted to OpenCV that is accessed via Yahoo;
not sure how useful. Or do you know people who use any of the APIs?
3. Third-party software.
In the past (1973--2000 say), I have developed my own image processing
(+ pattern recognition, + signal processing, ...) packages; first C, the
Java; I started a C++ one, but never finished; a lot of time wasted, but
there seemed no alternative at the time and my image processing + dsp +
statistical pattern recognition requirements did not seems to be
satisfied by any package freely available.
When I received the OpenCV book and installed the software (the book
gave me confidence in OpenCV that it was still being maintained etc.) I
wrote the following message to some colleagues:
"
If I was to develop another image processing system or major
application, I'd probably base it on OpenCV. There is a recent book:
Learning OpenCV (Gary Rost Bradski, Adrian Kaehler), O'Reilly, 2008.
http://oreilly.com/catalog/9780596516130/index.html
I have it and it looks like a super introduction to OpenCV and also to
image processing, some machine learning and pattern recognition
topics, plus building blocks for video processing and 3D vision.
OpenCV is free and from my experience is easy to download, install,
and get working.
"
I must say that my confidence in OpenCV was boosted by comments from a
friend in a local university, and by the fact that I had someone to call
when in difficulty (like when installing, but I think I didn't need help).
Best regards,
Jon C.
P.S. You may want to consider also ImageJ --- my PhD student liked it. j.
--
Jonathan Campbell www.jgcampbell.com BT48, UK.
OpenCV robust, fairly complete and easy to install. 2 Years ago stable
release was missing some popular methods like SURF/SIFT/FAST (though
they may be in the trunk by now already), bundle adjustment and some
others.
The small drawback is - the code is somehow ugly. Like Create/Release
to add two matrices. That's not a big problem though - Matrix/Linear
algebra wrapper is easy to write.
It's also have some performance issues, because it's more of research
tool, not production library for final product. The right way to use
it IMO - to write complete functional prototype and after that rewrite
CV code and switch to high-performance numerical libs for numerical
tasks line SVD, if any in use.
I agree with the ugliness; also I should have indicated that it is
written in C rather than C++. However, C code is completely
interoperable with C++.
[...]
Best regards,
Jon C.
Well, I'm looking for a library to my Ph.D. application on which I'm
trying to extract and recognize some heart disease on MRI images.
So, would you prefer any DICOM library (C++, Java) to convert images
into the other format like PNG, or something like that?
I think, a programming language doesn't matter (C++, Java) except C#
(I'm not familiar with it).
Regards
Tomasz Pieciak
I have not processed MRI data. What is its structure? A spatial sequence
of images (slices)? If so, OpenCV would handle that well.
But probably the others as well.
Can you attempt to find out what used by the writers of key papers in
your area? I suspect that you will find that MATLAB was used. But MATLAB
is dreadfully expensive (perhaps 1,500 Euro per annum for one licence)
for poorly funded projects. There are 'free' MATLAB 'clones', e.g.
Octave, Scilab. But some MATLAB image processing software is
incompatible with Octave. And the Scilab project seems to have undergone
some sort of a split --- ask Google.
What I liked about OpenCV is that it operated across the domains that
interested me: image processing, video processing, time series (e.f.
Kalman filter), pattern recognition. This is like I designed my own
packages.
OTOH, if you are going to do a lot of statistical pattern recognition
(data = vectors of features) then you could write your features to a
file and use R. R is rather superb.
I have not used DICOM data, so I cannot comment on that aspect.
> I think, a programming language doesn't matter (C++, Java) except C#
> (I'm not familiar with it).
>
Java would be easier for someone starting out. If you use C++ make sure
you get a good modern textbook that uses the standard library (STL)
properly, e.g. std::string instead of char *, std::vector, etc.
I think also you should consider the presence of a 'community', e.g. a
Usenet newsgroup or mailing list. Have a look at the Yahoo OpenCV group.
The fact that it was not Usenet and somewhat difficult to access put me
off a bit.
Good luck,
> Thank you for your answers
>
> Well, I'm looking for a library to my Ph.D. application on which I'm
> trying to extract and recognize some heart disease on MRI images.
In that case I would recommend ITK as it is specifically target towards Medical
Imaging.
> So, would you prefer any DICOM library (C++, Java) to convert images
> into the other format like PNG, or something like that?
>
IIRC, ITK supports DICOM directly.
> I think, a programming language doesn't matter (C++, Java) except C#
> (I'm not familiar with it).
>
Just a side note: If you can program in C++ and Java, then you can program in C# :)
It would only take you a few days to get up to speed with it.
Best
--
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com
I agree. ITK focuses on medical image processing application. Together
with
libraries you can develop an entire application.
The advantage of OpenCV is that it covers a wider range of interest
than ITK, just as
Jonathan said. If you hope to develop a commercial product, IPP is
available, which
provide optimization for Intel processors, so the program can rum
faster.
Best Regards
Jogging