Skip to content

Snakes for Segmentation of Strip-like Object (Intima Media Borders) with Different Morphologies and Dynamics

Notifications You must be signed in to change notification settings

hnyz979/Open-Snakes-for-strip-like-object-segmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

Open Snakes for strip like object segmentation

Snakes for segmentation of strip-like object (in this work, we take intima media borders in ultrasound sequences as an example) with different morphologies and dynamics.

Brief Introduction:

This repository is the MATLAB implementation of paper " Robust Segmentation of Intima-Media Borders with Different Morphologies and Dynamics During the Cardiac Cycle. " (published in IEEE Journal of Biomedical and Health Informatics (JBHI) 2018).
This code provides a robust, accurate and efficient method based on snakes (active contour models) of segmenting Intima-Media borders from ultrasound sequences.

Code Usage:

Inputs:

  • an ultrasound sequence (e.g., the .bmp files names as 000001~000100 in the .\data\1 folder)
  • a manual segmentation of the first frame (e.g., the LI.mat and MA.mat files)

Outputs:

  • the segmentation of the whole sequence

Usage:

Simply download the files, make sure the path to the sequence is correct, and run the "main_snake.m" file in folder "sequence_segmentation_using_manual_initial".

Principles, advantages and disadvantages:

  • This code leverages the principle that the grayscale and derivative of an arbitrary point on the intima-media borders do not change much during the cardiac cycle. This fact is used to modify the external image energy matrix, which sequentially provides forces driving the snake to move to appropriate locations.
    Open snake is achieved by simply eliminating the effects of internal energy of the snake and implementing a "derivative constant" boundary conditions to keep the first/last few points of the snake move reasonably.
  • The advantages of this code is:
    The code has been evaluated using large numbers of sequences and shows high robustness to ultrasound sequences with noises, large movements between frames, different IM appearances, and plagues.
  • The disadvantages of this code is:
    The code was implemented 4 years ago, and the snake parameters required a lot of manual experience.

Other Notes:

  • Almost all comments in the codes are written in Chinese now. If I have time in the future, the comments might be translated into English. However, to be frank, the translation may be suspended indefinitely since I get more and more work to do. Fortunately, you can find someone who knows Chinese almost everywhere around the world. :D
  • To make the codes applicable to sequences of more morphologies and dynamics, I have edited the codes after the paper is published. Thus, you may find some details in the codes that are different from the paper. However, the idea is the same, i.e, the external energy matrix of the snake is modified based on the grayscale and derivatives.
  • A MATLAB program for automatically obtaining the segmentation of the first frame will be made on-line soon, which can replace the manual segmented IM borders for the first frame.
  • All questions and debugging are welcome! If you find the code useful, please kindly cite my paper (BibTeX citations are as follows).
    @article{zhao2017robust,
    title={Robust segmentation of intima--media borders with different morphologies and dynamics during the cardiac cycle},
    author={Zhao, Shen and Gao, Zhifan and Zhang, Heye and Xie, Yaoqin and Luo, Jianwen and Ghista, Dhanjoo and Wei, Zhanghong and Bi, Xiaojun and Xiong, Huahua and Xu, Chenchu and others},
    journal={IEEE journal of biomedical and health informatics},
    volume={22},
    number={5},
    pages={1571--1582},
    year={2017},
    publisher={IEEE}
    }

About

Snakes for Segmentation of Strip-like Object (Intima Media Borders) with Different Morphologies and Dynamics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages