Which SDK should I use to visualize medical images in 3D? - image-processing

I need to process DICOM formatted medical images and visualize them in 3D, also do some image processing on these images on real-time. Therefore, I am asking this question to learn which SDK has better real-time characteristics for medical visualization and image processing?

The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization.
You can find details here.
Or another solution would be the modifying or utilizing 3D engine that supports volume rendering.
Moreover, for computer vision algorithms, OpenCV seems promising.

osgVolume is an add-in to the popular openscenegraph library for doing this

Just use GDCM+VTK. In 2D simply use gdcmviewer. In 3D you need to build gdcmorthoplanes.
Ref:
http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Gdcmviewer
http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Using_GDCM_API

You could check out MITK (http://mitk.org) which combines the already mentioned VTK with the Insight Toolkit (http://www.itk.org) for image processing. Another option to start from could be Slicer (http://www.slicer.org), but this depends on the license you need.

In a uni we were taught Matlab for DICOM file processing. I think it has pretty nice and easy to use plugins for that as well. The end results were that using Matlab I was able to do all kinds of DICOM image processing, filtering and so forth.
As you probably know, Matlab is not SDK but a complete environment. Nevertheless you can write scripts to achieve normal application behavior: Create windows, buttons, images, etc.

Related

What is an easy way to build CGAL mesh out of DICOM sequence?

I have a sequence of DICOM images constituting a single scan. I would like to build a CGAL mesh representing 3D volume segmented out of that scan by thresholding. I prefer Windows and few, easy to build dependencies, if any.
I've heard that ITK can be used for this purpose, but it is a large library with a lot of overlap with CGAL. Are there any other options?
The example CGAL-4.9/examples/Mesh_3/mesh_3D_gray_vtk_image.cpp should be a good starting point. As this is not easy to find we will add a link to it in the CGAL User manual, see the pull request on github

Learn to use Scilab and ImageJ

I am trying to learn to use Scilab and ImageJ, which is software that uses computer coding commands to make graphs and spreadsheets, etc. I've never learned how to code, could you direct me to any websites/classes/online tutorials that would be helpful?
Is there a specific reason to use ImageJ?
Scilab provides a lot of native plotting functionality and for specific image processing operations you can extend Scilab with a toolbox like SIVP.

Feature extraction using wavelets and curvelets

I am involved in a project regarding image processing where I need to extract features of a given image. I am supposed to do that using wavelets and curvelets. But I cannot find any source where I can fully understand them. I have downloaded several journals and publications but couldn't figure out exactly how features are extracted using them.
Can someone explain how its done. Any tutorial that easily explains them is also welcome.
Thanks in advance.
If you are interested in image processing, you musst know the existance of the library OpenCV. This is the most usefull library for image processing.
In This library there is an implementation of Haar Wavelet transform, maybe that could interest you.
For all this kine of algorithms there is another powerfull source of data. That is Matworks File Exchange. This web page is a matlab open source platform. If you don't use matlab, you can see source codes provided on this web site to understand how does wavelet and curvelet works.
For example, this project may interest you :
http://www.mathworks.com/matlabcentral/fileexchange/33146-feature-extraction-using-multisignal-wavelet-packet-decomposition

Computer Vision with Mathematica

Does anybody here do computer vision work on Mathematica? I would like to know what external libraries are available for doing that. The built in image processing functions are not enough. I am looking for things like SURF, stereo, camera calibration, multi-view geometry etc.
How difficult would it be to wrap OpenCV for use in Mathematica?
Apart from the extensive set of image processing tools that are now (version 8) natively present in Mathematica, and which include a number of CV algorithms like finding morphologic objects, image segmentation and feature detection (see figure below), there's the new LibraryLink functionality, which makes working with DLLs very easy. You wouldn't have to change OpenCV much to be able to call it from Mathematica. Just some wrappers for the functions to be called and you're basically done.
I don't think such a thing exists, but I'm getting started.
It has the advantage that you can perform some analytic methods... for example rather than hacking in openCV or even Matlab endlessly, you can compute analytically a quantity, and see that the method leading to this matrix is numerically unstable as a function of input variables. Thus you do not need to hack, as it would be pointless.
As for wrapping opencv, that doesn't seem to make sense. The correct procedure would be to fix bad implementations in opencv based on your analysis in Mathematica and on paper.
Agreeing with Peter, I don't believe that forcing Mathematica to use OpenCV is a great thing.
All of the computer vision people that I've talked to, read about, and seen examples are using Matlab and the Imaging toolkit. Its either that, or go with a OpenCV compatible language + OpenCV.
Mathematica has a rich set of tools for image processing, but I'm uncertain about the computer vision capabilities.

Image processing language/environment

I am interested in studying some image processing. I imagine matlab is the best way to go about that but right now I don't have access to matlab. I tried octave but for some reason it can't even load a png, bmp or anything other than 1 specific format. R doesn't seem to be the key here either.
What is the language of choice here? Perl?
Also can anyone point me to any other good tutorials that I may have missed on image processing?
Opencv is an excellent image processing library. Although written in C it comes with some high level tools to display images handle image files, mouse events etc so you can experiment without writing a lot of windows code.
It also works with python, although I haven't used it with the PIL.
If you are interested in how the algorithms work then implementing them yourself using python and numpy for the matrix ops is easy.
I guess it depends on what you want to do. Matlab certainly is a high end choice, but for a lot of things the image modules of general purpose programming languages do the trick.
I did some pixel mangling and image processing with PIL, the python image library. It is perfectly sufficient for processing single RGB images of reasonable size (say, what a consumer digital camera delivers). It can handle alpha channels, has some filters, more or less quick methods of accessing the pixel information - and it is python, a very straightforward and readable language.
The recommended language in my computer vision class was Ch with the OpenCV library. Ch is basically an interpreted version of C, the syntax is quite similar but has a few nice features, like treating arrays as matrices. OpenCV will house pretty much any image processing function you could need.
I think any free programming environments will do basic image processing well. If speed is not an issue, Processing will work fine and you can easily extend your code to Java in the future.
Have a look at Adobe Pixel Bender. It's really fun to play with.

Resources