Three new programs for serious science.

Recently added to I Do Imaging are three advanced programs: two image segmentation programs from a very productive collaboration in Vancouver, and a Matlab-based dynamic PET analysis package from Umeå University in Sweden.

TurtleSeg is an advanced 3D image segmentation program developed by a prolific team at Simon Fraser University and the University of British Columbia.  Employing a 3D Livewire algorithm named TurtleMap 3D, also developed by the same team, this program uses minimal interactive guidance to automatically perform and iteratively refine  a full 3D segmentation.  The concept is that the user, with Livewire assistance, generates a small number of nonparallel 2D contours on orthogonal or oblique planes, from which the program generates a dense set of parallel segmentation contours defining a full 3D volume.  As the segmentation progresses, the program can present the user with the plane to contour which would best assist the segmentation.  The results are shown in real time as a 3D rendering.  This is a very well-implemented program, with a thorough website offering documentation, including video guides, and a full manual.  TurtleSeg can read and write a wide range of commonly-used 3D file formats, can store and edit existing contours, and can export the segmentation as an image mask or surface mesh.  The program was developed as part of an MSc project and makes effective use of a wide range of free software, particularly the imaging toolkits ITK for segmentation and VTK for image processing and visualization, and also Qt for the graphical interface.  Using the program for the first time, and with minimal anatomical knowledge, I was able to perform an acceptable aortic segmentation within half an hour.  TurtleSeg is a particularly well-implemented project.

Another, more specialized program from the same collaboration is LiveVessel.  It is designed to perform 2D segmentation of vessels from colour photographs, in particular retinal images.  The development of the segmentation process and its underlying algorithm are described in two publications included in the program’s website.  To perform a segmentation, the user defines the start seed point and traverses the vessel with the mouse, while the application calculates the optimal path and boundaries of the vessel in real time. There’s a video on the site that shows how this process reduces the user input to about as minimal as it can be while still providing guidance. This program is written in a combination of Matlab scripts and MEX-files, which need to be compiled before use.  I was able to compile within Matlab on both Windows and Macintosh systems, however as LiveVessel uses the Signal Processing Toolbox, which I don’t have access to, I was unable to run the application.   LiveVessel looks to be a good implementation of a solution to a specialist need, and is well grounded in original research.

ImLook4D is a Matlab application for the analysis of dynamic PET scans, from Jan Axelsson in Sweden.  This is specialized software for a specialized application, and emphasizes the definition and analysis of volumes of interest over time (hence the 4D).  The program may easily be extended by means of drop-in Matlab scripts, and there are a large number of scripts provided with the program.  It’s also able to import and export its working set to the ImageJ environment for further analysis.  It has native capacity to read and write Dicom and ECAT files, as well as raw binary files.  If you work in the rather esoteric field of PET image analysis, you will be familiar with the features offered by this program.  It’s also quite likely that you are a user or programmer of Matlab, which makes this program doubly useful.

Version Woes

I use a combination of automatic and manual methods to keep track of updates to programs. For most programs, I store a string describing the version number, and the URL it came from.  Then I have software to run through all the sites about once a week, and look for a changed version string.  Of course, this requires that the program’s web site does list the version, and if they edit the string or the page I get a ‘false positive’ indicating that the version may have changed, and I check the page manually.
On the big repositories this is usually easy, as they have a consistent page layout and usually describe the version number and release date. Though with the preponderance of dynamic content on web pages these days, it’s getting harder.  There are sections that show and hide, and
sometimes the HTML that my auto-fetch program (basically a scripted wget) retrieves, is different than the HTML issued to my browser…not a fun issue to debug.  Then there is the situation of the hosting site listing all the version numbers, leading to ‘false negatives’ – the string I’m searching for does exist on the page, just not in the first position.  So I have to retrieve only the first, or one in a special heading or div, and I’ve written different software to analyze SourceForge pages, and GitHub, and Google Code.  And of course they keep changing…it keeps me busy.
This caught me out in a major omission, where I neglected to update my entry for SPM, the major neuro image analysis package developed at University College, London.  SPM is one of those plications where it’s almost a case of, if you need to ask, you don’t need it.  SPM is one of the dominat software packages in functional neuroimaging, so everyone in the field at least knows about it.  Still, everyone needs publicity, and so I list SPM and all the programs associated with it, and I thought I was listing its updates.  But the URL I’d stored for SPM’s version number linked to SPM5, their 2005 release, and when the 2008 SPM release came out, on a different page, naturally the version string on the 2005 site remained.
And my site remained out of date until I recently had the pleasure of meeting the manager of SPM development at the Turku PET Symposium. He very politely pointed out that my listing for this major application was three years out of date! I’ve corrected the error now, and improved the listing.  Hopefully I’m not listing too much more disinformation.

The Waiting List: 25 More Programs

Updates have been backing up and here are the programs I’ve noted down to evaluate and add to the site.  These days I try to give each new program more attention, so I download and test them all, create a few sample images, and mention each included program in a blog entry.  It will take a while to get through them all, so I’ll simply list them for now.  Just think, before I Do Imaging, a ‘list of links’ was what passed for a ‘free medical imaging software web resource’.  Hard to imagine, but true.

In no order at all, they are:

  • CTP-The RSNA Clinical Trial Processor: A program providing MIRC functionality.
  • PACS Java Viewer Lite, a DICOM viewer designed to work with DCM4CHEE.  From Turyon, in Spain.
  • Camino Diffusion MRI Toolkit in Java, from University College, London.  Seeing lots of DTI programs these days.
  • DTI-TK toolkit from the Penn Image Computing Lab.
  • ImageJ 3D Viewer plugin.  ImageJ is a platform unto itself.
  • Oviyam, a web based DICOM viewer and part of the dcm4che family.
  • Live-Vessel segmentation of vessels and vascular trees.
  • TurtleSeg segmentation, from the same group, at Simon Fraser.
  • DicomNIFTI converter, though their site is down just now.
  • XNAT Tools, part of the giant XNAT project.  Tons of stuff here.
  • Weasis Viewer, another in the dcm4che family.
  • JIST, Java Image Science Toolkit.
  • NIAK, Neuroimaging Analysis Kit for FMRI, in Matlab.
  • Lipsia: Leipzig Image Processing and Statistical Inference Algorithms.  FMRI data analysis.
  • DicomCleaner from David Clunie, for processing headers of sets of DICOM images.  Straight from the source.
  • Voreen, Volume Rendering Engine.  Not just for medical imaging, but highly relevant.
  • Dicoogle, an interesting PACS engine.  From Portugal.
  • Canvass, a modern-day 3DViewnix.
  • MITK 3M3 Image Analysis, A Dicom viewer based on MITK.  A major project.
  • ImLook4D image visualization and analysis in Matlab.
  • CreaTools applications and development environment from CREATIS.  Another big project.
  • dicomsdl C++ libraries for DICOM.
  • PrivacyGuard / DICOM Confidential, looks to be an extremely thorough DICOM anonymization application.
  • 3DimViewer, a DICOM viewer, from the Czech Republic.

Plus a few to evaluate that may or (likely) will not make it to the site for various reasons.

  • Xebra web-based image distribution.  But their SF files haven’t been updated in several years.
  • LunchBox, a DICOM viewer, ditto updates.
  • Open DICOM Viewer, is coming along.

Resuming updates

There’s been a long, long gap since I posted significant updates. It all started when I decided I really need to improve the text emails I’ve been sending out to subscribers of version updates. Right now I have them link to their account centre in the website, which then links them to the programs they’re following. It’s not very 21st century. The new emails (not quite done) list each program separately, with a screen cap if appropriate.

This meant changing the emails from text to HTML, which is not entirely straightforward. There are quite a few ways to create an HTML email and include or link to images in various encodings, and I didn’t know any of them. Most software that’s available to help with this caters to the usual situation of sending the same email, or at least template, to a number of people. My emails are different for each recipient, and I create them from scratch, so I had to write software to write the emails, send them, track that they are responded to, and archive a copy on the web site.

This in turn led to another issue: the links to the program pages were horrible, long and insecure CGI URLs. I learned more than I ever wanted to learn about URL rewriting using .htaccess files, but it’s done, and programs now have a sensible URL like So I can include those into the emails, and it also looks much nicer in the browser address bar.

Months passed while I learned about and implemented these major features, and I had to put them aside to prepare for the Turku PET Symposium, a conference held every three years at the University of Turku in Finland. They very kindly invited me to give a talk on free medical imaging software, and I put a lot of time into preparing what I hope was an interesting 30-minute talk. The symposium was a great success and people said nice things about my talks, so I was happy. After the symposium I took five days to travel up to Lapland by sleeper train, just to see it. Lapland is a beautiful place and the people there are very special. Anyway that all finished last week and I am eager to get back to work and implement some of the plans I have for the site. Plus, list all the latest updates and evaluate and add the 30 programs that are waiting to be added.