Radial distribution function

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Radial distribution function

Serhiy Malynych
Hi,

I need to determine radial distribution function of nanoparticles from SEM
image. There are references in the Internet  at imagejdocu.tudor.lu regarding
macro by Michael Schmid, but the link seems to be old and doesn't open. I
did install Radial Profile Plot plugin from ImageJ web-site but I'm not
sure this is exactly what  I need. Can anyone help on that matter.

Thanks,
Serhiy

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Radial distribution function

Herbie
"I did install Radial Profile Plot plugin from ImageJ web-site but I'm
not sure this is exactly what  I need. Can anyone help on that matter."

Maybe Serhiy,

if you tell us precisely what functionality you need!

Best

Herbie

:::::::::::::::::::::::::::::::::::::::::::::
Am 13.03.16 um 22:57 schrieb Serhiy Malynych:
> I
> did install Radial Profile Plot plugin from ImageJ web-site but I'm not
> sure this is exactly what  I need. Can anyone help on that matter.

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Radial distribution function

Michael Schmid
In reply to this post by Serhiy Malynych
Hi Serhiy,

below is a RDF macro (not the very latest version, I fear). Note that it is for 2D RDFs; if you are interested in 3D RDFs you need a correction that depends on the size of the particles.

You need the "Radial Profile" plugin,
  http://rsb.info.nih.gov/ij/plugins/radial-profile.html

An alternative would be finding the centroids with "Analyze Particles" and running a loop that determines all the difference vectors between pairs of particles.

Michael
________________________________________________________________
On Mar 13, 2016, at 22:57, Serhiy Malynych wrote:

> Hi,
>
> I need to determine radial distribution function of nanoparticles from SEM
> image. There are references in the Internet  at imagejdocu.tudor.lu regarding
> macro by Michael Schmid, but the link seems to be old and doesn't open. I
> did install Radial Profile Plot plugin from ImageJ web-site but I'm not
> sure this is exactly what  I need. Can anyone help on that matter.
>
> Thanks,
> Serhiy
________________________________________________________________

// ImageJ macro to calculate the Radial Distribution Function (RDF)
//
// Use with a binary input image having black particles on white background
// Needs the "Radial Profile" plugin, http://rsb.info.nih.gov/ij/plugins/radial-profile.html
//
// Limitations:
// - Particle positions are rounded to nearest full pixel.
// - Distance is in pixels, irrespective of any spatial calibration of the image
//
// Version: 2008-Dec-04 Michael Schmid
//
setBatchMode(true);
width=getWidth;
height=getHeight;
//maxRadius may be modified, should not be larger than 0.3*minOf(width, height);
maxRadius=0.3*minOf(width, height);
minFFTsize=1.3*maxOf(width, height);
title=getTitle();
//make autocorrelation of particle positions
size=4;
while(size<minFFTsize) size*=2;
run("Find Maxima...", "noise=10 output=[Single Points] light exclude");
tempID=getImageID();
tempTitle="temp-"+random();
rename(tempTitle);
run("Canvas Size...", "width="+ size+" height="+ size+" position=Center zero");
run("FD Math...", "image1=["+tempTitle+"] operation=Correlate image2=["+tempTitle+"] result=AutoCorrelation do");
psID=getImageID();
selectImage(tempID);
close();

//make autocorrelation reference to correct finite image size effects
newImage("frame", "8-bit White", width, height, 1);
run("Set...", "value=255");
tempID=getImageID();
rename(tempTitle);
run("Canvas Size...", "width="+ size+" height="+ size+" position=Center zero");
run("FD Math...", "image1=["+tempTitle+"] operation=Correlate image2=["+tempTitle+"] result=AutoCorrReference do");
refID=getImageID();
imageCalculator("Divide", psID,refID);
selectImage(refID);
close();
selectImage(tempID);
close();

//prepare normalized power spectrum for radial averaging
selectImage(psID);
makeRectangle(size/2, size/2, 1, 1);
run("Set...", "value=0");
run("Select None");
circleSize=2*floor(maxRadius)+1;
run("Specify...", "width="+circleSize+" height="+circleSize+" x="+(size/2+0.5)+" y="+(size/2+0.5)+" oval centered");
getRawStatistics(nPixels, mean);
run("Select None");
run("Divide...", "value="+mean);
run("Specify...", "width="+circleSize+" height="+circleSize+" x="+(size/2+0.5)+" y="+(size/2+0.5)+" oval centered");
run("Radial Profile", "x="+(size/2+0.5)+" y="+(size/2+0.5)+" radius="+floor(maxRadius)-1);
rename("RDF of "+title);
selectImage(psID);
close();
setBatchMode("exit and display");

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Radial distribution function

Serhiy Malynych
Hi Michael,

The macro works just perfect! Thank you so much, it is very helpful for me.

Serhiy

On Mon, Mar 14, 2016 at 12:28 PM, Michael Schmid <[hidden email]>
wrote:

> Hi Serhiy,
>
> below is a RDF macro (not the very latest version, I fear). Note that it
> is for 2D RDFs; if you are interested in 3D RDFs you need a correction that
> depends on the size of the particles.
>
> You need the "Radial Profile" plugin,
>   http://rsb.info.nih.gov/ij/plugins/radial-profile.html
>
> An alternative would be finding the centroids with "Analyze Particles" and
> running a loop that determines all the difference vectors between pairs of
> particles.
>
> Michael
> ________________________________________________________________
> On Mar 13, 2016, at 22:57, Serhiy Malynych wrote:
>
> > Hi,
> >
> > I need to determine radial distribution function of nanoparticles from
> SEM
> > image. There are references in the Internet  at imagejdocu.tudor.lu
> regarding
> > macro by Michael Schmid, but the link seems to be old and doesn't open. I
> > did install Radial Profile Plot plugin from ImageJ web-site but I'm not
> > sure this is exactly what  I need. Can anyone help on that matter.
> >
> > Thanks,
> > Serhiy
> ________________________________________________________________
>
> // ImageJ macro to calculate the Radial Distribution Function (RDF)
> //
> // Use with a binary input image having black particles on white background
> // Needs the "Radial Profile" plugin,
> http://rsb.info.nih.gov/ij/plugins/radial-profile.html
> //
> // Limitations:
> // - Particle positions are rounded to nearest full pixel.
> // - Distance is in pixels, irrespective of any spatial calibration of the
> image
> //
> // Version: 2008-Dec-04 Michael Schmid
> //
> setBatchMode(true);
> width=getWidth;
> height=getHeight;
> //maxRadius may be modified, should not be larger than 0.3*minOf(width,
> height);
> maxRadius=0.3*minOf(width, height);
> minFFTsize=1.3*maxOf(width, height);
> title=getTitle();
> //make autocorrelation of particle positions
> size=4;
> while(size<minFFTsize) size*=2;
> run("Find Maxima...", "noise=10 output=[Single Points] light exclude");
> tempID=getImageID();
> tempTitle="temp-"+random();
> rename(tempTitle);
> run("Canvas Size...", "width="+ size+" height="+ size+" position=Center
> zero");
> run("FD Math...", "image1=["+tempTitle+"] operation=Correlate
> image2=["+tempTitle+"] result=AutoCorrelation do");
> psID=getImageID();
> selectImage(tempID);
> close();
>
> //make autocorrelation reference to correct finite image size effects
> newImage("frame", "8-bit White", width, height, 1);
> run("Set...", "value=255");
> tempID=getImageID();
> rename(tempTitle);
> run("Canvas Size...", "width="+ size+" height="+ size+" position=Center
> zero");
> run("FD Math...", "image1=["+tempTitle+"] operation=Correlate
> image2=["+tempTitle+"] result=AutoCorrReference do");
> refID=getImageID();
> imageCalculator("Divide", psID,refID);
> selectImage(refID);
> close();
> selectImage(tempID);
> close();
>
> //prepare normalized power spectrum for radial averaging
> selectImage(psID);
> makeRectangle(size/2, size/2, 1, 1);
> run("Set...", "value=0");
> run("Select None");
> circleSize=2*floor(maxRadius)+1;
> run("Specify...", "width="+circleSize+" height="+circleSize+"
> x="+(size/2+0.5)+" y="+(size/2+0.5)+" oval centered");
> getRawStatistics(nPixels, mean);
> run("Select None");
> run("Divide...", "value="+mean);
> run("Specify...", "width="+circleSize+" height="+circleSize+"
> x="+(size/2+0.5)+" y="+(size/2+0.5)+" oval centered");
> run("Radial Profile", "x="+(size/2+0.5)+" y="+(size/2+0.5)+"
> radius="+floor(maxRadius)-1);
> rename("RDF of "+title);
> selectImage(psID);
> close();
> setBatchMode("exit and display");
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html