Medical Radiology Work

In ~1998 I started to work in medical field (for a startup founded by me and other 2 people) we developed a  WEB based RIS . At the same time we started to experiment Java+VTK for images elaboration (volumetric rendering and segmentation algorithms).

Sources code of implementations can be downloaded here:

#1 Images Elaboration

Most code uses Java+Visualization Toolkit (VTK)

#1.a Volumetric rendering

Basically this kind of rendering is based on a technique named “Ray Casting“. Using this technique,  for each 2D pixel on display screen, the rendering engine shoots a beam in order to cross the whole densitometric volume (volume is composed by voxels == 3D pixels).

Volumetric Rendering (ray casting)
Volumetric Rendering (ray casting)

So a ray crosses the whole volume and strikes, in its trajectory, some voxels. The impact of the ray with a voxel changes the value of  the “densityaccumulated on the ray … and… working on this “density” (accumulated on the ray) and a “transfer function” it is possible to show the 2D pixel with the wanted color. The map between the couple (RGBA, “density”)(*) is the “transfer function” and is useful in order to make transparent some tissue and to show solid other (for example bones).
 (*) (RGBA, “density”)   RGBA is the color (RGB) and Alpha of 2D pixel / density is the end value of accumulated density on the ray

 Rendering (using VTK and Java):

Sources code of this implementation can be downloaded here:

#1.b Navigation and virtual endoscopy

Using the same engine of volumetric rendering  I wrote an extension for virtual endoscopy (still using Java+VTK). Using the “path control panel” (image below) the doctor can trace the camera path and start the navigation. Mouse and keyboard allow the radiologist to adjust the trajectory of navigation. A video can be recorded during the navigation (video below).

EndVirtVirtual Endoscopy
Virtual Endoscopy “path control panel”
Virtual Endoscopy :

Sources code of this implementation can be downloaded here:

#1.c Segmentation

VTK offers several algorithms of segmentation.  Collaborating  with University of Turin (Italy) I wrote a filling 3D algorithm : the radiologist starts selecting (on the 2D slice of the volume) a point of germination. So initially (t0) the volume is composed just by 1-voxel. The algorithm starts to grow this 1-voxel volume in the region with density ~similar to the starting point (point of germination). The algorithm ends when the volume can not further grow.

#1.d Object recognition

My work in this case was focused on intestinal polyps recognition. Starting from a 3D volume the algorithm was designed in order to search and to mark (with a red box)  intestinal polyps. Algorithm consists in two phases :

Step 1 : Fast descent using intersection of histogram :
goal is the fast exclusion of regions that don’t contain polyps
 algorithm looks for an area with histogram compatible with the histogram of a polyp (i.e. the area could contain polyps)
 then algorithm divides this area into 4 subareas and continue recursively into each subarea
 algorithm stops when a subarea isn’t compatible: in this case it jumps to step 2 on border of subarea

Step 2 : Fine search and tag polyps using feature form
goal is accurate search of polyps
 algorithm looks for an area with shape compatible with a polyp.

Polyps recognition algorithm
Polyps recognition algorithm

Histogram (in case of volume obtained by a DICOM data set) is the distribution of density values: how much is frequent a value of density. The Step 1 has the goal to descent into a subarea if the related histogram of the area shows that there is compatibility with the polyp. The check of compatibility is done using intersection between the histogram of area and the histogram of a polyp. If (intersection) is > of a threshold then this mean that in subarea it’s present a density region that is compatible with a polyp. If (intersection) is < threshold then this mean that we have cut out the polyp and algorithm goes in Step 2. The Step 2 is more accurate search using feature forms.

Below the video related to this algorithm in action (search of intestinal polyps on a 2D radiological image). The moving red rectangle is the area which could contain a polyp. The unmoving red rectangle is what is a polyp for the algorithm. Note the presence of several false positives. The gray rectangle on right is the polyp.

Algorithm : intestinal polyps search 

#2 RIS

In 1999 “web application” was a relatively new concept and not so diffuse as today they are… Ajax was not present nor extJS, JQuery…  Radiology Information System (RIS) using web technology (let me say in cloud) was been quite innovative for that age. The RIS was pretty complete with patient cases history and associated radiological images. After 1 years of developing we replaced the old RIS in the hospital with the new one web-based (1ML of examinations DB rows in the first year).

Ris - web based
Ris – web based
The RIS was published RSNA :
 (USA) International Lecture RSNA 86th Scientific Assembly
 "Development of a Web RIS"
 (Chicago) vol. 217 - November 2000 - pag. 705 - rif. 9507NT-I 

#3 Paper less

Those years  doctors were starting to talk about paper-less for radiological diagnostics. In 1998 in Italy, when I joined the hospital, the radiographies on plates were digitised with an high-resolution optical scanner (in order to reproduce an “archivable” digital image). Introducing our server that emulates a “(virtual) Network DICOM Printer” was becoming possible to print and (at same time): archive, create PDF, generate thumbnails… of radiological images (from DICOM source) during the print. It also possible create a CD with a HTML report and related images (DICOM RAW and/or PNG).

Add Comment

Click here to post a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.