最近看到一些微结构模拟文献中统计了晶粒的长径比,用于比较柱状晶和等轴晶的占比,进而去比较一些其他性能。因此,晶粒长径比是一个比较重要的统计量,本人正好有了一些增材制造微结构的仿真结果,遂产生了这个想法,通过一些“手段”对模拟结果后处理,得到晶粒的长径比信息。
先调研了一些文献中提到的用于统计长径比的软件,主要有Matlab toolbox MTEX、ImageJ software,但摸索了两天都没学明白。后面又看到一款比较新的软件MIPAR,功能很强大,可是不免费且网上没有盗版资源。最终,还是决定硬着头皮自己写吧,至于用哪种语言就看网上哪个方法的教程多,好走得通。
那么自己写代码的话,就得理清逻辑,根据自己的目标和已有基础,制定一个可行的方案。如图1所示,这是我的一个基本研究思路和任务分解,以及每个子任务涉及的主要学术词汇(关键词),方便我去检索相关知识,最后把这些模块拼接起来,实现整体运行。
图1 任务分解
任务一:图像分割
直接处理图像得到相应点信息,不如直接处理数据处理模拟结果的数据文件并提取其中的坐标、对应的晶粒取向场序参量信息,这样数据更精准、更多样,可操作性也越强。将得到的数据赋予矩阵GR,每个矩阵元素取该点处值最大的序参量值(1,2,...),如果最大值小于0.1(0.1是给定阈值,可根据需要改)的序参量则认为是气体并取0。接着把矩阵GR的相同值分离到i个矩阵中,矩阵GRi只有0和1 两种值,1为GR元素为i所对应位置。最后通过matlab的bwlabel函数别每个GRi连通域,从而识别每个晶粒。
图2 图像分割
任务二、三:图像边缘提取和椭圆拟合
方法一:根据上一步的图像分割,每个晶粒可看作由一系列点组成,采用matlab函数boundary识别这组点的边界,根据边界信息拟合椭圆。图中拟合椭圆的函数fitellipse是自定义函数,可在网上搜到类似的代码,我用的这个函数来自链接https://blog.csdn.net/xsz591541060/article/details/114087085 。试验之后发现这个函数有一点缺点,对近似矩形的图案拟合效果较差,但整体来说还是可行的。
图3 图像边缘提取和椭圆拟合方法一
方法二:继续在网上查找,发现了一个用来度量图像区域属性的matlab函数regionprops,技能识别图案轮廓,又能拟合出与区域具有相同标准二阶中心矩的椭圆,可谓一举两得。测试过后,效果十分好,计算效率也高。
图4 图像边缘提取和椭圆拟合方法二
任务四:参数统计、画图
根据之前拟合结果,可以把长轴、短轴长度记录下来,两者相除得到长径比。顺便可以统计每个晶粒的面积,计算晶粒所含像素总合即可。下图给出了统计得到的相关参数图像。
图5 统计信息绘图
以上就是用Matlab代码统计晶粒长径比的研究思路及过程,感谢大家的阅读。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删