Created
July 4, 2023 09:03
-
-
Save imagejan/ceb75ec5f74c298dd9ee7836f2e0ae07 to your computer and use it in GitHub Desktop.
Revisions
-
imagejan created this gist
Jul 4, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ #@ File (style="extension:bmf") meshFile #@ File (style="save") newMeshFile #@ ImagePlus intensity_image #@ LogService log #@ Double (value=200.0) gamma #@ Double (value=3.0) alpha #@ Double (value=0.0) pressure #@ Double (value=0.0) steric_neighbors #@ Double (value=0.0002) image_weight #@ Integer (value=2) divisions #@ Double (value=5.0) beta #@ Integer (value=100) steps import deformablemesh.SegmentationModel import deformablemesh.externalenergies.ImageEnergyType import deformablemesh.geometry.ConnectionRemesher import deformablemesh.io.MeshReader import deformablemesh.io.MeshWriter reader = new MeshReader(meshFile) tracks = reader.loadMeshes() // Map list of tracks to list of meshes on frame 0 FRAME = 0 meshes = tracks.collect { it.getMesh(FRAME) } log.info( meshes.size() + " meshes loaded." ) // Start mesh deformation model = new SegmentationModel() log.info( "Deforming meshes on image " + intensity_image.getTitle() ) model.setGamma(gamma) model.setAlpha(alpha) model.setPressure(pressure) model.setOriginalPlus(intensity_image) model.setStericNeighborWeight(steric_neighbors) model.setWeight(image_weight) model.setDivisions(divisions) model.setBeta(beta) model.setImageEnergyType(ImageEnergyType.PerpendicularIntensity) model.deformMeshes(meshes, steps) // Remesh minConnectionLength = 0.01 maxConnectionLength = 0.02 new_meshes = meshes.collect { remesher = new ConnectionRemesher() remesher.setMinAndMaxLengths(minConnectionLength, maxConnectionLength) remesher.remesh(it) } // Add new meshes to tracks object [tracks, new_meshes].transpose().each { it[0].addMesh(FRAME, it[1]) } // Write meshes to file log.info( "Writing " + tracks.size() + " meshes..." ) MeshWriter.saveMeshes(newMeshFile, tracks) log.info( "Finished writing deformed and remeshed meshes." )