> Hi Ram,
>
> below you will find some code stat does the job (as I understood it).
>
> You need to use a crop version of your image (containing only the 4 wings).
> If you need the ruler for pixel size and color balance, you should do it
> in a previous step.
>
> The macro code below will create :
> -a results table containing,
> # the label as imageTitle:ROIname (you can split it it in Excel to simpliy
> analysis),
> # the Area (of the considered Wing) ,
> # the %Area (the percent of coverage by black spot),
> # and the center of mass coordinates (XM and YM, that is used for ROIs
> naming)
> -an RGB image, corresponding to each mask, Red is the Wing, Green is the
> black Spots, (yellow because green overlap with red)
>
> Using Process>Batch>Macro, you can copy the code, specify the folder of
> the cropped images and a different folder to save the RGB masks created.
>
> Feel free to contact me if needed,
>
> Cheers,
>
> Romain
>
> //-------- start of code
> /////////////////////////////////////////////////////////////// You should
> use a crop images that contains only the 4 wings
> title = getTitle();
> /////////////////////////////////////////////////////////////// clean the
> ROI manager between each image
> roiManager("Reset");
> /////////////////////////////////////////////////////////////// duplicate
> and convert to HSB, and retrieve some informations
> run("Duplicate...", "title=HSB");
> //rename("HSB");
> run("HSB Stack");
> getDimensions(width, height, channels, slices, frames);
> xHalf = width /2;
> yHalf = height /2;
>
> /////////////////////////////////////////////////////////////// select the
> Hue channel, duplicate it and apply a threshold
> selectImage("HSB");
> Stack.setChannel(1);
> run("Duplicate...", "title="+title+"_Wing");
> setAutoThreshold("Default");////////////////////////////////// you can
> choose a different one (but use the same threshold between images you want
> to compare)
> setOption("BlackBackground", true);
> run("Convert to Mask");
>
> /////////////////////////////////////////////////////////////// Detect the
> 4 wings
> run("Set Measurements...", "area center area_fraction display
> redirect=None decimal=5");// define the measurements (need Area and center
> of Mass, for the renaming step)
> run("Analyze Particles...", "size=100-Infinity add"); //
> you can define here the min and max size of your wings
>
> /////////////////////////////////////////////////////////////// Rename the
> detected ROI accordingly to their position in the image
> for (roiIndex = 0 ; roiIndex < roiManager("Count");roiIndex++){
> x = getResult("XM", roiIndex);
> y = getResult("YM", roiIndex);
> roiManager("Select",roiIndex);
> if( (x < xHalf) && (y < yHalf) ) {
> roiManager("Rename","Upper-Left");
> } else if ( (x > xHalf) && (y < yHalf) ) {
> roiManager("Rename","Upper-Right");
> } else if ( (x < xHalf) && (y > yHalf) ) {
> roiManager("Rename","Lower-Left");
> } else if ( (x > xHalf) && (y > yHalf) ) {
> roiManager("Rename","Lower-Right");
> }
> }
> roiManager("Deselect");
>
>
> /////////////////////////////////////////////////////////////// select the
> Brightness channel ((looking for black pixel), duplicate it and apply a
> threshold
> selectImage("HSB");
> Stack.setChannel(3);
> run("Duplicate...", "title="+title+"_Spot");
> setAutoThreshold("RenyiEntropy");////////////////////////////// you can
> choose a different one (but use the same threshold between images you want
> to compare)
> setOption("BlackBackground", true);
> run("Convert to Mask");
> for (roiIndex = 0 ; roiIndex < roiManager("Count");roiIndex++){
> roiManager("Select",roiIndex);
> run("Measure");
> }
> imageCalculator("AND create 8-bit", title+"_Wing", title+"_Spot");
> rename("WingAndSpot");
>
> run("Merge Channels...", "c1=["+title+"_Wing] c2=[WingAndSpot]");
> selectWindow("RGB");
> rename(title+"_mask");
> close("\\Others");
>
> //-------- end of code
>
> ---------------------------------------------------------------
> Dr. Romain Guiet
> Bioimaging and Optics Platform (PT-BIOP)
> Ecole Polytechnique Fédérale de Lausanne (EPFL)
> Faculty of Life Sciences
> Station 19, AI 0140
> CH-1015 Lausanne
>
> Phone: [+4121 69] 39629
>
http://biop.epfl.ch/> ---------------------------------------------------------------
>
> ________________________________________
> De : ImageJ Interest Group [
[hidden email]] de la part de ram prasad
> [
[hidden email]]
> Envoyé : vendredi 10 avril 2015 09:41
> À :
[hidden email]
> Objet : Choose a region automatically and quantify black pixels
>
> Hey All,
>
> I'm trying to quantify black colour on the fore wings of butterflies. I
> would
> like to do this by calculating the ratio of the area occupied by the black
> pixels/total number of pixels in the wing. I would really appreciate it if
> you could tell me how I should go about it. Is there a way to tell ImageJ
> to find the edges of all objects in an image and pick an object with a
> certain shape?
>
> Also, since I have hundred of images I would like to employ batch mode
> to analyze
> them and I would like to know if that is possible. Basically, I want the
> software to detect the fore wings by itself I'm not sure if this is
> feasible.
>
> I have attached an image for your reference. Any help will be really
> appreciated.
>
> Thanks,
> Ram
>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>