This repository has been archived by the owner. It is now read-only.
Failed to load latest commit information.
Latest commit message
GPU accelerated vessel segmentation using Laplacian eigenmaps NOTE The codebase has not been maintained since June 2014. Use it with your own risk. **Note that it does not work with MAGMA version 1.5.0 or later. Please use MAGMA version 1.4.1**. SYNOPSIS Laplacian eigenmap is an image segmentation algorithm that began to gain traction in recent years. It involves a generalized eigenvalue problem which extracts high-level features from local neighborhood information. Unfortunately, it is computationally costly to compute eigenvalues of a large linear systems. We make use of general-purpose GPUs to accelerate the segmentation process. DOCUMENTATION See https://hyunsu-cho.io/eigenmap_gpu.html. DEPENDENCIES 1. MAT file I/O Library --> See Step 1 of HOW TO COMPILE http://matio.sourceforge.net/ 2. MAGMA (Matrix Algebra on GPU and Multicore Architectures) http://icl.cs.utk.edu/magma/index.html **Make sure to use MAGMA version 1.4.1**. 3. ATLAS (Automatically Tuned Linear Algebra Software) http://math-atlas.sourceforge.net/ HOW TO COMPILE 1. Run ./get_matio.sh to automatically download and install the MAT file I/O Library. This library is required to read and write in MATLAB's binary MAT file format. 2. Open the Makefile and edit the system paths (lines 13-16) as necessary. 3. Run make. HOW TO RUN To make things easier, we rely on MATLAB's image processing facilities when it comes to pre-/post-processing. Hence, do the following steps: 1. Put the input image in Test_Data directory. The image must have jpg extension. 2. Launch MATLAB in graphical mode. 3. Run one of the bootstrap scripts with the name of the image. Each script has a suffix that represents a distinct scenario: - bootstrap_c(...) : compute Laplacian eigenmap using one CPU thread - bootstrap_omp(...) : use many CPU threads - bootstrap_gpu(...) : use one GPU device instead - bootstrap_vanilla(...) : use one CPU thread; really slow because the entire script is written in MATLAB's scripting language To get an intuitive feeling of how the bootstrap scripts look like, take a quick look at test.m. More precisely, bootstrap calls share the following form: bootstrap_x('image_name', [param1], [param2], [# of Lanczos iterations]) For instance, if the input image is example.jpg, the parameters are 10 and 50, and the number of Lanczos iterations is 75, use: bootstrap_x('example', 10, 50, 75); 4. The segmented images pop up as figures and at the same time are saved in results directory. FUNCTION SUMMARY - pairweight: computes the weight matrix. - laplacian: computes the Laplacian matrix from the weight matrix. - eigs: computes a few smallest eigenvalues of the Laplacian matrix; uses general symmetric eigenvalue solver. - lanczos: computes a few smallest eigenvalues of the Laplacian matrix; uses the Lanczos method.