pyfocusr


Namepyfocusr JSON
Version 0.0.14 PyPI version JSON
download
home_pageNone
SummaryFeature Oriented Correspondence Using Spectral Regularization
upload_time2024-03-25 03:49:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseMIT
keywords python graph laplacian spectral coordinates point cloud registration mesh surface
VCS
bugtrack_url
requirements matplotlib vtk itkwidgets notebook numpy scipy itk cycpd
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyFOCUSR
![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)<br>
![Build Status](https://github.com/gattia/pyfocusr/actions/workflows/build-test.yml/badge.svg?branch=master)<br>
|[Documentation](https://anthonygattiphd.com/pyfocusr/)|

Python implementation of the FOCUSR <br>
FOCUSR = Feature Oriented Correspondence using Spectral Regularization and is described in [1]. 

# Introduction / Background

This package will find correspondence between points on two surfaces using spectral coordinate information to regularize the surface matching. Non-rigid registration between surface points is conducted using Coherent Point Drift (CPD) as described in [2] and impelmented in CyCPD [3]. More recent versions/updated versions of this (spectral alignment/registration) algorithm were developed by the original authors [4], [5] but are not covered here. 

[1] Lombaert H, Grady L, Polimeni JR, Cheriet F. FOCUSR: Feature Oriented Correspondence Using Spectral Regularization--A Method for Precise Surface Matching. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2013;35(9):2143-2160. doi:10.1109/TPAMI.2012.276<br>

[2] Myronenko A, Xubo Song. Point Set Registration: Coherent Point Drift. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2010;32(12):2262-2275. doi:10.1109/TPAMI.2010.46<br>
    An open-source version of the manuscript can be found here: https://tinyurl.com/tph4u7e<br>

[3] https://github.com/gattia/cycpd<br>

[4] Lombaert H, Sporring J, Siddiqi K. Diffeomorphic Spectral Matching of Cortical Surfaces. In: Gee JC, Joshi S, Pohl KM, Wells WM, Zöllei L, eds. Information Processing in Medical Imaging. Vol 7917. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg; 2013:376-389. doi:10.1007/978-3-642-38868-2_32 <br>

[5] Lombaert H, Arcaro M, Ayache N. Brain Transfer: Spectral Analysis of Cortical Surfaces and Functional Maps. In: Ourselin S, Alexander DC, Westin C-F, Cardoso MJ, eds. Information Processing in Medical Imaging. Vol 9123. Lecture Notes in Computer Science. Cham: Springer International Publishing; 2015:474-487. doi:10.1007/978-3-319-19992-4_37


# Installation
It is recommended that installtion is performed in a new environment. 

```bash
conda create --name focusr python=3.7
git clone https://github.com/gattia/pyfocusr
cd pyfocusr

# install dependencies
make requirements

# install pyfocusr
make install
```

# Examples

Jupyter notebook *Example_registering_two_bone_meshes*  in /examples shows extended example with visualizations along the way. Some example steps include:

### Spectral coordinates
Normalized spectral coordinates (eigenvectors) are calculated for each mesh. Below shows examples for the first 3 eigenvectors. 


| *Eigen Vector 1 - Fiedler vector*    | *Eigen Vector 2*           | *Eigen Vector 3*           |
| :---:                               | :---:                      | :---:                      |
|![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_1_fiedler.png)   | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_2.png) | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_3.png) |


Next, the spectral coordinates (eigenvectors) for each node of the mesh (shown above) are used as xyz positions and are aligned. 
#### 
![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/ezgif.com-gif-maker.gif)


The following includes the meshes at various steps of the registration process as well as one mesh calculated as the average of the source & target. 

|*Source Mesh* | *Target Mesh* |
|:---:       |:---:        |
|![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/source.png)   | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/target.png) |
|*Source Transformed to Target*               | *Average Mesh*                |
| ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/mesh_transformed_to_target.png) | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/average_mesh.png) |


MIT License.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyfocusr",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "python, graph, laplacian, spectral coordinates, point cloud, registration, mesh, surface",
    "author": null,
    "author_email": "Anthony Gatti <anthony.a.gatti@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/cd/a5/0157b136bcb53060693128ac8120521e9b8e3faa205b3872b56c11fb32ad/pyfocusr-0.0.14.tar.gz",
    "platform": null,
    "description": "# PyFOCUSR\n![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)<br>\n![Build Status](https://github.com/gattia/pyfocusr/actions/workflows/build-test.yml/badge.svg?branch=master)<br>\n|[Documentation](https://anthonygattiphd.com/pyfocusr/)|\n\nPython implementation of the FOCUSR <br>\nFOCUSR = Feature Oriented Correspondence using Spectral Regularization and is described in [1]. \n\n# Introduction / Background\n\nThis package will find correspondence between points on two surfaces using spectral coordinate information to regularize the surface matching. Non-rigid registration between surface points is conducted using Coherent Point Drift (CPD) as described in [2] and impelmented in CyCPD [3]. More recent versions/updated versions of this (spectral alignment/registration) algorithm were developed by the original authors [4], [5] but are not covered here. \n\n[1] Lombaert H, Grady L, Polimeni JR, Cheriet F. FOCUSR: Feature Oriented Correspondence Using Spectral Regularization--A Method for Precise Surface Matching. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2013;35(9):2143-2160. doi:10.1109/TPAMI.2012.276<br>\n\n[2] Myronenko A, Xubo Song. Point Set Registration: Coherent Point Drift. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2010;32(12):2262-2275. doi:10.1109/TPAMI.2010.46<br>\n    An open-source version of the manuscript can be found here: https://tinyurl.com/tph4u7e<br>\n\n[3] https://github.com/gattia/cycpd<br>\n\n[4] Lombaert H, Sporring J, Siddiqi K. Diffeomorphic Spectral Matching of Cortical Surfaces. In: Gee JC, Joshi S, Pohl KM, Wells WM, Z\u00f6llei L, eds. Information Processing in Medical Imaging. Vol 7917. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg; 2013:376-389. doi:10.1007/978-3-642-38868-2_32 <br>\n\n[5] Lombaert H, Arcaro M, Ayache N. Brain Transfer: Spectral Analysis of Cortical Surfaces and Functional Maps. In: Ourselin S, Alexander DC, Westin C-F, Cardoso MJ, eds. Information Processing in Medical Imaging. Vol 9123. Lecture Notes in Computer Science. Cham: Springer International Publishing; 2015:474-487. doi:10.1007/978-3-319-19992-4_37\n\n\n# Installation\nIt is recommended that installtion is performed in a new environment. \n\n```bash\nconda create --name focusr python=3.7\ngit clone https://github.com/gattia/pyfocusr\ncd pyfocusr\n\n# install dependencies\nmake requirements\n\n# install pyfocusr\nmake install\n```\n\n# Examples\n\nJupyter notebook *Example_registering_two_bone_meshes*  in /examples shows extended example with visualizations along the way. Some example steps include:\n\n### Spectral coordinates\nNormalized spectral coordinates (eigenvectors) are calculated for each mesh. Below shows examples for the first 3 eigenvectors. \n\n\n| *Eigen Vector 1 - Fiedler vector*    | *Eigen Vector 2*           | *Eigen Vector 3*           |\n| :---:                               | :---:                      | :---:                      |\n|![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_1_fiedler.png)   | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_2.png) | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/eig_vec_3.png) |\n\n\nNext, the spectral coordinates (eigenvectors) for each node of the mesh (shown above) are used as xyz positions and are aligned. \n#### \n![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/ezgif.com-gif-maker.gif)\n\n\nThe following includes the meshes at various steps of the registration process as well as one mesh calculated as the average of the source & target. \n\n|*Source Mesh* | *Target Mesh* |\n|:---:       |:---:        |\n|![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/source.png)   | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/target.png) |\n|*Source Transformed to Target*               | *Average Mesh*                |\n| ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/mesh_transformed_to_target.png) | ![](https://raw.githubusercontent.com/gattia/pyfocusr/master/images/average_mesh.png) |\n\n\nMIT License.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Feature Oriented Correspondence Using Spectral Regularization",
    "version": "0.0.14",
    "project_urls": {
        "Documentation": "https://anthonygattiphd.com/pyfocusr/",
        "Homepage": "https://github.com/gattia/pyfocusr/"
    },
    "split_keywords": [
        "python",
        " graph",
        " laplacian",
        " spectral coordinates",
        " point cloud",
        " registration",
        " mesh",
        " surface"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cda50157b136bcb53060693128ac8120521e9b8e3faa205b3872b56c11fb32ad",
                "md5": "ddb5d0443b3580a854ee8eefc623fe8c",
                "sha256": "d1dc7fe38d93a9327d90b65275ccb2da7eb030486671fc1a7580317ef94617cd"
            },
            "downloads": -1,
            "filename": "pyfocusr-0.0.14.tar.gz",
            "has_sig": false,
            "md5_digest": "ddb5d0443b3580a854ee8eefc623fe8c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 13588397,
            "upload_time": "2024-03-25T03:49:14",
            "upload_time_iso_8601": "2024-03-25T03:49:14.806433Z",
            "url": "https://files.pythonhosted.org/packages/cd/a5/0157b136bcb53060693128ac8120521e9b8e3faa205b3872b56c11fb32ad/pyfocusr-0.0.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-25 03:49:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "gattia",
    "github_project": "pyfocusr",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "matplotlib",
            "specs": []
        },
        {
            "name": "vtk",
            "specs": []
        },
        {
            "name": "itkwidgets",
            "specs": []
        },
        {
            "name": "notebook",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "scipy",
            "specs": []
        },
        {
            "name": "itk",
            "specs": []
        },
        {
            "name": "cycpd",
            "specs": []
        }
    ],
    "lcname": "pyfocusr"
}
        
Elapsed time: 0.21221s