1.一种基于计算机视觉的压力容器数量识别方法,其特征在于包括以下步骤:步骤1:在浸水法气密性试验开始充气加压前,使用摄像头正对检测池水面拍摄,获取检测池水面图像;
步骤2:对检测池水面图像进行灰度化、直方图均衡化和中值滤波操作;
步骤3:先统计步骤2中预处理后图像的直方图中波峰数量,对于不同直方图波峰数量采取不同二值化方法对检测池水面图像进行二值化操作,得到二值图像进行二值化操作具体为:步骤3.1:获取检测池水面图像的灰度分布直方图,以每5个像素值为一个灰度级,一共
51个灰度级Li,i=1,2,…,51,统计各个灰度级的像素数量,分别记为N1,N2......N51;
步骤3.2:当存在Nx满足式(1)或式(2)或式(3):Nx>Nx+1>...>Nx+4&&Nx>Nx-1>...>Nx-4,5≤x≤47 (1)Nx>Nx+1>...>Nx+4&&Nx>Nx-1>...>N1,x<5 (2)Nx>Nx-1>...>Nx-4&&Nx>Nx+1>...>N51,x>47 (3)则认为灰度级Nx处于灰度直方图波峰处;遍历N1,N2,…,N51,累计处于灰度直方图波峰处的Nx的个数,记为K,其中x=1,2,…,51;
步骤3.3:当K=2时,使用OTSU进行二值化操作;当K=3时,使用双阈值二值化操作;当K为其他值时,统一使用灰度均值进行二值化操作;
步骤4:使用基于步骤3的二值图像的压力容器轮廓提取方法,获取检测池水面图像中的压力容器轮廓,获取压力容器轮廓具体方法为:步骤4.1:采用2×2的结构元素对二值图像进行开运算处理;
步骤4.2:使用式(4)的边缘提取算子对二值图像进行轮廓提取;
步骤4.3:若当前像素点与G的卷积结果不为零,则该像素点为边缘像素点;若当前像素点与G的卷积结果为零,则该像素点为背景像素点;
步骤5:基于Hough变换对步骤4的二值图像中的轮廓进行直线识别,得到线段集合L={li|i=1,2,…,n},n表示线段数量;
步骤6:聚类并合并步骤5线段集合L中的线段,得到相对较长的新的线段集合L,新线段集合L的取得过程为:步骤6.1:计算每条线段li的斜率;
步骤6.2:根据斜率对集合L中的线段进行聚类,得到m个线段子集Li,i=1,2,…,m,使其同时满足式(5)、(6)、(7)和(8):Li∩Lj=φ,i≠j,i=1,2,…,m,j=1,2,…,m (6)Li={lij|i=1,2,…,m;j=1,2,…,mi} (7)式中,lij表示子集Li中的第j条线段;mi表示子集Li中的线段数;sij表示子集Li中第j条线段的斜率,j=1,2,…,mi;siq表示子集Li中第q条段线的斜率,q=1,2,…,mi;max表示取较大值;
步骤6.3:合并线段,具体为:若子集Li中的任意两条线段lij与liq在同一条直线上,则将这两条线段合并为一条新的线段,记为lnew,lnew的两个端点分别为lij和liq四个端点中距离最远的两个端点;将lnew归入集合Li中,同时将lij与liq从子集Li中移除;
步骤6.4:重复步骤6.3,直至无线段可以合并;
步骤6.5:将所有新的Li进行并集操作,得到新的线段集合L;
步骤7:排除干扰线段,通过统计属于压力容器上下边缘的线段数量,计算出压力容器的数量,压力容器的数量计算具体方法如下:步骤7.1:将既不满足式(9)也不满足式(10)的线段从L中剃除,得到新的线段集合L′,其中,ki表示线段集合L中的线段li对应的斜率,k0表示事先根据摄像头的位置标定出的待检测压力容器的上下边缘在图像中的斜率;
max(|ki|,|k0|)=0 (10)
步骤7.2:将满足式(11)的线段从L′中剃除,得到新的线段集合L″,其中,Leni表示线段集合L′中的线段li对应的像素长度,Len0表示事先根据摄像头的位置标定出的待检测压力容器的上下边缘在图像中的像素长度;
Leni<Len0 (11)
步骤7.3:则集合L″中的线段数量的一半即为压力容器的数量。