Introduction About Site Map

XML
RSS 2 Feed RSS 2 Feed
Navigation

Main Page | Blog Index

Archive for the ‘Research’ Category

Heart Image Contouring

Today I implemented circular arrangement of landmark points for the algorithm to identify something approximate/similar to the shape of the heart and then place a given number of points around there. In addition, a boundary is shown by sampling between those points, which gives a contour, with or without arrows on top of it. I will upload the code shortly (needs tidying up).

Creating Animations With GNU Octave and the GNU Image Manipulation Program

The GIMP is an extremely powerful program and animation in the GIMP can be achieved with layers. That’s why I can get so much work done just with Free software and GNU tools like gnuplot. This includes some of the following new examples, which are done by taking screenshots (from the GIMP), stacking them up as layers, and then saving them as a GIF file with the animation option enabled.

The following file, an animated GIF image which comprises 8 frames with 600ms setting them apart (click the image to zoom), shows my new algorithm tracking the heart’s boundaries in a sequence taken from the same slice, which prevents sudden, unregistered change in the intensity values near the point being probed. 16 points are initially fixed in a region, equally spaced although that is not a strict requirement because the program takes any list of points and handles each one in turn. The points are separated by a 5-pixel distance in the x and y axes although that too can vary independently based on parameter input that sets a grid (better initialisation would look for edges of interest). The shown arrows are narrow and crude although an option exists for making them thick (which then hides interesting parts of the image). The shuffle parameters in this case involve a frame size of 9×9 pixels, a shuffle radius of 5 pixels, and a summation of pixel-wise differences.

Fiesta animation (cardiac)

A colour representation of the same images sequence is shown below (click to zoom).

Animation of heart surface

Another newly-implemented method looks at another measure for a window of pixels taken from consecutive frames. It considers a minimum of pixel-wise differences in a given range rather than take the average difference. The results obtained using each of these methods cannot be easily compared without a simplified synthetic set and a proper study would need to involve systematic experiments that look at how varying window size, radius, and calculation method affects overall performance. There is quite a project right there, but it only involves tracking, with or without tagging. Tags can help in identifying good landmark points to start with — points that define an anatomically-meaningful edge to start from and track as the sequence of frames progresses. Eventually, providing a formula for normalising a measure of similarity would be nice. Such a normalisation method — if properly applied — gives a new way of finding landmark points ‘on the move’. Doing so using non-rigid registration (NRR) is not possible for the heart as there is hardly a one-to-one correspondence between points (too much movement). The hope is that by employing a fast tracking algorithm with a good transform which adjusts itself for image intensity, size et cetera, it will be possible to identify edges and perform localised measurements, perhaps even do statistical analysis based on different sets of videos (long-term goal). These ideas are not far fetched and the body of work already done in this area ought to be explored. The novelty is the transform being used to quickly calculate similarity wrt neighbouring points, so existing work look at how to adjust parameters so as to get better results. In this particular problem domain, tracking the heart’s contours reliably and robustly enough is the objective, however it is not simple to do this ‘on he fly’ (speed of video playback for example).

Trying Linux Mint for Running GNU Octave

FEDORA 14 is an adorable distribution, at least on the KDE (4.5) side of it. I only had problems in the repository and ones that were not truly Fedora’s fault. Image-related functions gave me a hard time in Fedora because of a known conflict and version numbers. It was not simple to resolve even after hours of trying. I consider myself to be an expert user (not guru) and unless I start compiling from source code as I did 5 years ago, Octave will be a challenge to use. Over on a Kubuntu machine I had no such issues. As the pictures below show, things worked perfectly well without any effort at all. Say what you will about Ubuntu GNU/Linux, but it does tend to work rather well.

Octave tagging - synthetic

Octave tagging

My goal is to do my entire daytime job under a true GNU/Linux/KDE experience with Gnash, no proprietary codecs, and even Konqueror (KIO/kio and sftp/ssh support make it indispensable) as the only Web browser along with Okular, LyX (not OpenOffice.org), and other great Qt/KDE SC programs. There are some limitations in use, but there are usually ways around those (although never as easy to install as Firefox extensions for example). In addition, advances in the Web itself can prove a tad tricky. The nature of the World Wide Web and the Web browsers which change over time is not predictable, so presentations that worked alright with background pictures in the past no longer appear correctly, unless the code is redone (I still use S5 for presentations. It is an excellent presentation tool I’ve used happily for over half a decade).

The main issue I’ve had with Fedora is to do with Octave, which I hope to replace MATLAB with. MATLAB was the last bit of proprietary software I was still using on GNU/Linux (since I began using GNU/Linux exclusively at work, around 7-8 years ago). The problem is not at all exposure to Windows or Mac OS; I never need those, but proprietary software in general is the problem here because of lock-in (practicality), which makes it not a purely philosophical argument.

After wasting many hours trying to get Octave to work the way I want and need it to work under Fedora 14 I decided to just virtualise another distribution under Fedora. The first thing which occurred to me is that VirtualBox was not available (see below).

No virtualbox

In the mean time I also decided to give Mint a go for the first time (I was curious after doing a special audiocast about it). That was a smooth experience luckily. Debian makes it daunting for one to download, so after a couple of minutes I left their Web site. Here’s Mint’s less-than-perfect download experience, assuming one particular route:

Mint download

Fedora makes it a lot more user-friendly when one downloads an ISO. There are usability issues here as most people cannot tell the difference between the different files.

To run it I needed a hypervisor and here is what Fedora had under the virtualisation category (descriptions would help enw users):

Fedora virtualisation

In summary, it is a bit of a shame that one needs to have those barriers; using Octave is not a case of using basic applications, but I was hopeful that Fedora would make it easy. I still reject MATLAB at all costs and I avoid installing it because Octave is doing almost everything that I need. In a future post I hope to write about Linux Mint.

Grids and Tagging – Octave Code Samples

Objects collection - stethoscope

FOR a little bit of background on tagging and my current work, see my previous posts on the subject [1, 2, 3], prior to me getting data from Professor Axel. The goal is to advance existing methods that include tagging by applying to them an algorithm which I developed for non-rigid registration assessment in the brain. This time the data that I deal with is cardiac, so temporal sets are a far more complicated problem, particularly due to persistent motion. Of interest there’s the paper “Single Heartbeat Cardiac Tagging for the Evaluation of Transient Phenomena” from Daniel A. Herzka, J. Andrew Derbyshire, Peter Kellman, and Elliot R. McVeigh. It can be found in Magnetic Resonance in Medicine (Volume 54, Issue 6, pages 1455–1464, December 2005) and the full paper says in its abstract: “Many cardiac abnormalities are of a transient nature, creating a beat-to-beat variation in myocardial function. This work presents the cardiac imaging technique for the measurement of regional function during transient cardiac phenomena. All information necessary for the reconstruction of a cine loop is acquired within a single heartbeat, avoiding the temporal blurring introduced by segmented imaging due to the assumption of cardiac cycle periodicity…”

I shall assume that motion can be treated like changes that occur over time on different dates or across subjects. The part in the above paper which deals with tags is: “Images reconstructed from such data displayed tag blurring and reduced tag persistence due to motion and interheartbeat variability. Images acquired during the Valsalva maneuver demonstrated apparent beat-to-beat variability, visible both in the images and as changing strain patterns and ventricular volumes.”

Therein lies a real problem because the tags cannot be assured to exist where they are needed the most. Fortunately, the literature contains many examples of work that can reconstruct imaged objects based on spatial information other than the tags themselves. A paper which was cited a lot in the 90s comes from Young and Axel (published in 1992, but date of current version is 6th of August 2002) and it is titled “Non-rigid heart wall motion using MR tagging”. Prior to it, in 1988, E A Zerhouni, D M Parish, W J Rogers, A Yang, and E P Shapiro looked at ways of analysing myocardial motion, potentially in troubled patients. Their paper “Human heart: tagging with MR imaging–a method for noninvasive assessment of myocardial motion” is summarised thusly:

Specified regions of the myocardium can be labeled in magnetic resonance (MR) imaging to serve as markers during contraction. The technique is based on locally perturbing the magnetization of the myocardium with selective radio-frequency (RF) saturation of multiple, thin tag planes during diastole followed by conventional, orthogonal-plane imaging during systole. The technique was implemented on a 0.38-T imager and tested on phantoms and volunteers. In humans, tags could be seen 60-450 msec after RF saturation, thus permitting sampling of the entire contractile phase of the cardiac cycle. Tagged regions appear as hypointense stripes, and their patterns of displacement reflect intervening cardiac motion. In addition to simple translation and rotation, complex motions such as cardiac twist can be demonstrated. The effects of RF pulse angle, relaxation times, and heart rate on depiction of the tagged region are discussed.

The German Heart Institute Berlin published the paper “Magnetic resonance stress tagging in ischemic heart disease” many years later (2005) and they used a 1.5-Tesla scanner for probing patients with coronary artery disease (CAD) under high-dose dobutamine stress. This clinical study helped show how “quantitative myocardial tagging may become a tool that reduces the need for high-dose dobutamine stress.”

As stated in previous posts and short papers which will be uploaded at a later date, my intention is to consider stress/strain analysis applied to the imaged tags. It is the tracking of the tags and making use of them that’s very challenging around boundaries that move throughout the cardiac cycle. Identifying templates like a cross where the tags have an intersection is a computationally expensive process that may also require taking uncertainty into account. If the goal is to track tags in real-time-level speeds (like in some ultrasound packages), then a faster approach is needed, e.g. shuffle distance. This approach would involve comparing different frames (at least one prior frame, with the exception of the first which has no predecessors) and then, in the junctions of the tags, best matches will be found and recorded in a vector of {x,y} coordinates, where these coordinates are refined over time and help quickly determine the motion of objects inside the image. Calculations using mechanical models (based upon shapes that the tags form) are an area which is already well explored, so it is the tracking and recovery of tags which my code deals with first and foremost. prototyping is done in GNU Octave, which helps make a visual proof of concept on arbitrary data, either synthetic or real. The code below does not yet do much, but once it’s finalised the code will be published properly.

Octave functions of relevance (still experimental and the GPLv3-licensed BioSig project may be required, as noted here):

function [new_image] = getdicomimages(directory, threshold)
% GETDICOMIMAGES: Open and test DICOM images of the heart
%
%    Licensing
%
%      GNU GPL version 3
%
%    GENERAL
%
%      Script - experimental, for handling MRI images with biosig
%
%    INPUT/S
%
%      -Omitted
%
%    OUTPUT/S
%
%      -Omitted
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 5th, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

%// addpath ("/home/roy/Main/IT/Programs/get_dicom_heart")
%// addpath ("/home/roy/Main/IT/Programs/biosig4octmat-2.50/biosig/t200_FileAccess")
%// img = opendicom("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");  // deprecated function
%// sopen("~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000019/MR000000");
%// img(i)=imread('sombrero.jpg')
%// plot(img.T0)   //metadata attributes
%// ~/Main/IT/Programs/dicom2/dicom2 ~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000014/*

cd(directory);
files_list=ls('*.tga');
n_images=size(files_list,1);
% BIOSIG open function, wrapper to DICOM handler:
% img = sopen("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");
for i=1:1:n_images,
	% files_list
	%// img_metadata(i) = sopen(files_list(i,:))
	%a=imread(files_list(i,:));
	%imshow(a)
	figure;
	img(:,:,i)=imread(files_list(i,:));
	imshow(img(:,:,i))
end

For actual testing:

function [new_image] = loadtaggedsequence(directory, threshold, draw_grid)
% LOADTAGGEDSQUENCE: Open and test tagged images of the heart
%
%    Licensing
%
%      GNU GPL version 3
%
%    GENERAL
%
%      Script
%
%    INPUT/S
%
%      -Omitted
%
%    OUTPUT/S
%
%      -directory: location of images,
%	 -threshold: colour of tags/markers based on conrtast of image
%      -draw_grid: boolean for display of manual grid/points (drawing or not drawing)
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 10th, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

% common commands

	%// loadtaggedsequence('~/Main/IT/Programs/MR-Cardiac/Zhen-thesis',1,1)
	%// addpath ("/home/roy/Main/IT/Programs/get_dicom_heart")
	%// addpath (genpath("/home/roy/Main/IT/Programs/biosig4octmat-2.50/biosig/"))
	%// path
	%// img = opendicom("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");  // deprecated function
	%// sopen("~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000019/MR000000");
	%// img(i)=imread('sombrero.jpg')
	%// plot(img.T0)   //metadata attributes
	%// ~/Main/IT/Programs/dicom2/dicom2 ~/Main/IT/Programs/MR-Cardiac/Full-CD/DICOM/ST000000/SE000014/*

% experimental options

draw_circles=0;

% grid parameters

x_start = 10;
y_start = 10;
step_x = 30;
step_y = 20;
x_max = 110;
y_max = 80;


frame_size=8;
shuffle_radius=3;
 
% initialisation

first_image=1;
old_boundaries=[[0,0];[0,0]];

% get data

cd(directory);
files_list=ls('*.png');
	% files_list=ls('*.gif');
	% One image: files_list=('seq-tag-1.png');

% Opening [print filenames if necessary]

files_list
n_images=size(files_list,1);

% main loop

	% img = sopen("~/Main/IT/Programs/MR-Cardiac/i148713.MRDC.1");
for i=1:1:n_images,
		%// img_metadata(i) = sopen(files_list(i,:))
		%a=imread(files_list(i,:));
		%imshow(a)
	figure;
	%img(:,:,i)=imread(files_list(i,:));
	
	if (draw_grid==1)
		for j=x_start:step_x:x_max,
	   	  img(j,:,i)=0;
		end
		for j=y_start:step_y:y_max,
	   	  img(:,j,i)=0;
		end
	end
	if (draw_circles==1)
	     % [center,radius]=sphfit([10,11,0],[5,5,0]);	
        end
	boundaries=[[x_start,y_start];[x_start,y_start+step_y]; ...
	[x_start,y_start+step_y*2]; [x_start,y_start]; ...
	[x_start+step_x,y_start];[x_start+step_x*2,y_start]; ...
	[x_start+step_x*2,y_start+step_y];[x_start+step_x*2,y_start+step_y*2]; ...
	[x_start+step_x,y_start+step_y];[x_start+step_x,y_start+step_y*2]];
	%%	boundaries_x=[;    %% deprecated - no more xy separation
        	for l=1:1:size(boundaries,1)
        	%%	for k=1:1:size(boundaries,2)
        		% debugging
        		%	boundaries_y(k,1);
        		%	boundaries_y(2,l);
                     	% img(1,3,1)=1;
                     	% boundaries_y(k,1)
                     	% boundaries_y(2,l)
                     	%i
                     	%k
                     	%l
                     	% size(boundaries_y,1)
                     		if (first_image==0)
                     			%old_boundaries
                     	    		new_dot_x=old_boundaries(l,1)+1;
                     	    		new_dot_y=old_boundaries(l,2)+1;
                     	    			%old_boundaries(l,1)-8
                     	    		search_frame_current=img(((new_dot_x-frame_size):(new_dot_x+frame_size)),((new_dot_y-frame_size):(new_dot_y+frame_size))) 
                     	    		search_frame_previous=img(((old_boundaries(l,1)-frame_size):(old_boundaries(l,1)+frame_size)),((old_boundaries(l,2)-frame_size):(old_boundaries(l,2)+frame_size))) 
                     	    		shuffle_diff=shuffle_transform(search_frame_current, search_frame_previous, shuffle_radius)
                     	    		
                     	    		img(new_dot_x,new_dot_y,i)=threshold/255;
                     	    		old_boundaries(l,1)=new_dot_x;
                     	    		old_boundaries(l,2)=new_dot_y;
                     		else
                     	    		img(boundaries(l,1),boundaries(l,2),i)=(255-threshold)/255;
                     		end
                    %% 	end	
        	end
        	%for l=1:1:size(boundaries_x,1)
        		%for k=1:1:size(boundaries_x,2)
                     	   %img(boundaries_x(k,2),boundaries_x(l,1),i)=250;
                	%end
        	%end
	imshow(img(:,:,i))
		% plot3(img(:,:,i))
        if (first_image==1)
	   old_boundaries=boundaries;
	end
        first_image=0;
end

Peripheral transform:

function [value,shuffle] = shuffle_transform(image,im2,radius)
% SHUFFLE_TRANSFORM: A shuffle transform based on an implementation by Steve Marsland
%
%    Licensing
%
%      -
%
%    GENERAL
%
%      Function
%
%    INPUT/S
%
%      -image: first image
%      -im2: second image
%      -radius: the shuffle radius
%
%    OUTPUT/S
%
%      -Omitted
%
%    PENDING WORK
%
%      -
%
%    KNOWN BUG/S
%
%      -None.
%
%    COMMENT/S
%
%      -
%
%    RELATED FUNCTION/S
%
%      
%
%    ABOUT
%
%      -Created:     November 2010
%      -Last update: November 21st, 2010
%      -Revision:    0.0.1
%      -Author:      Dr. R. S. Schestowitz
% ==============================================================

shuffle = zeros(size(image));

for i=radius+1:size(image,1)-radius
    for j=radius+1:size(image,2)-radius
        template = im2(i-radius:i+radius,j-radius:j+radius);
        diff = abs(template-image(i,j));        
        shuffle(i,j) = min(diff(:));
    end
end
value = mean(shuffle(:))

Gentle Background and Introduction to MRI Tagging

Tags

TAGGING in the context of image acquisition involves getting magnetic signal by selectively sending charges to the tissue, whose atoms (usually just hydrogen is targeted by adjustment of frequencies) equipment can try to test for response in such a way that under normal conditions without noticeable change they would return a rectangular grid overlaid on top of the data. This enables better tracking of tissue motion that’s robust to spatially-similar atoms (whose returned signal is hard to discern visually). This post is a personal and informal quick survey of some resources which people may hopefully find helpful. It is not a detailed or comprehensive analysis.

Background

Tagging has many areas about or around it which ought to be explored. Back in 2003, an extension of the approach — one of complementary innovation in particular — was a goal yet to be accomplished although many extensions already exist. As Professor Leon Axel from the Department of Radiology at NYU School of Medicine (he is the inventor of tagging) put it in his paper “Tagged MRI-Based Studies of Cardiac Function” (2003), improvements in tagged MRI methods include optimisation in terms of speed and 3-D as well. To quote, “[s]ome ways in which we are seeking to improve tagged imaging include improved physiologic motion synchronization, faster imaging methods and 3D image acquisition.”

In case magnetic resonance cannot be properly applied for 3-D tagged images, other modalities can perhaps be considered at an early stage where data to work on is being sought and gradually collected starting with coarse image sequences (more on that later). However, it is tagging which probably yields the most valuable information, adding it to one of the most valuable imaging modalities. As Wikipedia explains it, Speckle Tracking Echocardiography, for example, “analyzes motion within an ultrasonic window by tracking intereference patterns and natural acoustic reflections.[1] These reflections, also described as ‘‘speckles’’, ‘‘markers’’, ‘‘patterns’’, ‘‘features’’, or ‘‘fingerprints’’ are tracked consecutively frame to frame and ultimately resolved into angle-independent two-dimensional (2D) and three-dimensional strain-based sequences (3D) [2][3][4] These sequences provide both quantitative and qualitative information regarding tissue deformation and motion.”

The connection to MRI is mentioned further down where it says: “The utilities of STE are increasingly recognized. Strain results derived from STE have been validated using sonomicrometry and tagged MRI and results correlate significantly with tissue Doppler–derived measurements.[7][8][9]”

Reference 8 is “Amundsen BH, Helle-Valle T, Edvardsen T, Torp H, Crosby J, Lyseggen E,et al. Noninvasive myocardial strain measurement by speckle tracking echocardiography: validation against sonomicrometry and tagged magnetic resonance imaging. J Am Coll Cardiol 2006;47:789-93″

Tagging seems to be explored a lot in NYU, Penn State University, and also Johns Hopkins University (there is group outside the United States which works on this area as well, but further reading will probably reveal many more such groups). N.F. Osman and J.L. Prince from Johns Hopkins University, for example, wrote about “Angle images for measuring heart motion from tagged MRI” (presented in the 1998 International Conference on Image Processing in Chicago, Illinois). The abstract says that their work “introduces a new image processing technique for rapid analysis and visualization of tagged cardiac magnetic resonance (MR) images. The method is based on the use of isolated spectral peaks in SPAMM-tagged magnetic resonance images. The authors call the phase of an image corresponding to just one of these peaks an angle image, and show that except for a phase-wrapping artifact, an angle image is linearly related to a component of the three-dimensional motion. Using one or more angle images, the authors show how to synthesize conventional tag lines, reconstruct displacement fields for small motions, calculate the optical flow between successive temporal images, and calculate two-dimensional strain. The authors demonstrate the performance of this approach on both real and simulated tagged MR images”

Ten years later, 4-D work (including temporal) was done by the group from NYU School of Medicine along with Dimitris N Metaxas and Zhen Qian [2] (from the Center for Computational Biomedicine Imaging and Modeling at Rutgers University). They published “A Segmentation and Tracking System for 4D Cardiac Tagged MR Images” (issue date of 2006, with current version from 2008). Their paper from EMBS ’06 (28th Annual International Conference of the IEEE) “present[s] a robust method for segmenting and tracking cardiac contours and tags in 4D cardiac MRI tagged images via spatio-temporal propagation. Our method is based on two main techniques: the Metamorphs segmentation for robust boundary estimation, and the tunable Gabor filter bank for tagging lines enhancement, removal and myocardium tracking.”

The Institute of Biomedical Engineeering at Bogazici University (Istanbul, Turkey) has also published [3] “Towards rapid screening of tagged MR images of the heart” and the abstract reads: “The final aim of this work is to perform rapid classification of tagged cardiac MR images as normal and abnormal. In the proposed technique, images are first analyzed using harmonic phase analysis and synthetic tags are computed over the myocardium. Cubic curves are fitted to these tags and curve parameters are compared at various regions of the myocardium. In this initial study, the ratios of curve parameters between normal and diseased hearts, such as dilated cardiomyopathy (DCM) and heart with infarcted regions, are evaluated. If the initial segmentation problems are solved, this method could be a very fast and automatic screening tool for identifying diseased locations in tagged MRI.”

Background to My Work

A while ago I began implementing an approach where I explore new methods of anatomical structures extraction based on tagging. After spending a long time trying to get my hands on some data with tagging in it (low-resolution videos is the best I have found on the Web so far [1, 2, 3]) I managed to find MRI cardiac data which the people from New York can share with us. Getting data with tagging has proven tricky unless there is direct access to the right people and I’m grateful to receive some good data as I’m eager to work on extending and complementing the work which is Axel’s breakthrough. Doing so without the required data would be hard. One possibility for working with such data is to locally work on sythesising or emulating a set of tagged image using specific software which does this quite nicely. It may be good if we need to test programs where the ground truth solution is known. Otherwise, approaching the group from New York was a reasonable option to be exploring and with enough data, both real and synthetic data can be used, one for actual work and another for validation of the method.

Why Shuffle Distance/Difference

In a later short paper I’ll explain the approach of encoding the image in terms of bytes (8 bits) or blocks of 64 bits that can be handled by particular CPUs more efficiently and thus have an image stored and processed (even in 3-D) with little burden on the hardware, yielding faster results for real-time tracking of the tags. There is an existing implementation left from my work on brain images where this is done in a vectorised fashion and works quite fast in Octave (bar JIT) or MATLAB. Whether tagging in 3-D is available at all remains to be seen. That is a subject for another day.

References:

[1] N.F. Osman, J.L. Prince, “Angle images for measuring heart motion from tagged MRI,” International Conference on Image Processing, vol. 1, pp.704, 1998.

[2] D. N. Metaxas, L. Axel, Z. Qian, and X. Huang, “A Segmentation and Tracking System for 4D Cardiac Tagged MR Images,” Engineering in Medicine and Biology Society, pp. 1541–1544, 2006.

[3] D. Goksel, M. Ozkan, and C. Ozturk, “Towards rapid screening of tagged MR images of the heart,” Engineering in Medicine and Biology Society, vol. 1, pp. 156–159, 2001.

Free Datasets With Segmentation and Tagging (Cardiac and Brain)

Keywords: Open Access; Free software; Cardiac cine-MRI; Brain; Segmentation; Tagging; Cardiac deformation analysis

Overview

This informal post presents a quick survey of what’s available for one to find when it comes to heart tagging downloads (without having to go through radiologists and all sorts of burdensome forms). It is a problem I’ve been tackling recently and I would like to share my findings to make life easier for other scientists who find themselves in the same situation.

Some Background Information

A WEEK OR SO ago I decided to share information about the availability of datasets for researchers. When faced with the problem of looking for, say, ‘”tagged MR” images heart download dicom’ (and a lot of searching around this phrase) I was surprised to find that almost nobody publicly shared or made discoverable a dataset one can use for research purposes. In order to simplify the task for others who find themselves in a similar situation, several days ago I wrote about my intentions to make a sort of summary [1, 2].

As a bit of background, our original plan was to write and implement special protocols with engineers at the MRI scanner, as part of the research effort by which special types of data are obtained for a novel approach to be tested. This is explained in a paper I’ll put up in the site pretty soon.

At the moment, due to particular constraints, we are working on analysis of sequences of tagged data. This obviously requires not just MR images of the heart but also sequences and these, preferably sequences that must have particular types of tags which a radiologist would use. Data can be acquired/sliced from different angles and obtained from any subject/patient at the hospital*, but for this particular approach that we test (to be covered in a separate post) this is rather irrelevant as we want it to be applicable regardless of factors like angles, subjects, and potentially their atrophies.

Resources

SourceForge hosts quite a few MRI-related software projects which are free/libre and thus of value to MRI-based research (our methods and data should be made freely accessible for independent validation). One of these projects is the cardiac MR toolbox for Matlab, which may also be fully compatible with Octave (free/libre software). “The cardiac MR (CMR) toolbox for Matlab,” explains the official Web page, “provides tools for image registration, perfusion analysis, segmentation, and image reconstruction from sparsely sampled data.” Here is the alternative project homepage. It states:

This is the Cardiac MR toolbox for Matlab project (“cmr-toolbox”)

This project was registered on SourceForge.net on Mar 29, 2010, and is described by the project team as follows:
The cardiac MR (CMR) toolbox for Matlab provides tools for image registration, perfusion analysis, segmentation, and image reconstruction from sparsely sampled data.”

For brain MRI there is the RESCUE brain MRI segmentation project. It is not yet available, but it soon will be. Its author states: “RESCUE will be made available after publication of the PhD thesis of James Withers (Uni of Edinburgh, UK). The first version of the package will initially include super-resolution, thin structure detection, and partial volume estimation components.”

Of course, one can get brain datasets from the rather famous BrainWeb (more here) and some more data resides in my site, including a sample set of images and some DICOM-formatted data of my own brain (acquired at Hope Hospital for a colleague’s experiment back in 2005).

Moving on to the heart, there is a cardiac MRI dataset which is not terribly useful because almost everything is encoded and stored in MATLAB format and may therefore require some loaders that are proprietary (Octave does not cope so well with those).

There is another project called inTag and this Web pageoffers a a look at what’s done there. Another page offers a look at how it’s used. It is “a software to calculate, display and analyze myocardial strains and intra-myocardial mechanics from cardiac MR images with a tagging pattern.”

The dependencies on proprietary software are unfortunate though. As the page puts it: “After a preliminary prototyping step in Matlab ®, InTag is now available as a plugin in OsiriX, the advanced open-source image processing software. It benefits of all its unique capabilities for navigation, visualisation of multimodality and multidimensional images, and data management.”

This requires OsiriX, which is Free/open source software, but only for Macs, which is not terribly useful then. Here is some tagging from this software package called inTag. It’s just a group of some very low-resolution images in DICOM format (small and not so useful at all).

Another dataset which I find odd (not because it’s made available just in very low resolution but because there is something odd in orientation) comes from New Zealand. Images are said to be available for download, but they are all encoded as AVI-formatted slanted videos and also compressed. The only one set with tagging data is not too helpful, either. The page states that “The Auckland MRI Research group has agreed to make freely available 256×256 JPEG images and image orientation information for download. In addition the Auckland MRI Research group has also agreed to make freely available the cines in AVI format”. What’s listed in the page as an overview is as follows:

All 119 T1-weighted jpeg images
akld-mrirg-atlas-jpegs.zip (4.33MB)
12 Long axis trueFisp avi movies
akld-mrirg-cines-truefisp-long.zip (21.76MB)
1-15 Short axis trueFisp avi movies
akld-mrirg-cines-truefisp-short-a.zip (25.32MB)
16-30 Short axis trueFisp avi movies
akld-mrirg-cines-truefisp-short-b.zip (28.61MB)
3 Aorta and 1 RVOT trueFisp avi movies
akld-mrirg-cines-truefisp-aorta-rvot.zip (7.42MB)
11 Long axis and 15 Short axis tagged avi movies
akld-mrirg-cines-tagging.zip (26.46MB)
Aorta(2) / Right(2) and Left(2) Pulmonary arteries(4) phase contrast avi
movies akld-mrirg-cines-phasecontrast.zip (10.34MB)

Those sets are not tagged except akld-mrirg-cines-tagging.zip. There is also no data from the Cincinnati Children’s Hospital Medical Center, which shows up among many search results. Search for data has proven to be quite fruitless, generally speaking.

Eventually I used data which I acquired from someone’s thesis frame by frame, only to be seen as a temporary solution until data comes from a group that keeps it for internal use. The conclusion is that the Web is generally a poor resource for such data, especially if tagging is a requirement. If someone knows of an exception, please comment below.

Some References

On this fruitless pursuit for data the following references were seen as potentially relevant (publication names mostly omitted as it’s easy to search by title).

DN Metaxas, “A Segmentation and Tracking System for 4D Cardiac Tagged MR Images,” 2008.

L Axel, “Tagged MRI-Based Studies of Cardiac Function,” Computerized Medical Imaging and Graphics, Volume 29, Issue 8, December 2005, Pages 607-616, 2003.

D Goksel, “Towards rapid screening of tagged MR images of the heart,” 2002.

NF Osman, “Angle Images for Measuring Heart Motion from Tagged MRI.”

L Axel, “An Integrated Program for 2-D and 3-D Analysis of Heart Wall…,” 2002.

Y. Chenounea, “Segmentation of cardiac cine-MR images and myocardial deformation assessment using level set methods,” 2005.

(Abstract: “In this paper, we present an original method to assess the deformations of the left ventricular myocardium on cardiac cine-MRI. First, a segmentation process, based on a level set method is directly applied on a 2D+t dataset to detect endocardial contours. Second, the successive segmented contours are matched using a procedure of global alignment, followed by a morphing process based on a level set approach. Finally, local measurements of myocardial deformations are derived from the previously determined matched contours. The validation step is realized by comparing our results to the measurements achieved on the same patients by an expert using the semi-automated HARP reference method on tagged MR images.)
____
* Some are too blurry and others paint areas with blood presence black, which help isolate the boundaries of important structures for subsequent analysis.

Animated Example of Cardiac Tagging

Tagging of heart

I intend to publish a long overview of Web resources for tagged data. In the mean time, based on the excellent Web page of Zhen Qian I have managed to piece together something for people to play with. From his thesis [PDF] I’ve extracted a series of 6 frames that I’ve produced the above videos from. I’m hoping to receive high-resolution data to test code with, probably later this month. If the data can be legally shared, I will try to ensure people can get it from this Web site so that getting things done becomes less of an unnecessary ordeal to others.

Retrieval statistics: 21 queries taking a total of 0.417 seconds • Please report low bandwidth using the feedback form
Original styles created by Ian Main (all acknowledgements) • PHP scripts and styles later modified by Roy Schestowitz • Help yourself to a GPL'd copy
|— Proudly powered by W o r d P r e s s — based on a heavily-hacked version 1.2.1 (Mingus) installation —|