Skip to content

Instantly share code, notes, and snippets.

@imagejan
Created July 4, 2023 09:03
Show Gist options
  • Save imagejan/ceb75ec5f74c298dd9ee7836f2e0ae07 to your computer and use it in GitHub Desktop.
Save imagejan/ceb75ec5f74c298dd9ee7836f2e0ae07 to your computer and use it in GitHub Desktop.
#@ 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." )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment