# 管道检测 ## 任务描述 在生产一些有着精密用途的管道管材时,诸如颗粒或者材料滴落等缺陷,可能会导致产品质量问题。通过CTMV,我们可以实现一种在线管道检测的视觉系统。 ## 设计规格 - **任务和功能。**正如上面所说,我们需要实现一款对已知种类缺陷的在线检测。需被检测到的最小缺陷,尺寸在$\rm 0.08\ mm$。根据缺陷种类和大小,这些缺陷要被分为不同的类别。对于每个类别,要根据大小和发生频率来定义一个容忍度。打个比方,如果一些颗粒,大小在$\rm 0.1\ mm$和$\rm 0.2\ mm$之间,且每米被检管道上有不超过5个,那么这些颗粒就是可以容忍的。 我们也需要一个检测协议,这个协议要显示出那些缺陷,包括它们从开始检测起计算的位置,它们的尺寸,和它们的图像。此外,这些数据必须供以远程计算机通过TCP/IP协议在线访问。检查由人工操作。 - **工件。**管道的直径在$\rm 5\ mm$和$\rm 32\ mm$范围之间变化。管子为透明的。直径上的变化要定位给系统。管子表面无尘无胶,同时不应出现颜色变化。 - **工件定位。**管道纵向移动生产, 移动速度最大为3米每分钟,横向位置有$\rm 0.5\ mm$的容忍度。 - **性能需求。**要检测的最小缺陷大小为$\rm 0.08\ mm$。处理时间应定义为一个处理速度的函数。在下一次图像采集完成之前,这一次的图像需要完成处理。 - **信息接口。**正如上面所提到的,需要一个用以控制和设置管径的用户界面,一个用以输出和储存的检测协议,和一个基于TCP/IP连接的对缺陷数据的在线访问功能。 - **安装空间。**要能直视管道内部。距管道中心的最大距离是$\rm 400\ mm$。在运动方向上,系统可以使用$\rm 700\ mm$的距离。摄像机与电脑间距为$\rm 3\ m$。组件应被覆盖,以防滴水。 ## 设计 **(1) 相机种类。**由于管道是移动的,而且需要相当高的分辨率,所以最好选择线扫描装置。为了能$360\degree$覆盖管子四周,至少要用六个摄像头。这时,得计算一下六个线扫描相机、足量的图像采集卡和处理器硬件的成本了,费用超出了预算。 所以,不得不用面阵相机。对于单帧的获取,需要注意相机触发和多张图像上的缺陷合并的问题。 **(2) 视场。**在使用六个相机时,每个相机需要覆盖半径大小的视野,如图所示。 ![image-20220310082041836](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310082041836.png) 最大直径被定为$\rm 32\ mm$,半径为$\rm 16\ mm$。位置容忍度小于$\rm 0.5\ mm$。所以,一台相机所需的视场可以这样计算 $$ \rm FOV=最大部分大小\ +\ 位置容忍度\ +\ 边距\ +\ 对相机传感器长宽比的适配\\ \rm FOV_{横向}=16\ mm+0.5\ mm+1\ mm=17.5\ mm $$ 使用一个4:3传感器长宽比的面相机,竖直视场可以这样确定 $$ \rm FOV_{纵向}=FOV_{横向}\cdot{3\over4}=17.5\ mm\cdot{3\over4}=13.125\ mm $$ 从而,可以计算视场为$\rm 17.5\ mm\times13.125\ mm$。相机可以如下图安装。 ![image-20220310195601899](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310195601899.png) **(3)分辨率。**最小缺陷的大小被定为$\rm 0.08\ mm$。因为处理过程基于斑点分析,所以为了排出最小的缺陷,最少要用3个像素。因此,需要$\rm 0.027\ mm$每像素的空间分辨率。 又由视场数据,可以计算得相机分辨率为 $$ Rc={{\rm FOV}\over Rs}={\rm 17.5\ mm\over0.027\ mm/像素}=656\ 像素 $$ **(4)相机、图像采集卡和硬件平台的选择。**根据这些数值,可以选择一款标准VGA相机。一项相机接口技术,IEEE 1394,因为相对于Camera Link这类系统,更容易集成、成本低廉,而被选用。带有$656\times491$像素分辨率传感器的Basler 601f CMOS相机被选用。 使用$656$像素来排$\rm 17.5\ mm$的视场,结果得到的空间分辨率为 $$ Rs={{\rm FOV}\over Rc}={\rm 17.5\ mm\over 656像素}=0.027\ {\rm mm/像素} $$ 这样,最小$\rm 0.08\ mm$的缺陷就可排在3像素中。 硬件平台选用一款19寸的基于Windows的电脑。摄像机通过可二次配置的I/O口和IEEE 1394,连接到两个National Instruments的PCI-8254R板子上。 **(5)镜头设计。**到管道中间的最大距离定为$\rm 400\ mm$。放大系数可算得 $$ \beta=-{\rm 传感器大小\over FOV}=-{\rm 6.49\ mm\over17.5\ mm}=-0.371 $$ 传感器大小是通过单元大小$\rm 9.9\ \mu m$每像素与传感器分辨率$656$像素相乘得到的。 使用放大倍率,和距离管道的最大值$\rm 400\ mm$,减去相机镜头占据的距离$\rm 200\ mm$,可以计算出焦距 $$ f'=a\cdot{\beta\over1-\beta}=200\ {\rm mm}{0.371\over1+0.371}=54.1\ {\rm mm} $$ 从而选择$\rm 50\ mm$的镜头。 算得间距$d$为 $$ d=f'\cdot{1-\beta\over\beta}=50\ {\rm mm}\cdot{1+0.371\over-0.371}=-184.8\ {\rm mm} $$ 如前文所述,镜头延伸值$I$可被算得 $$ I=a'-f'=-f\cdot\beta=50\ {\rm mm}\cdot0.371=18.55\ {\rm mm} $$ 由于无法通过调焦来实现,所以使用了$\rm 15\ mm$的延伸管。 **(6)照明选择。**由于管道为半透明的,所以采用漫反射背光来照明。这样,缺陷处则会出现暗点。由于快门时间要被设定为一个很低的值,所以需要高光强。管道在图像中移动1像素的距离,需要时间为 $$ t={Rs\over v} $$ 其中,$v$为管道速度($\rm 3\ m/min=50\ mm/s$),$Rs$为扫描方向上的空间分辨率。 从而 $$ t={\rm 0.027\ mm/像素\over 50\ mm/s}=540\ {\rm \mu s} $$ 所以选择一款$\rm 50\ mm\times50\ mm$大小的高功率LED背光灯。由于光照强度足够,所以不再需要闪光操作。 **(7)机械结构设计。**对于机械设计,要注意相机和灯关的安装。由于不同的照明设备会互相干扰,所以每组相机和灯光都要排成一排。一组相机的安装如图所示。 ![image-20220310210602191](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310210602191.png) 由于设备会被暴露在滴水下,所以灯光和相机要装外壳,电脑设备亦是如此。 **(8)电路设计。**电缆长度小于$\rm 4.5\ m$,符合IEEE 1394标准。 **(9)软件算法。**软件库方面,使用通过Microsoft Visual C#编写出来的CTMV软件包。图像采集方面,选用National Instruments Imaq为IEEE 1394标准提供的API。 对于图像采集,要以定好的$\rm 2\ mm$重叠量,来触发摄像机以获取图像。下图演示了一台相机拍下连续的4帧图像。 ![image-20220310211921818](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310211921818.png) 对于相机触发,使用了一个旋转编码器,它将如下图显示管道的移动。编码器信号连接到图像采集卡上专门设计的输入口。用一个FPGA计数器,采集卡会发出触发信号,并发给相机。计算机上的应用软件并不会处理信号触发,这将全部由FPGA执行。这节省了计算时间,并保证了触发程序的高可信度。 ![image-20220310212149766](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310212149766.png) 由于管道是个曲面,所以图像中的光并不均匀。下图就显示了一幅管道的图像。为了保证光亮的均匀性以便接下来的检测,要用上阴影。在检测刚开始时,要参考几张图像的均值计算做好示教。 ![image-20220310213006798](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310213006798.png) 特征定位和分割通过阈值化完成。由于阴影的使用,对不同的管道,无需再为了阈值化而适配调整。下图分别展示了原图中的缺陷和阈值化分割后的缺陷。 ![image-20220310213908929](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310213908929.png) 分割之后,特征提取就能通过斑点分析完成。每个斑点要在长、宽和面积上进行测量。这之后,要被分到不同的缺陷类型中,比如颗粒或液滴。测量时,需要检查某处缺陷是否可以在多帧中看到,如果可以,还要进行合并以便测量正确。下图就展示了这种情况。 ![image-20220310214623444](C:\Users\Sieroy\AppData\Roaming\Typora\typora-user-images\image-20220310214623444.png) 在测量并分类后,缺陷被添进恰当的缺陷类。如果可容忍的缺陷数达到了预定的容忍度,那就会发出一个错误信号。 这之后,这些包括长宽大小和缺陷图像的信息将会进入缺陷记录数据库中。