mtex icon indicating copy to clipboard operation
mtex copied to clipboard

Determination of grain size by intercept line method

Open Eddahbi opened this issue 9 years ago • 9 comments

Dear Ralf, There are several methods for grain size determination, and the most common one used by the scientific community is the method of intercept line (See figure).

Please, can you introduce syntaxes to calculate the number (Nxi) and (Nyi) of grain boundaries intersecting lines X= xi and Y=yj, to estimate the grain size along X and Y directions, respectively. At least it should be done for 5 lines in each direction ( 1i5 and 1j5). If the line intercepts a triple point it is must be count as 1/2. Thank you very much for the huge time expend for developing mtex. Best regards Mohamed figure

Eddahbi avatar Apr 12 '15 11:04 Eddahbi

Hi Mohamed,

thank you very much for your suggestion. Could you please help by thinking of a nice syntax, i.e. how exactly should the command look like, what should be the input, what the output?

For instance, I may compute the intersection points of grain boundary segments with some line

[x,y] = intersect(grains.boundary,someLine)

The result should be two lists as long as the number of boundary segments containing for each boundary segment the intersection point. If there is no intersection the result may simply NaN and thus we could compute the number of intersections by

sum(~isnan(x))

One would have to be careful with corner points between two segments. Though, the probability to hit one is quite small.

Ralf.

PS: of course one has to think about a nice syntax for someLine - maybe simply by specifying a line by points [x1,y1,x2,y2] where it passes through.

ralfHielscher avatar Apr 24 '15 06:04 ralfHielscher

Hi Ralf,

Thank you very much for your answers.

Really, I just begin learning about MatLab program in order to understand METX. I´ll send you, as soon as possible line-syntaxes for grain size determination using intercept line method that you can easily transform to Mtex-syntaxes.

Best regards

Mohamed

2015-04-24 8:51 GMT+02:00 Ralf Hielscher [email protected]:

Hi Mohamed,

thank you very much for your suggestion. Could you please help by thinking of a nice syntax, i.e. how exactly should the command look like, what should be the input, what the output?

For instance, I may compute the intersection points of grain boundary segments with some line

[x,y] = intersect(grains.boundary,someLine)

if there is no intersection the result may simply NaN and thus we could compute the number of intersections by

sum(~isnan(x))

One would have to be careful with corner points between two segments. Though, the probability to hit one is quite small.

Ralf.

— Reply to this email directly or view it on GitHub https://github.com/mtex-toolbox/mtex/issues/48#issuecomment-95823838.

Mohamed OuLahcen, Eddahbi

Postdoc-Researcher

Department of Physics

University Carlos III of Madrid

Phone: +34 91 6246261

Eddahbi avatar Apr 24 '15 14:04 Eddahbi

suggestion1 figure

Eddahbi avatar Apr 26 '15 09:04 Eddahbi

Some implementations for grain size analysis already exist for Matlab. If you are interested, here is one such:

https://wiki.aalto.fi/display/GSMUM/Grain+size+measurement+using+Matlab

BR, Tuomo Nyyssönen

nyyssont avatar Apr 29 '15 07:04 nyyssont

Hi Tuomo,

Thank you for your message, and the attached files are interesting. Also, thanks for Ralf for the huge work done for developing this nice MTEX software.

As many scientists in materials science, I´m aware that there are several programs developed for grain size distributions, although most of them concern single phase materials.

However, the introduction and development of the method of intercept line (and may be others) in the MTEX software will permit us realting for example the intercept line segments with other grain structure parameters as misorientation, meanorientatin, orientation, strain etc.. This determination is of great importance when correlating microstructure and properties. Furthermore, this is will be of great importance especially for multiphase materials, and MTEX is a powerful way to separate each phase, and quantify its own grain structure parameters.

Best regards

Mohamed

2015-04-29 9:08 GMT+02:00 Tuomo Nyyssönen [email protected]:

Some implementations for grain size analysis already exist for Matlab. If you are interested, here is one such:

https://wiki.aalto.fi/display/GSMUM/Grain+size+measurement+using+Matlab

BR, Tuomo Nyyssönen

— Reply to this email directly or view it on GitHub https://github.com/mtex-toolbox/mtex/issues/48#issuecomment-97329536.

Mohamed OuLahcen, Eddahbi

Postdoc-Researcher

Department of Physics

University Carlos III of Madrid

Phone: +34 91 6246261

Eddahbi avatar Apr 29 '15 11:04 Eddahbi

Hi Mohamed, if you just want to analyze ebsd data (and everything along it, such as grains, their properties etc.....) along a line you can use:

[ebsd_along_line, dist_from_origin ]= spatialProfile(ebsd,line)

Out of curiosity, if you have ebsd data available, why would you want to use line intercepts? I thought this is just a remnant from back then when people didn't want to do a proper segmentation. Also, there are some properties that will not be available from line intercept data. So, is there any good reason to use it? Cheers

kilir avatar May 04 '15 16:05 kilir

I implemented the function intersect as requested. The syntax is

mtexdata csl
grains = calcGrains(ebsd)
plot(grains.boundary)
% define some line
xy1 = [0,10];  % staring point
xy2 = [31,41]; % end point
line([xy1(1);xy2(1)],[xy1(2);xy2(2)],'linewidth',1.5,'color','g')
[x,y,segLength] = grains.boundary.intersect(xy1,xy2);
hold on
scatter(x,y,'red')
hold off
% find the number of intersection points  
sum(~isnan(x))

intersection The third output segLength is the length of the segments ordered according to the distance from xy1

This will be part of MTEX 4.0.20

Ralf

ralfHielscher avatar May 04 '15 19:05 ralfHielscher

Hi Ralf,

Simply, it´s very nice, and it may works perfectly for single phase microstructure. In future, I hope that the implemented function should also work for microstructure containing more than one phase; that is we can get the number and kind of interphase intersecting the line.

Thank you very much

Best regards

Mohamed

2015-05-04 21:10 GMT+02:00 Ralf Hielscher [email protected]:

I implemented the function intersect as requested. The syntax is

mtexdata csl grains = calcGrains(ebsd)plot(grains.boundary)% define some line xy1 = [0,10]; % staring point xy2 = [31,41]; % end pointline([xy1(1);xy2(1)],[xy1(2);xy2(2)],'linewidth',1.5,'color','g') [x,y,segLength] = grains.boundary.intersect(xy1,xy2);hold onscatter(x,y,'red')hold off% find the number of intersection points sum(~isnan(x))

[image: intersection] https://cloud.githubusercontent.com/assets/8619241/7460224/be31cbce-f2a1-11e4-8396-9a8d357e64be.png The third output segLength is the length of the segments ordered according to the distance from xy1

This will be part of MTEX 4.0.20

Ralf

— Reply to this email directly or view it on GitHub https://github.com/mtex-toolbox/mtex/issues/48#issuecomment-98819524.

Mohamed OuLahcen, Eddahbi

Postdoc-Researcher

Department of Physics

University Carlos III of Madrid

Phone: +34 91 6246261

Eddahbi avatar May 04 '15 20:05 Eddahbi

Hi Ralf:

Thank you for a very useful function intersect. I am wondering if you could please point to a reference explaining the math behind your algorithm of finding intersection points between the GB segments and someLine?

Thanks, Marat

latmarat avatar Nov 08 '16 09:11 latmarat