/** * Colony Blob Count Tool * Collaborators: * Andrés B. Caicedo * * Count the number of dark blobs in the image. The dark blobs are * bacteria colonies. * * (c) 2012, INSERM * written by Volker Baecker at Montpellier RIO Imaging (www.mri.cnrs.fr) * */ var helpURL = "http://dev.mri.cnrs.fr/wiki/imagej-macros/Colony_Blob_Count_Tool"; var tableName = "colony count"; var useMedianFilter = true; var radiusMedianFilter = 8; var useBackgroundSubtraction = true; var rollingBallRadius=100; var useGaussianFilter = true; var sigmaGaussianFilter = 8; var minSize = 500; var maxSize = "Infinity"; var excludeOnEdges = true; macro "Unused Tool - C037" { } macro "Colony Blob Count Tool Help Action Tool - C000C111C222C333C444C555C666D4cD5bC666D3cD4bC666D6cC666D5aD5cDa6Db4C666D3bC666D59C666D4dDa5C666D3dD49D4aD69Db6C666D39D3aD6bDa4Db5DffC666D5dD85C666D4eD5eD95C666D6aD7cD86D96Dc5DfaC666D48D6dD7aD7bD97Da7Dc6DdfDfeC666D58D93Da3Da8Db8C666D2bD2cDfbDfdC777D68D79C777D94Db3DedDfcC777D0dD4fDa9Dc4C777DcfC777D2dD6eDb7Dc3Df9C777D0eD1eD75D7dD87D99Dc7C777D1dD83C777D98DeeC777D1fD2aD3fDefC777D2eD84Da2Dd5C777D3eD8bC777D0fD2fD92Db2Dd6C777D78DecDf8C777Dc2DddC777D74Db9Dc8DeaC777D0cD76D88C888D1cD57DbfC888DdeC888De9C888D82C888D29D38D77C888D47D5fD89C888D8aDe8C888DebC888Dd4C888D73D91C888Da1Dd9C888DdcC888D1bDc9Dd3Dd7C888Dd8Df7C888D7eD8cC888D66D67C999D1aDb1C999DceC999D0bD15D72D8dD9aC999D04D22Dd2C999DdaDe7C999D14D65C999D10D32D64D6fDaaC999D02D03D05D11D21D81Df0C999D00D06D0aD20De5De6C999D01D28D56C999D16D25D31D37D42Dc1C999D07D09D12D13D19D30D33D41C999D08D23D40D63D90Da0DbaC999D24D45D46D53D62D71D7fC999D17D26D43D50D52D80C999D18D27D34D35D36D51D70CaaaD55D60D61Db0CaaaD44D54D9bDf1Df6CaaaDbeDdbDe4CaaaDcaDcdCaaaD8fDacDafDc0Dd1CaaaD8eDabDadDe2CaaaDbbDbdDccDd0De3CaaaD9dDbcDe0Df5CaaaD9cDe1CaaaD9fDaeDcbDf2Df4CaaaD9eDf3"{ run('URL...', 'url='+helpURL); } macro 'select colonies Action Tool - C000T4b12s' { roiManager("Reset"); run("16-bit"); if (useMedianFilter) run("Median...", "radius=" + radiusMedianFilter); if (useBackgroundSubtraction) run("Subtract Background...", "rolling="+rollingBallRadius+" light"); if (useGaussianFilter) run("Gaussian Blur...", "sigma=" + sigmaGaussianFilter); setAutoThreshold("Default"); analyzerOptions = "size="+minSize+"-"+maxSize+" circularity=0.00-1.00 show=Nothing"; if (excludeOnEdges) analyzerOptions = analyzerOptions + " exclude"; analyzerOptions = analyzerOptions + " add"; run("Analyze Particles...", analyzerOptions); run("Revert"); resetThreshold(); } macro 'count selected colonies Action Tool - C000T4b12c' { table = "["+ tableName + "]"; dir = getDirectory("image"); title = getTitle(); number = roiManager("count"); type = selectionType(); getSelectionCoordinates(xCoordinates, yCoordinates); run("Clear Results"); roiManager("Measure"); areas = newArray(nResults); for (i=0; i>16)&0xff; green=(color>>8)&0xff; blue=color&0xff; setForegroundColor(255,255,0); run("Draw"); setForegroundColor(0,255,255); roiManager("Draw"); setForegroundColor(red, green, blue); saveAs("tiff", outFolder + title); IJ.log("saved image: " + outFolder + title); close(); roiManager("Show All with labels"); roiManager("Show All"); run("Restore Selection"); } macro 'select colonies Action Tool Options' { Dialog.create("select colonies options"); Dialog.addCheckbox("apply median filter", useMedianFilter); Dialog.addNumber("radius of median filter", radiusMedianFilter); Dialog.addCheckbox("apply background-subtraction", useBackgroundSubtraction); Dialog.addNumber("radius for background subtraction", rollingBallRadius); Dialog.addCheckbox("apply Gaussian filter", useGaussianFilter); Dialog.addNumber("sigma of Gaussian filter", sigmaGaussianFilter); Dialog.addNumber("minimum blob size", minSize); Dialog.addNumber("maximum blob size", maxSize); Dialog.addCheckbox("exclude on edges", excludeOnEdges); Dialog.show(); useMedianFilter = Dialog.getCheckbox(); radiusMedianFilter= Dialog.getNumber(); useBackgroundSubtraction = Dialog.getCheckbox(); rollingBallRadius = Dialog.getNumber(); useGaussianFilter = Dialog.getCheckbox(); sigmaGaussianFilter = Dialog.getNumber(); minSize = Dialog.getNumber(); maxSize = Dialog.getNumber(); excludeOnEdges = Dialog.getCheckbox(); }