{"id":20566182,"url":"https://github.com/aces/mni_surfreg","last_synced_at":"2025-07-20T17:05:06.791Z","repository":{"id":139175263,"uuid":"160250713","full_name":"aces/mni_surfreg","owner":"aces","description":"Surface registration toolkit for CIVET","archived":false,"fork":false,"pushed_at":"2018-12-03T20:39:52.000Z","size":8367,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-06T08:57:41.768Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aces.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-03T20:38:28.000Z","updated_at":"2023-11-24T10:27:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"c265688f-3eb2-4dca-a14f-58faad52bbd5","html_url":"https://github.com/aces/mni_surfreg","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/aces/mni_surfreg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2Fmni_surfreg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2Fmni_surfreg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2Fmni_surfreg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2Fmni_surfreg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aces","download_url":"https://codeload.github.com/aces/mni_surfreg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2Fmni_surfreg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266161905,"owners_count":23885928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T04:40:19.451Z","updated_at":"2025-07-20T17:05:06.771Z","avatar_url":"https://github.com/aces.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\t\tSurface Registration Toolkit\n\t\t----------------------------\n\nThis package contains a library and tools for registering surfaces\ngenerated by the MNI ASP software.\n\n\n\t\tInstallation\n\t\t------------\n\nREQUIRED software\n\n* CGAL - Computational Geometry Algorithms Library (www.cgal.org)\n* Boost - High-quality C++ libraries (www.boost.org)\n* GSL - The GNU Scientific Library (http://sources.redhat.com/gsl/)\n* MINC, bicpl, conglomerate, and mni-perllib from MNI (www.bic.mni.mcgill.ca)\n* perl version 5\n\n\nOPTIONAL software\n\n* doxygen: enables documentation generation\n* dot: enhanced doxygen-generated documentation with graphs\n* cppunit: enables unit tests\n\n\nBuilding the source package comprises the following steps.\n\n0. Ensure the required software is built and installed correctly.\n   (optional software is optional)\n1. Create a symbolic link named \"cgal_makefile\" in the current directory\n   to the correct makefile in directory \"makefile\" of the CGAL sources.\n2. Run configure per directions in file INSTALL.\n3. Run \"make\" and \"make install\".\n\n\n\t\tUsage\n\t\t-----\n\n\tSingle Registration\n\t-------------------\n\nThe two surfaces to be registered must each be an instance of the traditional\nBIC mesh, such as generated by ASP.\n\nThere are two steps to registering a pair of surfaces.  \n\n\nThe first step is to generate the feature data value for each surface.  This\ndata is used to drive the matching.  The first version of this feature is\ngenerated in the following manner\n\n    surface-data-term-1 surface_A.obj surface_A.vv\n\nThis reads the file \"surface_A.obj\" and generates the output\nin a new file \"surface_A.vv\".  \n\nThe final step in computing the surface data term is a distance\ntransform from the \"seed\" vertices along the gyrii.  This computation\nuses an approximation that depends on inserting a number of extra\nvertices along each mesh edge.  The default (5 extra vertices) was\nchosen for use with 80k polygons.  For larger polygons, you may need\nto reduce this number or face running out of memory.  Use the option\n\"-dt_extra\"; e.g. \"-dt_extra 3\" for a 320k polygon.\n\nNB:  This data-term computation uses parameter values that were selected \n     for working on the inner surface, i.e., the white/gray interface.\n     These values may not produce acceptable results on the outer\n     surface.\n\nAlternatively, one of the surface curvature estimates produced by\n\"surface-curvature\" may be used.\n\n\nThe second step is the registration itself.  Assuming that files\n\"surface_A.vv\" and \"surface_B.vv\" were generated in the first\nstep (from files \"surface_A.obj\" and \"surface_B.obj\", respectively),\nthe command\n\n    sphere-register surface_A.vv surface_B.vv map_AB.sm\n\ngenerates a surface map file \"map_AB.sm\".  This map takes points\nFROM surface A TO surface B.\n\n\n\tResampling Data\n\t---------------\n\nSuppose we have obtained \"map_AB.sm\" by registering surface A to B,\nas above.  We may have additional data associated with each surface,\nsay in the files \"thickness_A.vv\" and \"thickness_B.vv\".  Each of\nthese files contains a single value per vertex, listed one value\nper line in the traditional BIC vertex ordering.\n\nIn order to compare the thickness at matching locations, we can resample\ndataset associated with surface B to the mesh or \"space\" of surface A.\n\n  NOTA BENE: Mapping from A --\u003e B is used to resample the data\n             of surface B to the space of surface A.\n\nThis is accomplished by the command\n\n    surface-resample surface_A.obj surface_B.obj surface_B.vv \\\n\tmap_AB.sm thickness_resB.vv\n\nproducing the output file \"thickness_resB.vv\".  This file contains the\nthickness values from surface B at the points corresponding to each\nvertex of surface A.  The data in files \"thickness_A.vv\" and\n\"thickness_resB.vv\" can be compared, vertex-by-vertex.\n\n\n\n\tSpatial Normalization\n\t---------------------\n\nBy spatial normalization, we mean mapping a population of surfaces\ninto a standardized space.  The standardized space is defined by\na template surface.  \n\nLet S0.obj be the template surface, and S1.obj, S2.obj, ..., SN.obj\nbe N surfaces in the population.\n\nThe goal of spatial normalization is to put some associated data of\nsurfaces S1, ..., SN into a common space.  Since the resampling takes\ndata in the direction opposite of the spatial mapping, the registrations\nmust be FROM the template surface to each individual.  That is, we\nperform the registrations\n\n    S0 --\u003e S1   ==\u003e mapping map_01.sm\n    S0 --\u003e S2   ==\u003e mapping map_02.sm\n       ...\n    S0 --\u003e SN   ==\u003e mapping map_0N.sm\n\nThen resample all the data onto the space of S0 using\n\n    surface-resample S0.obj S1.obj S1.vv map_01.sm S1_std.vv \n    surface-resample S0.obj S2.obj S2.vv map_02.sm S2_std.vv \n\t...\n    surface-resample S0.obj SN.obj SN.vv map_0N.sm SN_std.vv \n\nProducing the resampled data in files S1_std.vv, ..., SN_std.vv.\n\n\n\t  Surface Library\n\t  ---------------\n\nThe library is built on an existing, high-quality computational\ngeometry library (CGAL).  The CGAL Polyhedron_3 data type is used\nto represent surfaces in 3D, e.g., the cortical surface.  Thus,\nfamiliarity with CGAL::Polyhedron_3 is required to work with this\nlibrary.  See the manual on www.cgal.org.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faces%2Fmni_surfreg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faces%2Fmni_surfreg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faces%2Fmni_surfreg/lists"}