在使用光纤端面检测仪对光纤端面进行图像采集的时候,由于光纤端面每次出现在视野范围中的位置都有所不同,所以首先要对光纤端面纤芯的位置进行定位才能对其进行一系列的检测。要定位纤芯的位置,首先需要将采集到的图像二值化。因为通过光纤端面检测仪采集得到的初始图像为32位的,而在VBAI中对图像分析处理的函数模块基本上都是不支持32位图的,所以只有把32位图转化成二值图像,才能对其进行一系列精确的分析。使用VBAI的视觉助手(VisionAssistant)函数模块对初始图像进行图像处理,通过抽取色彩值(ExtractHSL)的子函数即可得到灰度8位图,然后使用阈值法将图像二值化。
阈值法是一种简单而且有效的图像分割方法,此方法是用一个或几个阈值将图像的像素灰度级分为几个级别,属于一个级别的像素点被认为是同一类物体。需要注意的是,在光纤端面检测的过程中,由于包层可能会和包层外的脏污属于同一个灰度级,所以在对包层外的脏污检测的时候是不能同时对包层上的脏污进行检测的,需要将包层屏蔽以后再检测。
在本系统中,设F(x,y)表示对图像二值化的输出,其像素灰度级范围为[a,b],对同一类型的缺陷检测时只需要设定一个a和b之间的阈值TH,把图像的像素分成大于TH的像素群(缺陷)和小于TH的像素群(背景)两部分。即:
图像二值化将缺陷像素点的灰度值设为0,背景像素点的灰度值设为1。在VBAI的视觉助手函数模块中就有设置阈值(Threshold)的函数子模块,调用的时候只需要在阈值直方图上根据双峰法找到波峰与波谷,并手动调整阈值的大小,使其能将缺陷与背景区分开来即可,如图2所示。
图2原始图像及其阈值直方图
2.1纤芯的定位
本文定位光纤纤芯所使用的是方法是先找到光纤的整个包层,由于光纤包层的形状是一个圆,而这个圆的圆心就是纤芯的中心了。光纤端面存在较大程度的污染的话,如果只是设置一定的阈值将图像二值化,得到的二值图像除了光纤包层外还可能会有很多脏污,这样就会对光纤包层的定位产生很大的影响。所以二值化图像后还需要使用视觉助手里的一些子函数模块对图像进行一些形态学的处理,使用移除小颗粒(RemoveSmallObjeets)和移除大颗粒(RemoveLargeObjects)这两种函数子模块,调整迭代次数的大小,把比光纤包层小和比光纤包层大的颗粒都滤掉,从而除去对光纤包层定位的干扰,使得到的二值图像里只有光纤包层的图像,如图3所示。
图3将原始图像处理成只有光纤包层的二值图像
图4不同位置纤芯的定位
得到光纤包层的二值图像后,利用VBAI中寻找圆边缘(FindCircularEdge)以及建立坐标系(SetCoordinateSystem)的函数模块,即能准确地定位光纤纤芯的位置。寻找圆边缘是为了寻找光纤包层圆的边缘,从而寻找到光纤包层圆的圆心,这个圆心也是纤芯圆的圆心,然后以这个圆心为坐标系原点建立坐标系。在VBAI中,建立坐标系这个函数的功能是定位特征,它能根据寻找到的包层圆自动定位圆心,即使包层在图像中的位置改变,坐标系原点也能准确地定位在包层圆的圆心上,而包层圆的圆心就是纤芯圆的圆心。由图4可见,坐标系的原点可以很精确地定位在位置不同的纤芯圆的圆心上,即使是在不规则的包层面上。
2.2检测区域的划分