Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
software:fiji_mvr [2015/05/19 16:31]
Jon Daniels created
software:fiji_mvr [2019/07/16 20:50]
Jon Daniels added script
Line 1: Line 1:
 ===== Fiji MVR (Multiview Reconstruction) ===== ===== Fiji MVR (Multiview Reconstruction) =====
 +
 +This software is for registering and fusing the datasets from two views.  It was originally developed for OpenSPIM-like setups but works well for diSPIM data as well.
  
 See homepage at [[http://fiji.sc/Multiview-Reconstruction]]. See homepage at [[http://fiji.sc/Multiview-Reconstruction]].
  
-As of April 2015 allows for direct importing of Micro-Manager datasets collected by the ASIdiSPIM plugin.+As of April 2015 the MVR plugin allows for direct importing of Micro-Manager datasets.  Previously the Micro-Manager plugin's export function was used (it is still required for [[MIPAV GenerateFusion]]). 
 + 
 + 
 +==== Fiji MVR scripts ==== 
 + 
 +This script was used during the 2018 EMBO Practical Course for Light sheet microscopy in Dresden to roughly align two views collected on the ct-dSPIM: 
 + 
 +<code groovy> 
 + 
 +#@File (label="Freshly loaded BDV XML File Location") xml_file 
 + 
 +/**  
 +  Simple script to deskew, flip and move a DiSPIM dataset 
 +   
 +  Olivier BURRI, Jon Daniels 
 +  EMBO Lightsheet Course 2018 
 +   
 +  INPUT: XML file which contains two angles named 0 and 90 
 +   
 +  This will apply the transformations to the XML file and reopen the multiview applications 
 +   
 +  Last modification: August 8 2018 
 + */ 
 +import groovy.util.XmlSlurper 
 +import ij.IJ 
 + 
 +def meta = new XmlSlurper().parse( xml_file ) 
 +//def size = meta.SpimData.SequenceDescription.ViewSetups.ViewSetup.sizexml_file 
 +def size = meta.SequenceDescription.ViewSetups.ViewSetup.size[0] as String 
 + 
 +def dimensions = size.tokenize(" "); 
 +def width  = dimensions[0] as double 
 +def height = dimensions[1] as double 
 +def depth  = dimensions[2] as double 
 + 
 +println("Width: "+width) 
 +println("Height: "+height) 
 +println("Depth: "+depth) 
 + 
 +def deskew = "1.0, 0.0, -1.0, 0.0, "+ 
 + "0.0, 1.0, 0.0, 0.0, "+ 
 + "0.0, 0.0, 1.0, 0.0" 
 + 
 +println(deskew) 
 + 
 +def flip  =  "0.0, 0.0, -1.0, 0.0, "+ 
 + "0.0, -1.0, 0.0, 0.0, "+ 
 + "-1.0, 0.0, 0.0, 0.0" 
 + 
 +def trans =  "1.0, 0.0, 0.0, "+(height/2)+", "+ 
 + "0.0, 1.0, 0.0, "+(width)+", "+ 
 + "0.0, 0.0, 1.0, "+depth 
 + 
 +// Return to calibration only, if necessary 
 +IJ.run("Apply Transformations", "select=["+xml_file.getAbsolutePath()+"] "+ 
 + "apply_to_angle=[All angles] apply_to_channel=[All channels] apply_to_illumination=[All illuminations] apply_to_tile=[All tiles] apply_to_timepoint=[All Timepoints] "+ 
 + "transformation=[Identity (no transformation)] "+ 
 + "apply=[Calibration (removes any existing transforms)] "+  
 + "same_transformation_for_all_angles"); 
 + 
 +// Apply deskew to all angles 
 +IJ.run("Apply Transformations", "select=["+xml_file.getAbsolutePath()+"] "+ 
 + "apply_to_angle=[All angles] apply_to_channel=[All channels] apply_to_illumination=[All illuminations] apply_to_tile=[All tiles] apply_to_timepoint=[All Timepoints] "+ 
 + "transformation=Affine apply=[Current view transformations (appends to current transforms)] "+ 
 + "same_transformation_for_all_angles "+ 
 + "timepoint_0_channel_0_illumination_0_all_angles=["+deskew+"]"); 
 + 
 +// Apply Flip to angle 90 
 +IJ.run("Apply Transformations", "select=["+xml_file.getAbsolutePath()+"] "+ 
 + "apply_to_angle=[Single angle (Select from List)] apply_to_channel=[All channels] apply_to_illumination=[All illuminations] apply_to_tile=[All tiles] apply_to_timepoint=[All Timepoints] "+ 
 + "processing_angle=[angle 90] "+ 
 + "transformation=Affine apply=[Current view transformations (appends to current transforms)] "+ 
 + ""
 + "timepoint_0_channel_0_illumination_0_angle_90=["+flip+"]"); 
 +  
 +// Aplly Rough translation to angle 90 
 +IJ.run("Apply Transformations", "select=["+xml_file.getAbsolutePath()+"] "+  
 + "apply_to_angle=[Single angle (Select from List)] apply_to_channel=[All channels] apply_to_illumination=[All illuminations] apply_to_tile=[All tiles] apply_to_timepoint=[All Timepoints] "+ 
 + "processing_angle=[angle 90] "+ 
 + "transformation=Affine apply=[Current view transformations (appends to current transforms)] "+ 
 + ""
 + "timepoint_0_channel_0_illumination_0_angle_90=["+trans+"]"); 
 + 
 +// Open MultiView Application 
 +IJ.run("MultiView Reconstruction Application", "select_xml=["+xml_file.getAbsolutePath()+"]"); 
 + 
 +</code>