mtex
mtex copied to clipboard
Determination of grain size by intercept line method
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 ( 1i5 and 1j5).
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
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.
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
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
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
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
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))
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
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
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