Project

General

Profile

Files » MRI_Adipocyte_Tools.txt

tools to analyze fat cells on images from histological sections - Volker Baecker, 07/05/2011 06:58 PM

 
var helpURL = "http://dev.mri.cnrs.fr/wiki/imagej-macros/Adipocytes_Tool"

var preMinSize = 80;
var preMaxSize = 20000;
var preThresholdMethod = "Percentile";
var preNumberOfDilates = 10;

var simpleMinSize = 80;
var simpleMaxSize = 20000;
var simpleThresholdMethod = "Percentile";
var simpleUseBinaryWatershed = true;
var simpleMaxSize = 20000;
var simpleNumberOfDilates = 10;

var waterMinSize = 100;
var waterMaxSize = 20000;
var waterSigma = 4;
var waterThresholdMethod = "Percentile";
var waterNumberOfDilates = 10;

var oldForeground;
var oldBackground;

macro "Unused Tool - C037" { }

macro "Adipocytes Tools Help Action Tool - C98aD00D01D02D03D04D05D06D07D08D09D0aD4fDd0De0Df8Df9CfffD1dD29D2eD34D49D51D56D6cD85D8bD9aDa1Dc6DdaDe2CddeD14D15D16D17D18D1cD2aD2dD4aD5dD5eD62D65D66D67D68D72D75D76D77D82D83D84D8aD92D93D94D98D99Da2Da3Da7Da8Da9Db1Db7Db8Db9Dc7Dc8Dc9CfffD0bD0cD0dD0eD0fD10D1eD1fD20D24D25D26D27D28D2fD30D35D36D37D38D39D3fD40D45D46D47D48D50D57D58D5fD60D61D6dD6eD6fD70D71D7cD7dD7eD7fD80D81D8cD8dD8eD8fD90D91D95D96D9bD9cD9dD9eD9fDa0Da5Da6DaaDabDacDadDaeDafDb0Db5Db6DbaDbbDbcDbdDbeDbfDc0DcaDcbDccDcdDceDcfDdbDdcDddDdeDdfDebDecDedDeeDefDf0Df1Df2Df3Df4Df5Df6Df7DfaDfbDfcDfdDfeDffCccdD13D19D21D22D31D33D3eD42D43D4eD52D5aD5cD63D6bD73D78D7aD87Db3Dc1Dc4Dd1Dd2Dd3Dd5Dd6Dd9De4De5De6CeeeD23D3aD41D44D55D59D7bD86D97Da4Db4Dc5De1De3DeaCcbcD1aD1bD2bD2cD32D3bD4bD4dD53D54D5bD64D69D6aD74D79D88D89Db2Dc2Dc3Dd4Dd7Dd8De7De9CaabD11D12D3cD3dD4cDe8"{
run('URL...', 'url='+helpURL);
}


macro "Preprocessing Clear Background Action Tool - C000T4b12p" {
setBatchMode(true);
roiManager("reset");
storeColors();
setWhiteOnBlack();
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
clearBackground(preMinSize, preMaxSize, preThresholdMethod, preNumberOfDilates, false);
resetColors();
setBatchMode("exit and display");
selectWindow("Results");
run("Close");
}

macro "Simple Adipocytes Segmentation Action Tool- C000T4b12s" {
run("ROI Manager...");
roiManager("Show All with labels");
setBatchMode(true);
roiManager("reset");
storeColors();
setWhiteOnBlack();
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
if (simpleUseBinaryWatershed) clearBackground(simpleMinSize, simpleMaxSize, simpleThresholdMethod, simpleNumberOfDilates, true);

run("Find Edges");
run("8-bit");
run("Smooth");
run("Invert");
setAutoThreshold(simpleThresholdMethod+ " dark");
run("Convert to Mask");
if (simpleUseBinaryWatershed) run("Watershed");
run("Clear Results");
run("Analyze Particles...", "size="+simpleMinSize+"-"+simpleMaxSize+" circularity=0.00-1.00 show=Nothing add exclude");
run("Revert");
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
resetColors();
setBatchMode("exit and display");
selectWindow("Results");
run("Close");
roiManager("Show All with labels");
}

macro "Watershed Adipocytes Segmentation Action Tool- C000T4b12w" {
run("ROI Manager...");
roiManager("Show All with labels");
setBatchMode(true);
roiManager("reset");
storeColors();
setWhiteOnBlack();
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
clearBackground(waterMinSize, waterMaxSize, waterThresholdMethod, waterNumberOfDilates, false);

title = getTitle();
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
run("Find Edges");
run("8-bit");
run("Gaussian Blur...", "sigma=" + waterSigma);
run("Watershed Algorithm");
run("Invert");
imageCalculator("AND create", title,"Watershed");
titleResult = getTitle();
selectImage("Watershed");
close();
selectImage(titleResult);
setThreshold(1, 255);
run("Convert to Mask");
run("Clear Results");
run("Analyze Particles...", "size="+waterMinSize+"-"+waterMaxSize+" circularity=0.00-1.00 show=Nothing add exclude");
selectImage(titleResult);
close();
run("Revert");
run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
resetColors();
setBatchMode("exit and display");
selectWindow("Results");
run("Close");
roiManager("Show All with labels");
}

macro "Preprocessing Clear Background Action Tool Options" {
Dialog.create("Preprocessing Adipocytes Segmentation Options");
Dialog.addNumber("min. size", preMinSize);
Dialog.addNumber("max. size", preMaxSize);
Dialog.addNumber("nr. of dilates", preNumberOfDilates);
Dialog.addChoice("thresholding method", newArray("Default", "Huang", "Intermodes", "IsoData", "IJ_IsoData", "Li", "MaxEntropy", "Mean", "MinError", "Minimum", "Moments", "Otsu", "Percentile", "RenyiEntropy", "Shanbhag", "Triangle", "Yen"), preThresholdMethod);
Dialog.show();
preMinSize = Dialog.getNumber();
preMaxSize = Dialog.getNumber();
preNumberOfDilates = Dialog.getNumber();
preThresholdMethod = Dialog.getChoice();
}

macro "Simple Adipocytes Segmentation Action Tool Options" {
Dialog.create("Simple Adipocytes Segmentation Options");
Dialog.addNumber("min. size", simpleMinSize);
Dialog.addNumber("max. size", simpleMaxSize);
Dialog.addNumber("nr. of dilates", simpleNumberOfDilates);
Dialog.addChoice("thresholding method", newArray("Default", "Huang", "Intermodes", "IsoData", "IJ_IsoData", "Li", "MaxEntropy", "Mean", "MinError", "Minimum", "Moments", "Otsu", "Percentile", "RenyiEntropy", "Shanbhag", "Triangle", "Yen"), simpleThresholdMethod);
Dialog.addCheckbox("use binary watershed", simpleUseBinaryWatershed)
Dialog.show();
simpleMinSize = Dialog.getNumber();
simpleMaxSize = Dialog.getNumber();
simpleNumberOfDilates = Dialog.getNumber();
simpleThresholdMethod = Dialog.getChoice();
simpleUseBinaryWatershed = Dialog.getCheckbox();
}

macro "Watershed Adipocytes Segmentation Action Tool Options" {
Dialog.create("Watershed Adipocytes Segmentation Options");
Dialog.addNumber("min. size", waterMinSize);
Dialog.addNumber("max. size", waterMaxSize);
Dialog.addNumber("sigma", waterSigma);
Dialog.addNumber("nr. of dilates", waterNumberOfDilates);
Dialog.addChoice("thresholding method", newArray("Default", "Huang", "Intermodes", "IsoData", "IJ_IsoData", "Li", "MaxEntropy", "Mean", "MinError", "Minimum", "Moments", "Otsu", "Percentile", "RenyiEntropy", "Shanbhag", "Triangle", "Yen"), waterThresholdMethod);
Dialog.show();
waterMinSize = Dialog.getNumber();
waterMaxSize = Dialog.getNumber();
waterSigma = Dialog.getNumber();
waterNumberOfDilates = Dialog.getNumber();
waterUseBinaryWatershed = Dialog.getChoice();
}

function clearBackground(minSize, maxSize, thresholdMethod, numberOfDilates, keepSelection) {
title = getTitle();
run("Find Edges");
run("8-bit");
run("Smooth");
run("Invert");
setAutoThreshold(thresholdMethod + " dark");
run("Convert to Mask");
run("Analyze Particles...", "size="+minSize+"-"+maxSize+" circularity=0.00-1.00 show=Nothing add exclude");
roiManager("Deselect");
showStatus("Combining rois");
roiManager("Combine");
run("Clear Outside");
run("Select None");
for (i=0; i<numberOfDilates; i++) run("Dilate");
run("Create Selection");
run("Revert");
run("Clear Outside");
roiManager("reset");
if (!keepSelection) run("Select None");
}

function storeColors() {
oldForeground = getValue("color.foreground");
oldBackground = getValue("color.background");
}

function setWhiteOnBlack() {
setForegroundColor(255,255,255);
setBackgroundColor(0,0,0);
}


function setBlackOnWhite() {
setForegroundColor(0,0,0);
setBackgroundColor(255,255,255);
}

function resetColors() {
setForegroundColor((oldForeground>>16)&0xff, (oldForeground>>8)&0xff, oldForeground&0xff);
setBackgroundColor((oldBackground>>16)&0xff, (oldBackground>>8)&0xff, oldBackground&0xff);
}

function emptyRoiManager() {
roiManager("Deselect");
if (roiManager("count")>0) roiManager("Delete");
}
(2-2/2)