This is a part of my Capstone Research.
Demonstration of image registration algorithm using an example
Sample images are from Deng K, Tian J, Zheng J, et al. Retinal Fundus Image Registration via Vascular Structure Graph Matching.[J]. Journal of Biomedical Imaging, 2010, 2010(34):8170-8176.
reference image
matching image
In this set of image, matching image is combined to reference image to give more detail about eye vessel.
First, use open snake to extract vessel network. Save results to 'snake_tracing_e1.swc' and 'snake_tracing_e2.swc'
In matlab, run
nsicompare('snake_tracing_1.swc','snake_tracing_2.swc');
get the graph of NSI node maps and heat maps
heat map of NSI nodes in network from reference image
from matching image
Take special attention to nodes in left bottom corner. In reference image, there are two nodes with degree of 3, but only one node in matching image. The NSI is used as a reference to choose which one is the node to pair in registration.
According to node pairs, segment branches and calculate the property of each branch
t1_branchlist=splitbranch(t1_nodelist,t1_linkfrom,t1_linkto); [t1_totbranch,t1_volbranch,t1_direction]=calbranch(t1_nodelist,t1_branchlist); paintbranch(t1_nodelist,t1_linkfrom,t1_linkto,t1_branchlist,t1_totbranch,t1_volbranch); t2_branchlist=splitbranch(t2_nodelist,t2_linkfrom,t2_linkto); [t2_totbranch,t2_volbranch,t2_direction]=calbranch(t2_nodelist,t2_branchlist); paintbranch(t2_nodelist,t2_linkfrom,t2_linkto,t2_branchlist,t2_totbranch,t2_volbranch);
branches with(branch id:tortuosity,volume) in network from reference image
from matching image
In the region of each paired nodes, compare the properties of branches and pair the branches in both images. Ignore short branches.
In branch 23 from reference image, there is a choice of splitting it to two parts.
Pair other nodes in branches.
The final results are
Red nodes for matching image, blue nodes for reference image. Other unmatched branches in either image are ignored