*Email questions/comments to ythomas at csail dot mit dot edu*

*** Version 1.2.2 available* **(last update: 09/03/09)

**Description**

In Euclidean space, the orthogonal/bi-orthogonal wavelet transform provides a tradeoff between the local nature of pixel-wise and global Fourier representation. The wavelet transform projects an image onto basis functions with compact support at different spatial locations and scales. Unfortunately, each level of the multi-scale orthogonal/bi-orthogonal wavelet transform suffers from sampling aliasing. The result is that a translation of an image by a single pixel results in dramatic changes in the wavelet coefficients. Overcomplete wavelet transforms overcome these problems by ensuring sufficient sampling at each multiresolution level.

The
overcomplete spherical wavelet transform [1, 2] extends the
overcomplete wavelet transform from Euclidean to spherical images. An
example of a spherical image is the representation of 2D closed
surfaces as spherical images. This is done by spherically parametrizing
2D closed surfaces, so that each point on the sphere has some features
describing
the geometry of the original surface. One popular set of features might
be the curvature of the original surface. Another set is the (x, y, z)
coordinates of the original surface mesh. The application of
overcomplete spherical wavelets to cortical surfaces is found in [3, 4].

We
provide 5 example surfaces distributed with our code (under
example_surfaces folder). They are part of the publicly available oasis dataset. Of course, this work did not arise from a vaccum. Many important previous references can be found in [1, 2, 3, 4].

**Publications**

The theories behind the overcomplete wavelet code we provide is based on the following papers. We note that the theories in these papers are far more general than the overcomplete wavelet codes we provide here. The papers discuss the construction of spherical steerable pyramid, which are overcomplete wavelet with oriented filters unlike the axisymmetric laplacian filters we use here.

[1] __B.T.T. Yeo__, W. Ou, P. Golland. **On the Construction of Invertible Filter Banks on the 2-Sphere**. IEEE Transactions on Image Processing, 17(3):283--300, 2008. [pdf]

[2] __B.T.T. Yeo__, W. Ou, P. Golland. **Invertible Filter Banks on the 2-Sphere**. Proceedings of the International Conference on Image Processing (ICIP), 2161--2164, 2006 [pdf]

The application of the overcomplete spherical wavelets to cortical surfaces is based on the following papers.

[3] __B.T.T. Yeo__, P. Yu, P.E. Grant, B. Fischl, P. Golland. **Shape Analysis with Overcomplete Spherical Wavelets**. Proceedings of the International Conference on Medical Image Computing
and Computer Assisted Intervention (MICCAI), volume 5241 of LNCS, 468--476, 2008 [pdf]

[4] P. Yu, __B.T.T. Yeo__, P.E. Grant, B. Fischl, P. Golland. **Cortical Folding Development Study based on Over-complete Spherical Wavelets**.
Proceedings of the Workshop on Mathematical Methods in Biomedical Image
Analysis (MMBIA), International Conference on Computer Vision, 2007. [pdf]

__Prerequisites__- You need to first install the "Yet Another Wavelet Toolbox" (yawtb) by follow the instructions in the text file: yawtb/INSTALL (the version I use can be downloaded)
- Next, follow the instructions in the text file: yawtb/interfaces/s2kit/INSTALL, which involves
- Installing FFTW
- the version I use is 3.0.1 and can be downloaded
- A list of downloadable versions can be found on this fftw page
- Installing S2kit by following the instructions here (the version I use can be downloaded)
- Make sure that you can run the demos mentioned in yawtb/interfaces/s2kit/INSTALL

__Matlab Code (Latest Release)__**Instructions:**

- Download Spherical Wavelets version 1.2.2 (SWv1.2.2-svn601.zip)
- Unzip SWv1.2.2-svn601.zip (In linux, type "unzip SWv1.2.2-svn601.zip")
- In
matlab, type "add_all_paths" INSIDE the SWv1.2.2-svn601 folder. Note that
you have to redo this step every time you restart matlab, unless you
ask matlab to save the paths permanently. For example, in linux, you
can include add_all_paths in startup.m
- If you have NEVER used mex do the following (if you have, go to step VI):
- type "mex -setup" in matlab
- On prompt by matlab, in linux, choose any of the compilers you like

- If prompted by matlab about whether to overwrite <prefdir>/mexopts.sh, type "y" to agree
- On my machine, matlab now says <some_path>/<some_opts>.sh being copied to <prefdir>/mexopts.sh. Note that <prefdir> is the directory returned by matlab function prefdir.
- In matlab, type "compile_all" INSIDE the SWv1.2.2-svn601 folder
- In matlab, INSIDE the SWv1.2.2-svn601/overcomplete_wavelets/ReleaseSampleCode folder,
- Type "CreateLaplacianAnalysisSynthesisFilters". This will create the wavelet filter bank.
- Type "DecomposeCurvature". This will perform a multiscale decomposition of the curvature of the cortical surfaces provided in this package.
- Type "DecomposeSurface". This will perform a multiscale decomposition of the (x, y, z) coordinates of the cortical surfaces provided in this package.
- There
are a lot of comments in CreateLaplacianAnalysisSynthesisFilters.m,
DecomposeCurvature.m and DecomposeSurface.m. Read them!

**Release Comments for version 1.2.2:**

- Fix minor bug in ReleaseSampleCode directory in version 1.2.1
- Currently only support axisymmetric wavelet filters, and not oriented filters. See [1, 2] for discussion.
- Tested on Linux (Debian 64bits) and Mac OS X.
- Comes with 5 example surfaces, under "example_surfaces" folder inside SDv1.2.2-svn601 folder. They are part of the publicly available oasis dataset.
- Assumes FreeSurfer surface format and data directory structure. Default parameter settings assume existence of FreeSurfer surface: ?h.sphere with accompanying feature vector files: ?h.inflated.H, ?h.sulc and ?h.curv.
- Code from other sources:
- Code in kd_tree code provided by Guy Shechter found on matlab central. Copyrights of those files belong to him.
- For convenience, we also distribute a few FreeSurfer .m files (read_surf, read_curv, read_fscolorlut, fread3). The copyrights of those files belong to FreeSurfer.

__Matlab Code (Previous Release)__- Spherical Wavelets
**version 1.2.1**(SWv1.2.1-svn601.zip). **Instructions**same as version 1.2.2**Release comments**for version 1.2.1

__Acknowledgments__Support for this research is provided in part by the NAMIC (NIH NIBIB NAMIC U54-EB005149), the NAC (NIH CRR NAC P41-RR13218), the mBIRN (NIH NCRR mBIRN U24-RR021382), the NIH NINDS R01-NS051826 grant, the NSF CAREER 0642971 grant, NCRR (P41-RR14075, R01 RR16594-01A1), the NIBIB (R01 EB001550, R01EB006758), the NINDS (R01 NS052585-01) and the MIND Institute. Additional support was provided by The Autism & Dyslexia Project funded by the Ellison Medical Foundation. B.T. Thomas Yeo is funded by the A*STAR, Singapore.