Case Study: CT Scan image processing

The Client

The client is an integrated medical systems manufacturer involved in every aspect of the medical equipment and medical information systems business, from R&D and manufacturing to sales and service. Headquarter is in Japan and other branches in American (USA), Europe (Switzerland) and Asia (China, Singapore). The company was established in 1949.

Business Needs

Recently, the technology of Computed Tomography Angiography (CT Angiography) which used dye (contrast) agent and based on the value of CT to diagnose the complication of blood vessels as stricture, infarction or dissociation are becoming increasingly popular. The blood vessel data (which has used contrast agent) will have the CT value as the same level as Bone data. Therefore, we can obtain a lot of value information for blood diagnosis. However, we only see the bone in the area where bone and blood located in each other in some cases causing difficulties in distinguishing and diagnosing. This application aims to distinguish Bone and contrasted blood vessel automatically from the data of CT images which have been scanned as Axial image of Head-Neck, Chest, Abdoment or Limb, so that technicians and doctors could easily observe the image of blood vessels only.
Main Features
– Perform the Bone Removal processing automatically: Remove Bone data and  extract data of Bone or Blood Vessel only
– Modify the result of Bone Removal processing: Add, delete or exchange Bone and Blood Vessel data

The Challenges

FPT Software found the challenge of this project as below:
– The algorithm for identifying Bone and Vessel data was very complex, not only in a region on one slice but also in a volume of multi slices.
– Memory resource: The volume of concurrent processing data was very big and takes a lot of memory resource (about 1.2 GB of RAM in average for 1000 slices) while the requirement is that the program can run for 1500 slices on the system of 2Gb RAM.
– Performance: the automatically Bone Removal process must run in 20s for 1000 slices and 30s for 1500 slices.

The Solutions

FPT Software used its Onsite-Offshore Model, a team was worked onsite to study the requirements and support for offshore team. The application was built following FPT Software’s process and Customer’s process to assure the quality of a healthcare application. We tried some algorithms to find out the best algorithm for data processing (based on region growing algorithm). We also performed review, optimize and refine code to get the expected performance. Memory leakage was a struggle which we have overcome: we used linked list for block of allocated memory to satisfy both of the requirement on performance and memory leakage issue.

The Benefits

Though FPT Software faced several problems such as complexity of the processing and business, short duration, requirement on performance and memory resource… it still managed to deliver considerable benefits, including:
– The client trusted us on the capability to solve complicated technology.
– The FPT Software team created and delivered a high quality product at a reasonable cost. Thanks to the offshore-based sustenance model that the team put in place, the client’s Total Cost of Operations (TCO) was dramatically reduced.

Projects summary:

Scope:  – Create ADD and DDD – Coding and Performing test and capture evident for CTC, important case of UTC – Support UAT
Out of scope: – Error of A3D system which is not relevant to Bone Removal – Main algorithm which has been used in Part-Recognition and Bone Removal
Objective – This application is for healthcare, so our objective is to deliver the application with best quality and to increase productivity (292->360)
   + Leakage: 0.18 WDeft/UCP    + Correction cost: 6.0%    + Productivity: 360 LOC/MM (development only)

Technologies Used: 

Delphi 6.0, SVN, Knowledge of CT and image data processing