This code provides a robust, accurate and efficient method based on snakes (active contour models) of segmenting Intima-Media borders from ultrasound sequences.
- 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)
- the segmentation of the whole sequence
- 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.
- 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}
}