def __init__(self, listCategories): 
		"""
		listCategories: initial list of categories to fill the fields
		"""
		GenericDialogPlus.__init__(self, "Category names") 
		 
		self.addPanel( Panel(GridLayout(0,1)) )  
		self.panel = self.getComponent(0) 
		for category in listCategories:  
			self.panel.add( TextField(category) ) # Add string input to GUI 
		 
		self.addButton(CategoryDialog.ADD_CATEGORY, self) 
def DialogAnalyze():
    dpi = 300
    defaultAspectRatio = 1.41

    gd = GenericDialogPlus("Cover Maker")
    gd.addMessage("Prepare Image database")
    gd.addDirectoryField("Select base directory containing images", "", 20)

    gd.showDialog()

    if gd.wasCanceled():
        print "User canceled dialog!"
        return
    imageBaseDir = gd.getNextString()

    return imageBaseDir
	def actionPerformed(self, event): 
		 
		source = event.getSource() # test here if it is a button 
		 
		if isinstance(source, Button): # if type is a button get label, and check command, otherwise pass to GenericDialogPlus.actionPeformed 
			 
			sourceLabel = source.getLabel() 
			 
			if sourceLabel == CategoryDialog.ADD_CATEGORY: 
				newCategory = IJ.getString("Enter new category name", "new category") 
				if not newCategory: return # if Cancelled (ie newCat=="") or empty field just dont go further  
				 
				self.panel.add(TextField(newCategory)) # Add new text field with the new category 
				self.pack() # recompute the layout and update the display 
		 
		# Anyway do the mother class usual action handling 
		GenericDialogPlus.actionPerformed(self, event) 
def getPaths():
    """Dialog box for user to select illumination intensity and dark image files.
    Illumination intensity file should be a .nd file pointing to the timelapse tifs, 
    and dark image file should be a single tif"""
    gd = GenericDialogPlus('File selection')
    gd.addFileField('Illumination stability timelapse (.nd file): ', None)
    gd.addFileField('Dark image (TIF): ', None)

    gd.showDialog()

    stackpath = gd.getNextString()
    darkpath = gd.getNextString()
    
    return stackpath, darkpath
def DialogAnalyze():
	dpi = 300
	defaultAspectRatio = 1.41

	gd = GenericDialogPlus("Cover Maker")
	gd.addMessage("Prepare Image database")
	gd.addDirectoryField("Select base directory containing images", "", 20)

	gd.showDialog()

	if gd.wasCanceled():
		print "User canceled dialog!"
		return
	imageBaseDir = gd.getNextString()

	return imageBaseDir
예제 #6
0
    def actionPerformed(self, event):
        '''
		Handle buttons clicks, delegates to custom methods
		OK: save parameters in memory
		Add new category: delegate to addCategoryComponent() (should be overwritten in daughter)
		Add: delegate to addAction()
		NB: NEVER use getNext methods here, since we call them several time 
		'''
        source = event.getSource()  # test here if it is a button

        if isinstance(
                source, Button
        ):  # if type is a button get label, and check command, otherwise pass to GenericDialogPlus.actionPeformed

            sourceLabel = source.getLabel()

            if sourceLabel == CustomDialog.LABEL_OK:
                # Check options and save them in persistence
                checkboxes = self.getCheckboxes()

                doNext = checkboxes[-1].getState()
                Prefs.set("annot.doNext", doNext)

                # Save selected dimension if mode stack
                if self.browseMode == "stack":
                    Prefs.set("annot.dimension", self.getSelectedDimension())

            elif sourceLabel == "Add new category":
                self.addCategoryComponent()

            elif sourceLabel == self.LABEL_ADD:
                self.addAction()

            else:
                pass

        # Anyway do the mother class usual action handling
        GenericDialogPlus.actionPerformed(self, event)
def SaveDialog(imp):
	dpi = 300
	# a4 width in inches
	defaultWidth = 11.69
	defaultHeight = defaultWidth/ratio
	defaultAspectRatio = 1.41

	if imp:
		gd = GenericDialogPlus("Cover Maker")
		gd.addMessage("Saving options")
		gd.addNumericField("resolution (dpi)", dpi, 0)
		gd.addNumericField("width (pixels)", defaultWidth*dpi, 0)
		gd.addNumericField("height (pixels)", defaultHeight*dpi, 0)
		gd.addNumericField("width (inches)", defaultWidth, 2)
		gd.addNumericField("height (inches)", defaultHeight, 2)
		gd.addFileField("Select Originals database", "", 20)

		fields = gd.getNumericFields()

		resField = fields.get(0)
		widthPixels = fields.get(1)
		heightPixels = fields.get(2)
		widthInches = fields.get(3)
		heightInches = fields.get(4)

		# resolution and size listener
		textListener = ResolutionListener(resField, widthPixels, heightPixels, widthInches, heightInches)
		resField.addTextListener(textListener)
		widthInches.addTextListener(textListener)
		heightInches.addTextListener(textListener)

		gd.showDialog()

		if gd.wasCanceled():
			print "User canceled dialog!"
			return

		newres = gd.getNextNumber()
		newwidth = gd.getNextNumber()
		newheight = gd.getNextNumber()
		originalspath = gd.getNextString()

		return int(newwidth), int(newheight), newres, originalspath
	else:
		IJ.showMessage( "You should have at least one image open." )
예제 #8
0
def get_parameters(p):
  gd = GenericDialogPlus("Please enter parameters")

  for k in p['expose_to_gui']['value']:
    if p[k]['type'] == 'boolean':
      gd.addCheckbox(k, p[k]['value'])
    elif p[k]['type'] == 'folder':
      gd.addDirectoryField(k, p[k]['value'], 100)	
    elif p[k]['type'] == 'file':
      gd.addFileField(k, p[k]['value'], 100)	
    elif p[k]['type'] == 'string':
      if p[k]['choices']:
        gd.addChoice(k, p[k]['choices'], p[k]['value'])	
      else:
        gd.addStringField(k, p[k]['value'])	 
    elif p[k]['type'] == 'int':
      if p[k]['choices']:
        gd.addChoice(k, p[k]['choices'], p[k]['value'])	
      else:
        gd.addNumericField(k, p[k]['value'], 0)	 
    elif p[k]['type'] == 'float':
      gd.addNumericField(k, p[k]['value'], 2)
  
  gd.showDialog()
  if gd.wasCanceled():
    return

  for k in p['expose_to_gui']['value']:
    if p[k]['type'] == 'boolean':
      p[k]['value'] = gd.getNextBoolean()
    elif p[k]['type'] == 'folder' or p[k]['type'] == 'file':
      p[k]['value'] = gd.getNextString()
    elif p[k]['type'] == 'string':
      if p[k]['choices']:
        p[k]['value'] = gd.getNextChoice()	
      else:
        p[k]['value'] = gd.getNextString()	 
    elif p[k]['type'] == 'int':
      if p[k]['choices']:
        p[k]['value'] = int(gd.getNextChoice())	
      else:
        p[k]['value'] = int(gd.getNextNumber()) 
    elif p[k]['type'] == 'float':
        p[k]['value'] = gd.getNextNumber()
    
  return p
예제 #9
0
def make_dialog():

	parameters = {}

	gd = GenericDialogPlus("Grid Stitch SDC Data")
	gd.addMessage(  "Warning!\n"\
					"In order to display a fused image upon completion of stitching\n"\
					"please disable Fiji's ImageJ2 options. When enabled an ImageJ\n"\
					"exception will be displayed upon completion. This exception can\n"
					"be safely ignored.")
	gd.addMessage(  "Information\n"\
					"This plugin is a wrapper around the Fiji 'Grid Stitching' plugin.\n"\
					"It allows tiles generated in SlideBook to be directly stitched by\n"\
					"by first writing out the individual tiles, executing the 'Grid Stitching'\n"\
					"plugin and writing the fused image to disk.")
	gd.addMessage("")										
	gd.addNumericField("grid_size_x", 3, 0)
	gd.addNumericField("grid_size_y", 3, 0)
	gd.addCheckbox("Select channel",False)
	gd.addNumericField("", 0, 0)		
	gd.addCheckbox("Are the Z slices separate files?",False)
	gd.addDirectoryField("directory", "", 50)
	
	gd.showDialog()
	if (gd.wasCanceled()): return
		
	parameters['gridX'] = int(math.ceil(gd.getNextNumber()))
	parameters['gridY'] = int(math.ceil(gd.getNextNumber()))
	parameters['select_channel'] = gd.getNextBoolean()
	parameters['channel'] = None
	if parameters['select_channel']:
		parameters['channel'] = int(gd.getNextNumber())
	parameters['separate_z'] = gd.getNextBoolean()
	directory = str(gd.getNextString())	
	if directory is None:
	# User canceled the dialog
		return None
	else:
		directory = os.path.abspath(directory)
		parameters['directory'] = directory + os.path.sep

	return parameters
예제 #10
0
from ij.gui import GenericDialog
from fiji.util.gui import GenericDialogPlus
import os, shutil

gdp = GenericDialogPlus("File Mover")
file_type = gdp.getNextString()
gdp.addStringField("File Extension ", '.tif', 5)
x = gdp.addDirectoryField("Source: ", " ")
gdp.addDirectoryField("Destination: ", " ")
gdp.showDialog()
if gdp.wasOKed():
    file_type = gdp.getNextString().strip()
    source_path = gdp.getNextString()
    dest_path = gdp.getNextString()
    print(file_type)
    print("source " + source_path)
    print("dest " + dest_path)
else:
    exit()

moved = 'Moved Images'
path = os.path.join(dest_path, moved)
try:
    dest = os.mkdir(path)
except OSError as error:
    print("Error: Moved Images is already present")
    exit()


def move():
    for root, dirs, files in os.walk((os.path.normpath(source_path)),
예제 #11
0
def dialog(imp1, labelColorBarImp):
    gd = GenericDialogPlus("ROI labeller")
    categories = 11

    #placeholder slider variables so the class can be initiated
    slider1 = 0
    slider2 = 0
    test = previewLabelerAndListeners(imp1, slider1, slider2, gd)

    for i in range(1, categories):
        gd.addButton("label " + str(i), test)

    gd.addImage(labelColorBarImp)
    #imp7.close() - causes an error as image needed for the dialog
    gd.addButton("Set top", test)
    gd.addButton("Whole stack", test)
    gd.addButton("Set bottom", test)

    gd.addSlider("Top", 1, imp1.getStackSize(), 1)
    gd.addSlider("Bottom", 1, imp1.getStackSize(), imp1.getStackSize())
    slider1 = gd.getSliders().get(0)
    slider2 = gd.getSliders().get(1)
    test.slider1 = slider1
    test.slider2 = slider2
    slider1.addAdjustmentListener(test)
    slider2.addAdjustmentListener(test)
    gd.addChoice("Apply labeling to:", ["(Sub)stack", "Slice"], "(Sub)stack")

    gd.setLayout(GridLayout(0, 2))

    gd.setModal(False)
    buttons = gd.getButtons()

    gd.showDialog()

    while ((not gd.wasCanceled()) and not (gd.wasOKed())):
        Thread.sleep(50)
    return test
예제 #12
0
    IJ.run(cmIp, "Morphological Filters (3D)", "operation=Closing element=Ball x-radius=2 y-radius=2 z-radius=0")
    delIp = cmIp
    delIp.changes = False
    delIp.close()
    cmIp = WindowManager.getImage("CmStain-Closing")
    IJ.run(cmIp,"Fill Holes", "stack")
  cmIp.show()
  IJ.run("Set Measurements...", "stack redirect=None decimal=3")
  IJ.run(cmIp, "Analyze Particles...", "size={}-Infinity show=[Masks] exclude in_situ stack".format(cmMinSize))
  cmMaskIp = cmIp.duplicate()
  IJ.run(cmIp, "Analyze Particles...", "size={}-Infinity show=[Count Masks] exclude in_situ stack".format(cmMinSize))
  cmMaskIp.show(), cmIp.show()
  return cmIp, cmMaskIp

import re
preGd = GenericDialog("Output Folder")
preGd.addDirectoryField("Output folder", "")
preGd.showDialog()
outputFolder = preGd.getNextString()
os.chdir(outputFolder)
folderPath, formatString, groupBy, nucChannel, cmChannel, stitched, analyzeNucStack, brightfield, nucMethod, cmMethod, analyzeCmStack, rowNo, colNo, nucMinSize, cmMinSize =\
"",          "",          "",      "DAPI",      "GFP",    False,    True,            False,      "Otsu",    "Triangle", True,         8,     7,      50,        500
__dict__ = globals()
try:
	with open("savedSettings.json") as f:
	  thing = json.load(f)
	  for k, v in thing.iteritems():
	    __dict__[k] = v
	print(thing)
except Exception as e: print(e)
gd = GenericDialog("Analysis parameters")
 
Minima/maxima in the correlation maps are detected, followed by Non-Maxima Supression when several object are explected in the target image
- matchTemplate Method limited to normalised method to have correlation map in range 0-1 : easier to apply a treshold.  

The search region can be limited to a rectangular ROI, that is drawn on the image/stack before execution of the plugin.

Requirements:
- IJ-OpenCV update site
'''
#import time
#@PrefService prefs
from fiji.util.gui import GenericDialogPlus
# rest of imports below on purpose (otherwise searchRoi lost)

## Create GUI
Win = GenericDialogPlus("Multiple Template Matching")
Win.addImageChoice("Template", prefs.get("Template", "Choice"))
Win.addImageChoice("Image", prefs.get("Image", "Choice"))
Win.addCheckbox("Flip_template_vertically", prefs.getInt("FlipV", False))
Win.addCheckbox("Flip_template_horizontally", prefs.getInt("FlipH", False))
Win.addStringField("Rotate template by ..(comma-separated)",
                   prefs.get("Angles", ""))
Win.addChoice("Matching_method", [
    "Normalised Square Difference", "Normalised cross-correlation",
    "Normalised 0-mean cross-correlation"
], prefs.get("Method", "Normalised 0-mean cross-correlation"))
Win.addNumericField("Number_of_objects expected", prefs.getInt("N_hit", 1), 0)
Win.addMessage("If more than 1 object expected :")
Win.addSlider("Score_Threshold", 0, 1, prefs.getFloat("Score_Threshold", 0.5),
              0.1)
#Win.addNumericField("Min_peak_height relative to neighborhood ([0-1], decrease to get more hits)", prefs.getFloat("Tolerance",0.1), 2)
예제 #14
0
def getOptions():
	gui = GenericDialogPlus("Options for Moving TIFF files")
	gui.addMessage("Select the number of imput files to be used per stitched image")
	gui.addSlider("", 2, 10, 2)
	gui.addFileField("Select csv file", "")
	gui.addMessage("Add key values and corresponding genotype, when finished, leave fields empty")
	gui.addStringField("Key :", prefs.get(None, "key1", "p"))
	gui.addToSameRow()
	gui.addStringField("Genotype :", prefs.get(None, "genotype1", "PROM-1_HA"))
	gui.addStringField("Key :", prefs.get(None, "key2", "p"))
	gui.addToSameRow()
	gui.addStringField("Genotype :", prefs.get(None, "genotype2", "PROM-1_HA"))
	gui.addStringField("Key :", prefs.get(None, "key3", "p"))
	gui.addToSameRow()
	gui.addStringField("Genotype :", prefs.get(None, "genotype3", "PROM-1_HA"))
	gui.addStringField("Key :", prefs.get(None, "key4", "p"))
	gui.addToSameRow()
	gui.addStringField("Genotype :", prefs.get(None, "genotype4", "PROM-1_HA"))
	gui.addStringField("Key :", prefs.get(None, "key5", "p"))
	gui.addToSameRow()
	gui.addStringField("Genotype :", prefs.get(None, "genotype5", "PROM-1_HA"))
	gui.showDialog() 

	if gui.wasOKed():
		tiffs_per_image = int(gui.getNextNumber())
		csv_file = str(gui.getNextString())
		genotypes = {}
		for i in range(5):
			key = str(gui.getNextString())
			value = str(gui.getNextString())
			if key != "":
				genotypes[key] = value
	else:
		return
	if len(genotypes) > 0:
		a = list(genotypes.items())[0]
		prefs.put(None, "key1", a[0])
		prefs.put(None, "genotype1", a[1])
	if len(genotypes) > 1:
		a = list(genotypes.items())[1]
		prefs.put(None, "key2", a[0])
		prefs.put(None, "genotype2", a[1])
	if len(genotypes) > 2:
		a = list(genotypes.items())[2]
		prefs.put(None, "key3", a[0])
		prefs.put(None, "genotype3", a[1])
	if len(genotypes) > 3:
		a = list(genotypes.items())[3]
		prefs.put(None, "key4", a[0])
		prefs.put(None, "genotype4", a[1])
	if len(genotypes) > 4:
		a = list(genotypes.items())[4]
		prefs.put(None, "key5", a[0])
		prefs.put(None, "genotype5", a[1])
	return tiffs_per_image, csv_file, genotypes
def openMainDialogBox():
    #od = OpenDialog("Selectionner un fichier")
    #folder = od.getDirectory()
    #IJ.log(folder);
    #filename = od.getFileName() #intérêt de récupérer le nom du fichier -> récupérer l'extension
    #extension = od.getFileName().split('.').pop() #Array.pop(). Pratique pour faire une fonction getExtension()
    #IJ.log(folder+filename)

    # Create an instance of GenericDialogPlus
    mainDialogBox = GenericDialogPlus("Restack Tiff deconvolved images from Huygens")
    mainDialogBox.addMessage("Ne fonctionnera correctement que si les noms des fichiers images de sortie de Huygens ont ete laisses intacts. Ne pas les modifier.")
    #mainDialogBox.addButton("Ouvrir image", imageSelectionListener())
    mainDialogBox.addMessage("------------------------------------------")
    mainDialogBox.addDirectoryField("Choisir un repertoire-cible", "None")
    mainDialogBox.addMessage("------------------------------------------")
    mainDialogBox.addDirectoryField("Choisir un repertoire pour deposer les piles d'images", "None")
    mainDialogBox.addMessage("------------------------------------------")

    #Select File Type
    choixType = ["1 fichier par canal (NOM_FICHIER_chXX.tif)", "1 fichier par canal + temps (NOM_FICHIER_tXX_chXX.tif)", "1 fichier par canal et par profondeur (NOM_FICHIER_zXX_chXX.tif)", "1 fichier par canal et par profondeur + temps (NOM_FICHIER_tXX_zXX_chXX.tif)"]
    selectionType = choixType[0]
    mainDialogBox.addChoice("Selectionner type de fichiers",choixType,selectionType)
    mainDialogBox.addMessage("------------------------------------------")

    choixDisplayMode = ["Color", "Greyscale", "Composite"]
    selectionDisplayModeDefaut = choixDisplayMode[0]
    mainDialogBox.addChoice("Color Display Mode",choixDisplayMode,selectionDisplayModeDefaut)
    mainDialogBox.addMessage("------------------------------------------")
    #Affichage de la boîte de dialogue
    mainDialogBox.showDialog();

    #Récupération choix
    folder = mainDialogBox.getNextString()
    save_folder = mainDialogBox.getNextString()
    vecteurChoix=mainDialogBox.getChoices()
    selectionTypeFichier = vecteurChoix[0]
    valeurSelectionTypeFichier = str(selectionTypeFichier.getSelectedItem())
    selectionDisplayMode = vecteurChoix[1]
    valeurSelectionDisplayMode = str(selectionDisplayMode.getSelectedItem())

    if mainDialogBox.wasCanceled() == True:
        print("Canceled, Values set to None")
        folder = None
        save_folder = None
        valeurSelectionTypeFichier = None
        valeurSelectionDisplayMode = None

    return folder, save_folder, valeurSelectionTypeFichier, valeurSelectionDisplayMode
def SaveDialog(imp):
    dpi = 300
    # a4 width in inches
    defaultWidth = 11.69
    defaultHeight = defaultWidth / ratio
    defaultAspectRatio = 1.41

    if imp:
        gd = GenericDialogPlus("Cover Maker")
        gd.addMessage("Saving options")
        gd.addNumericField("resolution (dpi)", dpi, 0)
        gd.addNumericField("width (pixels)", defaultWidth * dpi, 0)
        gd.addNumericField("height (pixels)", defaultHeight * dpi, 0)
        gd.addNumericField("width (inches)", defaultWidth, 2)
        gd.addNumericField("height (inches)", defaultHeight, 2)
        gd.addFileField("Select Originals database", "", 20)

        fields = gd.getNumericFields()

        resField = fields.get(0)
        widthPixels = fields.get(1)
        heightPixels = fields.get(2)
        widthInches = fields.get(3)
        heightInches = fields.get(4)

        # resolution and size listener
        textListener = ResolutionListener(resField, widthPixels, heightPixels,
                                          widthInches, heightInches)
        resField.addTextListener(textListener)
        widthInches.addTextListener(textListener)
        heightInches.addTextListener(textListener)

        gd.showDialog()

        if gd.wasCanceled():
            print "User canceled dialog!"
            return

        newres = gd.getNextNumber()
        newwidth = gd.getNextNumber()
        newheight = gd.getNextNumber()
        originalspath = gd.getNextString()

        return int(newwidth), int(newheight), newres, originalspath
    else:
        IJ.showMessage("You should have at least one image open.")
def Dialog(imp):
    dpi = 300
    # a4 width in inches
    defaultWidth = 11.69
    defaultHeight = defaultWidth / ratio
    defaultAspectRatio = 1.41

    if imp:
        gd = GenericDialogPlus("Cover Maker")
        gd.addMessage("Input Options")
        gd.addFileField("Select image database", "", 20)
        gd.addMessage("Cover Maker Options")
        gd.addNumericField("tile width", 12, 0)
        gd.addNumericField("tile height", 9, 0)

        gd.showDialog()

        if gd.wasCanceled():
            print "User canceled dialog!"
            return
        databasepath = gd.getNextString()
        tilewidth = gd.getNextNumber()
        tileheight = gd.getNextNumber()

        return databasepath, imp.getWidth(), imp.getHeight(), int(
            tilewidth), int(tileheight)
    else:
        IJ.showMessage("You should have at least one image open.")
예제 #18
0
def DialogGenerate(imageBaseDir, summary):
    dpi = 300
    defaultAspectRatio = 1.33
    defaultTileWidth = 15
    defaultOriginalWidth = 150
    defaultOriginalHeight = 113
    defaultTileHeight = round(defaultTileWidth / defaultAspectRatio)

    gd = GenericDialogPlus("Cover Maker")
    gd.addMessage("Prepare Image database")
    gd.addDirectoryField("Select base directory containing images",
                         imageBaseDir, 20)
    gd.addMessage(summary)
    gd.addNumericField("Aspect ratio", defaultAspectRatio, 2)
    gd.addNumericField("Original width", defaultOriginalWidth, 0)
    gd.addNumericField("Original height", defaultOriginalHeight, 0)
    gd.addNumericField("minimal tile width", defaultTileWidth, 0)
    gd.addNumericField("maximal tile width", defaultTileWidth, 0)
    gd.addNumericField("minimal tile height", defaultTileHeight, 0)
    gd.addNumericField("maximal tile height", defaultTileHeight, 0)

    fields = gd.getNumericFields()

    aspRatio = fields.get(0)
    minw = fields.get(3)
    maxw = fields.get(4)
    minh = fields.get(5)
    maxh = fields.get(6)

    # resolution and size listener
    textListener = RatioToDim(aspRatio, minw, maxw, minh, maxh)
    aspRatio.addTextListener(textListener)
    minw.addTextListener(textListener)
    maxw.addTextListener(textListener)

    gd.showDialog()

    if gd.wasCanceled():
        print "User canceled dialog!"
        return
    imageBaseDir = gd.getNextString()
    aspectRatio = gd.getNextNumber()
    majorWidth = gd.getNextNumber()
    majorHeight = gd.getNextNumber()
    mintilewidth = gd.getNextNumber()
    maxtilewidth = gd.getNextNumber()

    return int(mintilewidth), int(maxtilewidth), imageBaseDir, float(
        aspectRatio), int(majorWidth), int(majorHeight)
예제 #19
0
def optionsDialog():
    dialog = GenericDialogPlus("Fluorescent Cell Counting")
    dialog.addDirectoryField("Image Directory", "")
    dialog.addFileField("Training Model", "")
    dialog.addStringField("Output Subdirectory", "output", 20)
    dialog.addStringField("Probability Threshold", "0.67", 20)
    dialog.addStringField("Minimum Pixel Size", "2", 20)
    dialog.showDialog()

    # Check if canceled
    if dialog.wasCanceled(): return None

    textVals = [x.text for x in dialog.getStringFields()]

    return textVals
def optionsDialog():
    dialog = GenericDialogPlus("Automated Weka Percentages")
    dialog.addDirectoryField("Image Directory", "")
    dialog.addFileField("Training Model", "")
    dialog.addStringField("Output Subdirectory", "output", 20)
    dialog.addStringField("Probability Threshold", "0.75", 20)
    dialog.showDialog()

    # Check if canceled
    if dialog.wasCanceled(): return None

    textVals = [x.text for x in dialog.getStringFields()]
    #boolVals = [x.getState() for x in dialog.getCheckboxes()]

    return textVals
def get_parameters(p):
  gd = GenericDialogPlus("Please enter parameters")

  for k in p['expose_to_gui']['value']:
    if p[k]['type'] == 'folder':
      gd.addDirectoryField(k, p[k]['value'], 100)	
    if p[k]['type'] == 'file':
      gd.addFileField(k, p[k]['value'], 100)	
    elif p[k]['type'] == 'string':
      if p[k]['choices']:
        gd.addChoice(k, p[k]['choices'], p[k]['value'])	
      else:
        gd.addStringField(k, p[k]['value'], 50)	 
    elif p[k]['type'] == 'int':
      if p[k]['choices']:
        gd.addChoice(k, p[k]['choices'], p[k]['value'])	
      else:
        gd.addNumericField(k, p[k]['value'], 0)	 
    elif p[k]['type'] == 'float':
      gd.addNumericField(k, p[k]['value'], 2)
  
  gd.showDialog()
  if gd.wasCanceled():
    return(0)

  for k in p['expose_to_gui']['value']:
    if p[k]['type'] == 'folder' or p[k]['type'] == 'file':
      p[k]['value'] = gd.getNextString()
    elif p[k]['type'] == 'string':
      if p[k]['choices']:
        p[k]['value'] = gd.getNextChoice()	
      else:
        p[k]['value'] = gd.getNextString()	 
    elif p[k]['type'] == 'int':
      if p[k]['choices']:
        p[k]['value'] = int(gd.getNextChoice())	
      else:
        p[k]['value'] = int(gd.getNextNumber()) 
    elif p[k]['type'] == 'float':
        p[k]['value'] = gd.getNextNumber()
    
  return(p)
예제 #22
0
#This creates a sparse approximation w of a signal X provided a dictionary D.
#||X-Dw||
#Requires mpv2 package: http://www.ux.uis.no/~karlsk/dle/mpv2-class.zip
#Improvements  to come in the next version

from ij import IJ, ImagePlus
from ij.plugin import ImageCalculator
from ij.process import ImageProcessor
from ij.process import FloatProcessor
from fiji.util.gui import GenericDialogPlus
from mpv2 import MatchingPursuit as MP, JamaMatrix as Matrix, SymmetricMatrix as SM

#Input parameters
gd = GenericDialogPlus("Sparse Approximation, Input Parameters")
gd.addDirectoryOrFileField("Select dictionary", "")
gd.addChoice("Greedy algorithm type", ["MP", "OMP", "ORMP"], "OMP")
gd.addNumericField("Number of non-zero elements", 3, 0)  # show 3 decimals
gd.showDialog()

directory_w = gd.getNextString()
t_w = int(gd.getNextNumber())
Rt = gd.getNextChoice()

imp2 = IJ.getImage()
IJ.run("32-bit")
imp2 = IJ.getImage()

#path to lighting directions
IJ.run("Text Image... ", "open=" + str(directory_w))
imp = IJ.getImage()
imp.setTitle("Dictionary Atoms")
예제 #23
0
def optionsDialog():
	dialog = GenericDialogPlus("Automated Size Analysis")
	dialog.addDirectoryField("Image Directory", "")
	dialog.addStringField("Output Subdirectory", "output", 20)
	dialog.addStringField("Minimum Pixel Size", "50000", 20)
	dialog.addStringField("Minimum Roundness", "0.4", 20)
	dialog.addStringField("Gaussian Blur", "6", 20)
	dialog.addStringField("Rotation Steps", "3", 20)
        dialog.addStringField("Thresholds", ",".join(THRESHOLDS), 20)
	dialog.addCheckbox("Rotate Images", True)
	dialog.addCheckbox("Multiple Thresholds", True)
	dialog.showDialog()

	# Check if canceled
	if dialog.wasCanceled(): return None

	textVals = [x.text for x in dialog.getStringFields()]
	boolVals = [x.getState() for x in dialog.getCheckboxes()]

	return textVals + boolVals
예제 #24
0
from ij import IJ, ImagePlus
from ij.plugin import ImageCalculator
from ij.process import ImageProcessor
from ij.process import FloatProcessor
from fiji.util.gui import GenericDialogPlus

#Input parameters
gd = GenericDialogPlus("Input Parameters")
gd.addDirectoryOrFileField("Select composite color image, 32-bit", "")
gd.addNumericField("Pixel size", 4, 0)  # show 3 decimals
gd.addNumericField("Background color", 150, 0)  # show 3 decimals
gd.showDialog()

directory_w = gd.getNextString()
px = int(gd.getNextNumber())
bc = int(gd.getNextNumber())

#path to RGB image
IJ.open(str(directory_w))
imp = IJ.getImage()
IJ.run("8-bit")
IJ.run("32-bit")

n_slicesa = imp.getStack().getSize()
L = []
for i in range(1, n_slicesa + 1):
    imp.setSlice(i)
    n = imp.getProcessor().getPixels()
    n2 = [int(val) for val in n]
    L.append(n2)
imp.changes = False
예제 #25
0
def run():
    gd = GenericDialogPlus("ND2 Conversion Tool")
    gd.addMessage("This plugin uses BioFormats to convert ND2 images to JPEG for further processing in ImageJ.")
    gd.addDirectoryOrFileField("Input: ", "G:\\Subdir testing\\") #srcDir
    gd.addDirectoryOrFileField("Output: ", "G:\\Subdir testing\\") #dstDir
    gd.addStringField("File name contains: ", "") #nameContains
    gd.addCheckbox("Preserve directory structure?", True) #keepDirs
    gd.addCheckbox("Run in headless mode?", True) #anneBoleyn 
    gd.addCheckbox("Overwrite existing output files?", True)
    gd.showDialog()
    if gd.wasCanceled():
        return
    srcDir = gd.getNextString()
    dstDir = gd.getNextString()
    nameContains = gd.getNextString()
    keepDirectories = gd.getNextBoolean()
    anneBoleyn = gd.getNextBoolean()
    overOut = gd.getNextBoolean()
    IJ.run("Input/Output...", "jpeg=100")
    for root, directories, filenames in os.walk(srcDir):
        for filename in filenames:
            # Check for file extension
            if not filename.endswith(".nd2"):
                continue
            # Check for file name pattern
            if nameContains not in filename:
                continue
            process(srcDir, dstDir, nameContains, root, filename, keepDirectories, anneBoleyn, overOut)
예제 #26
0
def selectionDialog(categories, labelColorBarImp):
    gd = GenericDialogPlus("ROI labeller -image picking")
    imps = WM.getImageTitles()
    nonimages = WM.getNonImageTitles()

    gd.addChoice("Image to quantify", imps, imps[0])
    try:
        gd.addChoice("FRETENTATOR results table", nonimages, nonimages[0])
        fail = 0
    except:
        gd.addMessage("No results table open")
        fail = 1
    gd.addImage(labelColorBarImp)
    for i in range(categories):
        gd.addStringField("Label " + str(i) + " name:", "Label " + str(i))

    gd.addChoice("Quantify an open image or add labels to open results table?",
                 ["Image", "Results table"], "Results table")

    #quantImp= IJ.getImage(gd.getNextChoice())

    gd.setModal(False)
    gd.showDialog()
    while ((not gd.wasCanceled()) and not (gd.wasOKed())):
        Thread.sleep(50)

    names = dict()

    for i in range(categories):
        names[i] = str(gd.getNextString())
    imageName = gd.getNextChoice()
    if fail == 0:
        resultsName = gd.getNextChoice()
        imageOrTable = gd.getNextChoice()
    else:
        imageOrTable = "Image"
        resultsName = 0
    return names, imageName, resultsName, imageOrTable
	if os.path.exists(target_dir):
		shutil.rmtree(target_dir)
	
	shutil.move(os.path.join(td,subdir),target_dir)

try:
	download_url='https://github.com/jefferis/fiji-cmtk-gui/tarball/master'
	# check date
	installed_version='NA'
	local_version_info=cmtkgui.gui_local_versioninfo()
	if local_version_info.has_key('date'):
		installed_version=local_version_info['date']
	github_version_info=cmtkgui.gui_github_versioninfo()
	update_available=cmtkgui.gui_update_available(github_version_info)

	gd = GenericDialogPlus('Update CMTK GUI')
	if update_available:
		gd.addMessage('CMTK GUI update available')
		gd.setOKLabel("Download")
	else:
		gd.addMessage('CMTK GUI is up to date')

	gd.addMessage('Currently installed CMTK GUI version: '+installed_version)

	gd.showDialog()
	if gd.wasOKed() and update_available:
		# nb url has a suffix to indicate that user agreed to license
		from ij import IJ
		IJ.showStatus('Downloading CMTK GUI')
		cmtkgui.download_and_untar_url(download_url,cmtkgui.gui_install_dir(),untar_github_archive)
		cmtkgui.gui_write_local_versioninfo(github_version_info)
def DialogGenerate(imageBaseDir, summary):
	dpi = 300
	defaultAspectRatio = 1.33
	defaultTileWidth = 15
	defaultOriginalWidth = 150
	defaultOriginalHeight = 113
	defaultTileHeight = round(defaultTileWidth/defaultAspectRatio)

	gd = GenericDialogPlus("Cover Maker")
	gd.addMessage("Prepare Image database")
	gd.addDirectoryField("Select base directory containing images", imageBaseDir, 20)
	gd.addMessage(summary)
	gd.addNumericField("Aspect ratio", defaultAspectRatio, 2)
	gd.addNumericField("Original width", defaultOriginalWidth, 0)
	gd.addNumericField("Original height", defaultOriginalHeight, 0)
	gd.addNumericField("minimal tile width", defaultTileWidth, 0)
	gd.addNumericField("maximal tile width", defaultTileWidth, 0)
	gd.addNumericField("minimal tile height", defaultTileHeight, 0)
	gd.addNumericField("maximal tile height", defaultTileHeight, 0)

	fields = gd.getNumericFields()

	aspRatio = fields.get(0)
	minw = fields.get(3)
	maxw = fields.get(4)
	minh = fields.get(5)
	maxh = fields.get(6)

	# resolution and size listener
	textListener = RatioToDim(aspRatio, minw, maxw, minh, maxh)
	aspRatio.addTextListener(textListener)
	minw.addTextListener(textListener)
	maxw.addTextListener(textListener)

	gd.showDialog()

	if gd.wasCanceled():
		print "User canceled dialog!"
		return
	imageBaseDir = gd.getNextString()
	aspectRatio = gd.getNextNumber()
	majorWidth = gd.getNextNumber()
	majorHeight = gd.getNextNumber()
	mintilewidth = gd.getNextNumber()
	maxtilewidth = gd.getNextNumber()

	return int(mintilewidth), int(maxtilewidth), imageBaseDir, float(aspectRatio), int(majorWidth), int(majorHeight)
예제 #29
0
		cmtkgui.log('installing from = '+frompath+' to = '+ target_dir)
		cmtkgui.movefile(frompath,target_dir)
	print("Cleaning up!")
	try:
		shutil.rmtree(td)
	except OSError:
		print("Failed to remove temporary directory: "+td+"\n")
		pass

download_urls=cmtkgui.downloads()
# download_urls=['http://www.nitrc.org/frs/download.php/4814/CMTK-2.2.3-CYGWIN-i686.tar.gz', 'http://www.nitrc.org/frs/download.php/4812/CMTK-2.2.3-Linux-x86_64.tar.gz', 'http://www.nitrc.org/frs/download.php/4820/CMTK-2.2.3-MacOSX-10.4-i686.tar.gz', 'http://www.nitrc.org/frs/download.php/4822/CMTK-2.2.3-MacOSX-10.5-x86_64.tar.gz', 'http://www.nitrc.org/frs/download.php/4824/CMTK-2.2.3-MacOSX-10.6-x86_64.tar.gz', 'http://www.nitrc.org/frs/download.php/4604/CMTK-2.2.1-CYGWIN-i686.tar.gz', 'http://www.nitrc.org/frs/download.php/4596/CMTK-2.2.1-Linux-x86_64.tar.gz', 'http://www.nitrc.org/frs/download.php/4608/CMTK-2.2.1-MacOSX-10.4-i686.tar.gz', 'http://www.nitrc.org/frs/download.php/4610/CMTK-2.2.1-MacOSX-10.5-x86_64.tar.gz', 'http://www.nitrc.org/frs/download.php/4611/CMTK-2.2.1-MacOSX-10.6-x86_64.tar.gz']
download_files=map(os.path.basename,download_urls)
download_dict=dict(zip(download_files,download_urls))
print cmtkgui.install_dir()

gd = GenericDialogPlus('Install CMTK')
gd.addMessage('Currently installed CMTK version: '+cmtkgui.installed_version())
recommended_file=cmtkgui.recommended_file(download_files)
if recommended_file is None:
	recommended_file = download_files[0]
gd.addChoice("Download file",download_files,recommended_file)
gd.addMessage('By downloading this file you agree to the following (if you '+
	'do not agree to this, please press "Cancel" below):')
gd.addMessage('Core CMTK code is licensed under the GPLv3.\nBundled software'+
	' may be licensed under different terms - see licences/ directory for details')
gd.showDialog()
if gd.wasOKed():
	download_file=gd.getNextChoice()
	# nb url has a suffix to indicate that user agreed to license
	download_url=download_dict[download_file]+'/?i_agree=1&download_now=1'
	print "Downloading "+download_file+' from url '+download_url+' to '+cmtkgui.install_dir()
예제 #30
0
# define some variables
# EM = electron microscopic image
# rLM = real light microscopic image (ground truth) with chromatin channel
# pLM = predictet light microscopic image
# c1LM, c2LM, c3LM ... = channels of interest (COI)

# define input (java.io.File to string)
EMfilepath = EMfilepath.toString()
rLMfilepath = rLMfilepath.toString()
workdir = workdir.toString()

# check if workdir is empty

if len(os.listdir(workdir)) != 0:
    gd = GenericDialogPlus("Options")
    gd.addMessage("Working directory must be empty!")
    gd.addMessage(
        "Please delete all files in the working directory, or choose another working directory and restart the Deep CLEM Plugin."
    )
    gd.showDialog()

if len(os.listdir(workdir)) != 0:
    sys.exit()

# create a couple of folder in workdir

# for registration
registration_inputdir = os.path.join(workdir, "registration_input")
os.mkdir(registration_inputdir)
registration_outputdir = os.path.join(workdir, "registration_output")
# configure initial scaling step
calib = imp.getCalibration();          
scaleX = calib.pixelWidth / calib.pixelDepth * zoom;
scaleY = calib.pixelHeight / calib.pixelDepth * zoom;
scaleZ = 1.0 * zoom;

# initialize state
input = None;
formerT = None;
resultCylinderMaxProjection = None;
resultMaxProjection = None;
spots = None;
circles = None;
blobs = None;

# build up user interface
gdp = GenericDialogPlus("Spot detection workflow");
gdp.addMessage("Noise and background subtraction (DoG)");
gdp.addCheckbox("Do noise and background subtraction ", formerDoNoiseAndBackgroundRemoval);
gdp.addSlider("Sigma 1 (in 0.1 pixel)", 0, 100, formerSigma1);
gdp.addSlider("Sigma 2 (in 0.1 pixel)", 0, 100, formerSigma2);
gdp.addMessage("Rigid transform");
gdp.addCheckbox("Do rigid transformation", formerDoRigidTransform);
gdp.addSlider("Translation X (in pixel)", -100, 100, formerTranslationX);
gdp.addSlider("Translation Y (in pixel)", -100, 100, formerTranslationY);
gdp.addSlider("Translation Z (in pixel)", -100, 100, formerTranslationZ);
gdp.addSlider("Rotation X (in degrees)", -180, 180, formerRotationX);
gdp.addSlider("Rotation Y (in degrees)", -180, 180, formerRotationY);
gdp.addSlider("Rotation Z (in degrees)", -180, 180, formerRotationZ);
gdp.addMessage("Spot detection")
gdp.addCheckbox("Do spot detection", formerDoSpotDetection);
예제 #32
0
#Take spectral image data and transform into XYZ tristumulus Space

from ij import IJ, ImagePlus
from ij.plugin import ImageCalculator
from ij.process import ImageProcessor
from ij.process import FloatProcessor
from fiji.util.gui import GenericDialogPlus
import ij.plugin.PlugIn
import math

#Input parameters
gd = GenericDialogPlus("Input Parameters")
gd.addNumericField("Wavlength Spacing (nm)", 5, 0)  # show 3 decimals
gd.addNumericField("Starting Wavelength (nm)", 430, 0)  # show 3 decimals
gd.addNumericField("Ending Wavelength (nm)", 750, 0)  # show 3 decimals
gd.showDialog()

spacing = int(gd.getNextNumber())
start_wave = int(gd.getNextNumber())
end_wave = int(gd.getNextNumber())

lim = (end_wave - start_wave) / spacing


#color matching functions
def red():

    a0 = 0.2817
    a1 = -0.3183
    b1 = -0.07613
    a2 = 0.1517
예제 #33
0
def optionsDialog():
    dialog = GenericDialogPlus("Cilia Sizes")
    dialog.addDirectoryField("Image Directory", DEFAULT_DIR)
    dialog.addFileField("Training Model", DEFAULT_TRAIN)
    dialog.addStringField("Output Subdirectory", "output", 20)
    dialog.addStringField("Confocal Channel", "1", 20)
    dialog.addStringField("Probability Threshold", "0.67", 20)
    dialog.addStringField("Minimum Pixel Size", "2", 20)
    dialog.showDialog()

    # Check if canceled
    if dialog.wasCanceled(): return None

    textVals = [x.text for x in dialog.getStringFields()]

    return textVals
예제 #34
0
    def getSettings(self):
        gd = GenericDialogPlus("Settings")
        gd.addNumericField("Distance in pixel", 600, 0)
        gd.addNumericField("Distance in cm", 2.54, 2)
        gd.addNumericField("Min. size (cm^2)", 0.5, 2)
        gd.addDirectoryField("Directory", IJ.getDirectory("home"))
        gd.addStringField("File extension", "*.jpg", 8)
        gd.showDialog()

        if gd.wasCanceled():
            sys.exit()
        else:
            distPixel = gd.getNextNumber()
            distCm = gd.getNextNumber()
            minSize = gd.getNextNumber() * (distPixel / distCm) ** 2
            imageDir = gd.getNextString()
            ext = gd.getNextString()

        return (distPixel, distCm, minSize, imageDir, ext)
예제 #35
0
session = None
channel = None

DIALOG = True

if (DIALOG):
	# ----------------- DIALOG TO FILL GLOBAL PARAMETERS -----

	gui = GenericDialog("Parameters")
	gui.addStringField("NGROK Server address :", "0.tcp.ngrok.io")
	gui.addStringField("PORT :", "")
	gui.showDialog()
	HOST = gui.getNextString()
	PORT = int(gui.getNextString())

	gui = GenericDialogPlus("Parameters")
	gui.addFileField("Select a model file in Keras format (*.h5) : ", "")
	gui.showDialog()
	if gui.wasOKed():
	    LOCAL_MODEL_FILENAME   = gui.getNextString()

	gui = GenericDialogPlus("Parameters")
	gui.addFileField("Select a python script file to upload on the server (*.py)  : ", "")
	gui.showDialog()
	if gui.wasOKed():
	    LOCAL_PREDICTION_SCRIPT   = gui.getNextString()


jsch=JSch()

# SSH Connection to DeepLearning server
def getImgRoiDir():

    gui = GenericDialogPlus(
        "Select directories to process images and ROI sets to apply")

    default_dir = OpenDialog.getDefaultDirectory()
    gui.addDirectoryField("Choose a iamge folder to be processed", default_dir)
    gui.addDirectoryField("Choose a ROI set folder to apply", default_dir)

    gui.showDialog()

    if gui.wasOKed():

        img_dir = gui.getNextString()
        if not img_dir.endswith(os.sep):
            img_dir = img_dir + os.sep

        roi_dir = gui.getNextString()
        if not roi_dir.endswith(os.sep):
            roi_dir = roi_dir + os.sep

        return img_dir, roi_dir
def Dialog(imp):
	dpi = 300
	# a4 width in inches
	defaultWidth = 11.69
	defaultHeight = defaultWidth/ratio
	defaultAspectRatio = 1.41

	if imp:
		gd = GenericDialogPlus("Cover Maker")
		gd.addMessage("Input Options")
		gd.addFileField("Select image database", "", 20)
		gd.addMessage("Cover Maker Options")
		gd.addNumericField("tile width", 12, 0)
		gd.addNumericField("tile height", 9, 0)

		gd.showDialog()

		if gd.wasCanceled():
			print "User canceled dialog!"
			return
		databasepath = gd.getNextString()
		tilewidth = gd.getNextNumber()
		tileheight = gd.getNextNumber()

		print 'path:', databasepath
		return databasepath, imp.getWidth(), imp.getHeight(), int(tilewidth), int(tileheight)
	else:
		IJ.showMessage( "You should have at least one image open." )
예제 #38
0
import sys
import os
import csv
from fiji.util.gui import GenericDialogPlus
from loci.formats import ChannelSeparator
from ij.io import Opener
import json
import time

boldFont = Font("SansSerif", Font.BOLD, 13)
fret_fura = []
fret_fura.append("C1/C2 (FURA)")
fret_fura.append("C2/C1 (FRET)")
dest = IJ.getDirectory("image")
bck_path = 'optional'
gdp = GenericDialogPlus("FRET Assay, Version 3.4")
gdp.addDirectoryField("Output Location:", dest, 40)
gdp.addStringField("Processed Folder:", 'Processed_FRET', 40)
gdp.addStringField("FRET Outfile:", 'FRET_Outfile.csv', 40)
gdp.addStringField("Selection Radius:", '3', 10)
gdp.addStringField("Image interval (sec):", '4', 10)
gdp.addStringField("ZeroDivisionErorVal:", 'NA', 10)
gdp.addRadioButtonGroup("", fret_fura, 1, 2, "C1/C2 (FURA)")
#gdp.addCheckbox("Set Background to value:", False)
gdp.addFileField("background file:", bck_path, 40)
gdp.addToSameRow()
gdp.addStringField("", '0', 5)

gdp.addCheckbox("Apply Gaussian blur? Input sigma value:", False)
gdp.addToSameRow()
gdp.addStringField("", '4', 5)
def previewDialog(imp):
    gd = GenericDialogPlus("Nuclear segmentation and quantification v1.01")

    #create a list of the channels in the provided imagePlus
    types = []
    for i in xrange(1, imp.getNChannels() + 1):
        types.append(str(i))

    #user can pick which channel to base the segmentation on
    gd.addChoice("Channel number to use for segmentation", types, types[0])
    gd.addChoice("Channel to quantify", types, types[0])
    methods = [
        "Otsu", "Default", "Huang", "Intermodes", "IsoData", "IJ_IsoData",
        "Li", "MaxEntropy", "Mean", "MinError", "Minimum", "Moments",
        "Percentile", "RenyiEntropy", "Shanbhag", "Triangle", "Yen"
    ]
    gd.addChoice("Autosegmentation method", methods, methods[0])
    intensities = ["254", "4094", "65534"]
    gd.addChoice("Max Intensity", intensities, intensities[-1])
    gd.addSlider("Small DoG sigma", 0.5, 10, 1, 0.1)
    gd.addSlider("Large DoG sigma", 0.5, 20, 5, 0.1)
    gd.addCheckbox("TopHat background subtraction? (Slower, but better) ",
                   True)
    gd.addSlider("TopHat sigma", 5, 20, 8, 0.1)
    gd.setModal(False)
    gd.addCheckbox("Manually set threshold? ", False)
    gd.addSlider("Manual threshold", 10, 65534, 2000, 1)

    gd.hideCancelButton()
    gd.showDialog()

    cal = imp.getCalibration()
    pixelAspect = (cal.pixelDepth / cal.pixelWidth)

    originalTitle = imp1.getTitle()

    choices = gd.getChoices()
    print choices
    sliders = gd.getSliders()
    checkboxes = gd.getCheckboxes()
    segmentChannel = int(choices.get(0).getSelectedItem())
    quantChannel = int(choices.get(1).getSelectedItem())
    thresholdMethod = choices.get(2).getSelectedItem()
    maxIntensity = int(choices.get(3).getSelectedItem())
    gaussianSigma = sliders.get(0).getValue() / 10.0
    largeDoGSigma = gd.sliders.get(1).getValue() / 10.0
    topHat = gd.checkboxes.get(0).getState()
    topHatSigma = gd.sliders.get(2).getValue() / 10.0

    manualSegment = gd.checkboxes.get(1).getState()
    manualThreshold = gd.sliders.get(3).getValue()

    segmentChannelOld = segmentChannel
    thresholdMethodOld = thresholdMethod
    maxIntensityOld = maxIntensity
    gaussianSigmaOld = gaussianSigma
    largeDoGSigmaOld = largeDoGSigma
    topHatOld = topHat
    topHatSigmaOld = topHatSigma
    manualSegmentOld = manualSegment
    manualThresholdOld = manualThreshold

    clij2.clear()

    segmentImp = extractChannel(imp1, segmentChannel, 0)

    try:
        gfx1 = clij2.push(segmentImp)
        gfx2 = clij2.create(gfx1)
        gfx3 = clij2.create(gfx1)
        gfx4 = clij2.create(gfx1)
        gfx5 = clij2.create(gfx1)
        gfx7 = clij2.create([imp.getWidth(), imp.getHeight()])
    except:
        try:

            Thread.sleep(500)
            IJ.log(
                "Succeeded to sending to graphics card on the second time...")
            gfx1 = clij2.push(segmentImp)
            gfx2 = clij2.create(gfx1)
            gfx3 = clij2.create(gfx1)
            gfx4 = clij2.create(gfx1)
            gfx5 = clij2.create(gfx1)
            gfx7 = clij2.create([imp.getWidth(), imp.getHeight()])
        except:
            errorDialog(
                """Could not send image to graphics card, it may be too large!
		
			Easy solutions: Try	processing as 8-bit, cropping or scaling the image, or
			select a different CLIJ2 GPU.

			This issue is often intermittent, so trying again may also work! 

			See the "Big Images on x graphics cards' notes at:
			https://clij2.github.io/clij2-docs/troubleshooting for more solutions
			
			""" + str(clij2.reportMemory()))

    gfx1, gfx2, gfx3, gfx4, gfx5 = segment(gfx1, gfx2, gfx3, gfx4, gfx5,
                                           gaussianSigma, thresholdMethod,
                                           maxIntensity, largeDoGSigma,
                                           pixelAspect, originalTitle, topHat,
                                           topHatSigma, manualSegment,
                                           manualThreshold)
    clij2.maximumZProjection(gfx5, gfx7)

    labelPrevImp = clij2.pull(gfx7)
    IJ.setMinAndMax(labelPrevImp, 0, clij2.getMaximumOfAllPixels(gfx7))
    labelPrevImp.setTitle("Preview segmentation")
    labelPrevImp.show()

    IJ.run("glasbey_inverted")

    while ((not gd.wasCanceled()) and not (gd.wasOKed())):

        segmentChannel = int(choices.get(0).getSelectedItem())
        quantChannel = int(choices.get(1).getSelectedItem())
        thresholdMethod = choices.get(2).getSelectedItem()
        maxIntensity = int(choices.get(3).getSelectedItem())
        gaussianSigma = sliders.get(0).getValue() / 10.0
        largeDoGSigma = gd.sliders.get(1).getValue() / 10.0
        topHat = gd.checkboxes.get(0).getState()
        topHatSigma = gd.sliders.get(2).getValue() / 10.0

        manualSegment = gd.checkboxes.get(1).getState()
        manualThreshold = gd.sliders.get(3).getValue()

        if (segmentChannelOld != segmentChannel
                or thresholdMethodOld != thresholdMethod
                or maxIntensityOld != maxIntensity
                or gaussianSigmaOld != gaussianSigma
                or largeDoGSigmaOld != largeDoGSigma or topHatOld != topHat
                or topHatSigmaOld != topHatSigma
                or manualSegmentOld != manualSegment
                or manualThresholdOld != manualThreshold):

            if segmentChannelOld != segmentChannel:
                clij2.clear()
                segmentImp = extractChannel(imp1, segmentChannel, 0)
                gfx1 = clij2.push(segmentImp)
                gfx2 = clij2.create(gfx1)
                gfx3 = clij2.create(gfx1)
                gfx4 = clij2.create(gfx1)
                gfx5 = clij2.create(gfx1)
                gfx7 = clij2.create([imp.getWidth(), imp.getHeight()])
            gfx1, gfx2, gfx3, gfx4, gfx5 = segment(
                gfx1, gfx2, gfx3, gfx4, gfx5, gaussianSigma, thresholdMethod,
                maxIntensity, largeDoGSigma, pixelAspect, originalTitle,
                topHat, topHatSigma, manualSegment, manualThreshold)
            clij2.maximumZProjection(gfx5, gfx7)
            labelPrevImp.close()
            labelPrevImp = clij2.pull(gfx7)
            IJ.setMinAndMax(labelPrevImp, 0, clij2.getMaximumOfAllPixels(gfx7))
            labelPrevImp.setTitle("Preview segmentation")
            labelPrevImp.show()

            IJ.run("glasbey_inverted")

        segmentChannelOld = segmentChannel
        thresholdMethodOld = thresholdMethod
        maxIntensityOld = maxIntensity
        gaussianSigmaOld = gaussianSigma
        largeDoGSigmaOld = largeDoGSigma
        topHatOld = topHat
        topHatSigmaOld = topHatSigma

        manualSegmentOld = manualSegment
        manualThresholdOld = manualThreshold

        Thread.sleep(200)
    labelPrevImp.close()

    return segmentChannel, quantChannel, thresholdMethod, maxIntensity, gaussianSigma, largeDoGSigma, topHat, topHatSigma, manualSegment, manualThreshold
		print "Chosen reg params: "+regparamc

def updateOuputFolders():
	outsuffix=outsuffixf.getText()
	if outsuffix:
		reg="Registration."+outsuffix
		ref="reformatted."+outsuffix
	else:
		reg="Registration"
		ref="reformatted"
	outputf.setText("Output Folders: "+reg+", "+ref)
	return

## START!

gd = GenericDialogPlus('CMTK Registration GUI')

# 0.1) Identify path to CMTK binaries
bindir=cmtkgui.install_dir()
print 'bindir is ' + bindir
# 0.1) Identify path to munger.pl script
#munger='/Users/jefferis/bin/munger.pl'
munger=cmtkgui.tool_path('munger')
print 'munger is ' + munger
gd.addHelp("http://flybrain.mrc-lmb.cam.ac.uk/dokuwiki/doku.php?id=warping_manual:registration_gui")

dirFieldWidth=50
gdMargin=130
gd.addDirectoryField("Registration Folder",None,dirFieldWidth)
regrootf = gd.getStringFields().get(0)
# reference brain
예제 #41
0
Then each template is searched in the target image. This yield as set of correlation maps 
 
Minima/maxima in the correlation maps are detected, followed by Non-Maxima Supression when several object are explected in the target image
- matchTemplate Method limited to normalised method to have correlation map in range 0-1 : easier to apply a treshold.  

The search region can be limited to a rectangular ROI, that is drawn on the image/stack before execution of the plugin.

Requirements:
- IJ-OpenCV update site
'''
#import time
#@PrefService prefs
from fiji.util.gui import GenericDialogPlus

## Create GUI
Win = GenericDialogPlus("Multiple Template Matching")
Win.addImageChoice("Template", prefs.get("Template", "Choice"))
Win.addImageChoice("Image", prefs.get("Image", "Choice"))
Win.addCheckbox("Flip_template_vertically", prefs.getInt("FlipV", False))
Win.addCheckbox("Flip_template_horizontally", prefs.getInt("FlipH", False))
Win.addStringField("Rotate template by ..(comma-separated)",
                   prefs.get("Angles", ""))
Win.addChoice("Matching_method", [
    "Normalised Square Difference", "Normalised cross-correlation",
    "Normalised 0-mean cross-correlation"
], prefs.get("Method", "Normalised 0-mean cross-correlation"))
Win.addNumericField("Number_of_templates expected", prefs.getInt("N_hit", 1),
                    0)
Win.addMessage("If more than 1 template expected :")
Win.addNumericField("Score_Threshold [0-1]",
                    prefs.getFloat("Score_Threshold", 0.5), 2)
예제 #42
0
## Import modules
#@PrefService prefs
#@FormatService fs # to check that the file in the folder are indeed images
from fiji.util.gui import GenericDialogPlus
from ij import IJ
from ij.gui import Roi
from os import listdir
from os.path import join, isfile, isdir
#import time

## Home-Made module
from Template_Matching.MatchTemplate_Module import getHit_Template, CornerToCenter
from Template_Matching.NonMaximaSupression_Py2 import NMS

## Create GUI
Win = GenericDialogPlus("Multiple Template Matching")
Win.addDirectoryOrFileField("Template file or templates folder",
                            prefs.get("TemplatePath", "template(s)"))
Win.addDirectoryOrFileField("Image file or images folder",
                            prefs.get("ImagePath", "image(s)"))
Win.addFileField("Rectangular_search_ROI (optional)",
                 prefs.get("RoiPath", "searchRoi"))

# Template pre-processing
Win.addCheckbox("Flip_template_vertically", prefs.getInt("FlipV", False))
Win.addCheckbox("Flip_template_horizontally", prefs.getInt("FlipH", False))
Win.addStringField("Rotate template by ..(comma-separated)",
                   prefs.get("Angles", ""))

# Template matchign parameters
Win.addChoice("Matching_method", [