Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JAI vs. OpenCV vs. ITK

328 views
Skip to first unread message

Tomasz Pięciak

unread,
Jul 8, 2009, 5:35:24 AM7/8/09
to
Hello

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

Bob Alvarez

unread,
Jul 8, 2009, 6:01:55 PM7/8/09
to
On Jul 8, 2:35 am, Tomasz Pięciak <tpiec...@gmail.com> wrote:
> I mean
> which of them are probably the best for amateur and semi-professional
> work?

Be more specific about what you want to do.
Why did you pick these 3 libraries out of the hundreds of
possibilities?

Message has been deleted

Jonathan Campbell

unread,
Jul 9, 2009, 8:19:00 AM7/9/09
to

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.

serg271

unread,
Jul 9, 2009, 9:13:32 AM7/9/09
to
On Jul 9, 3:19 pm, Jonathan Campbell <jg.campbell...@gmail.com> wrote:
> Tomasz Pięciak wrote:
> > Hello
>
> > 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?
>
...skip...

>
> 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).
>

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.

Jonathan Campbell

unread,
Jul 9, 2009, 11:40:10 AM7/9/09
to
serg271 wrote:
> On Jul 9, 3:19 pm, Jonathan Campbell <jg.campbell...@gmail.com> wrote:
>> Tomasz Pięciak wrote:
>>> Hello
>>> 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?
> ...skip...
>> 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).
>>
>
> 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.

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.

Tomasz Pięciak

unread,
Jul 10, 2009, 7:41:16 AM7/10/09
to
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.
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

Jonathan Campbell

unread,
Jul 10, 2009, 9:22:55 AM7/10/09
to
Tomasz Pięciak wrote:
> 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.
> So, would you prefer any DICOM library (C++, Java) to convert images
> into the other format like PNG, or something like that?
>

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,

Fernando Cacciola

unread,
Jul 10, 2009, 12:53:57 PM7/10/09
to
Hi Tomasz,

> 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

jogging

unread,
Jul 11, 2009, 10:46:30 PM7/11/09
to
On Jul 11, 12:53 am, Fernando Cacciola <fernando.cacci...@gmail.com>
wrote:

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

0 new messages