ImageJ 纤维横截面识别坐标与半径
纤维横截面图像
复合材料的纤维横截面图像可以从SEM 或者Optical microscope中观察到。这里我所获取的复合材料纤维横截面是由Optical microscope中得到的,如下图所示。
可以看到上面有黑色的颜色,这些代表着voids或者defects。这些defects可能是切割这个样品的时候导致的,也可能是由于研磨抛光的时候,没有完全按照步骤来所导致的。但是不影响我们从中获取有用的信息。
ImageJ 纤维横截面识别以及信息提取
首先把图像导入到 ImageJ 中,并转成8-bit格式( ImageJ -> Image -> Type -> 8-bit)。这里我所使用的图像并没有含有scale信息,实际上在保存图像的时候,要把尺度burn到图像上。之后会找个有ruler的图像说明如何设置scale。
然后使用Threshold 命令识别出图像的白色区域(纤维区域)(ImageJ -> Image -> Adjust -> Threshold)。结果如下图所示:
随后使用复制命令(Image -> duplicate),复制一个图像出来。使用Process-> Binary -> fill hole 命令填充孔洞。得到下图:
但是可以看出来,fill hole操作不仅仅将纤维中间的小孔洞填充了,而且还填充了一些纤维之间的孔洞,这一填充部分不是我们想要的,所以要删去这一部分。我们可以实施图像相减操作,Process-> Image calculator,通过hole-filled image减去原来的图像,得到filling area。
那比较大的黑色区域就是我们应该删去的部分。使用wand tool 选中这些较大的区域,一一删除(选中后使用ctrl+shift+i,inverse这个区域的灰度值)。删去这些部分后,可以再使用Image Calculator将其与原来的图像相加。
之后我们就可以使用分水岭操作(binary -> watershed)得到下图:
但是可以看到,有些地方我们不想让其分割,但是由于横截面的缺口导致其算法识别出现误差。我们可以使用Oval工具(如下图所示),创建圆形区域,点击delete,删除这个区域内的灰度值。
在Analyze-> set measurement 中,勾选 Area, Centroid, 和Fit ellipse。在Analyze -> Analyze Particles中修改参数如下图所示,这里勾选了exclude on edges,是因为ImageJ里面没有识别并补充图像边缘圆心和面积的功能。但是有些plugins里面有这项功能(忘记叫啥了,但是个人觉得不好用,而且在图像边缘的纤维横截面也不会影响到什么,所以就不用这个功能了)。
可以得到识别后的椭圆的Area,Centroid。之后就可以导入到excel表格,根据Area计算纤维的半径。对于fibre volume fraction,可以在之前使用threshold的时候使用Analyze -> measure功能测出当时纤维区域面积,除以图像的面积即可。因为没有在图像中设置scale信息,所以这里得到的值是基于默认的参数下的面积以及圆心位置信息。