一种基于光场相机深度信息提取的织物瑕疵检测方法与流程

文档序号:18903408发布日期:2019-10-18 22:17阅读:299来源:国知局
一种基于光场相机深度信息提取的织物瑕疵检测方法与流程

本发明涉及一种织物瑕疵的检测方法,尤其是对织物三维深度信息的处理和提取与检测



背景技术:

最早的深度处理是利用相机阵列求取视差,光场相机将复杂的相机阵列替换为主透镜以及微透镜阵列,一个相机即可实现一套相机阵列对深度求取的功能。现有的光场相机深度处理技术大多是处理一些比较大型的对象,或是拍摄目标距离成像面比较远,比如对雕像和乐高小车用光场相机进行深度处理,因为光场相机微透镜阵列的缘故,会产生渐晕效应,对近距离的高精度高纹理复杂度的目标会产生很大的影响,例如织物纹理等。目前的光场相机深度图构建技术已经十分发达,可以用光场相机很清晰的实现三维重建,但是光场相机的渐晕效应,目前还没有得到很好的解决。已有的解决方案都是根据对象的特殊性来进行估算,且估算结果并不能用于检测领域。



技术实现要素:

本发明的上述技术问题主要是通过下述技术方案得以解决的:

一种基于光场相机深度信息提取的织物瑕疵检测方法,其特征在于,包括

步骤1:利用光场相机采集一组多视角图像。

步骤1.1:在匀强光场中用光场相机对目标织物进行拍摄,提取光场相机中的raw文件和白图像文件,对提取出来的raw文件先进行解码,再颜色矫正,其中需要用到matlab光场工具包,该工具包由d.g.dansereau等人开发,目前有toolbox0.3,toolbox0.4两个版本,本实施例中使用的是toolbox0.4,进行图像解码时会使用到白图像文件,每个光场相机里都会自带白图片文件,工具包读取whiteimagesdatabase映射表,工具包选取最合适的白图像和微透镜网格模型,从而得到拜尔格式的光场图像。再对图像进行频域滤波从而对图像进行去马赛克操作,得到rgb彩色图像,对上一步得到的图像进行色彩校正,得到色彩校正后的图像和五维光场数据。

步骤1.2:对5维光场数据进行分解,5维光场数据表示为lf(x,y,row.col,channel),其中x,y分别表示图形序列的大小,即一共有xy张图像,row,col表示每一张图像的横纵像素大小,channel存储着颜色信息,历遍x,y可分解为多张多视角的子图像序列。

步骤2:对多视角图像进行亚像素偏移,从而得到深度图。

步骤2.1:和目前构造深度的理论一样,先要提取视差特征。在光场描述中,通常用2个平行平面πω来描述一个四维光场l(x,y,u,v),在ω平面上选取2点c1,c2,连接物体和c1,c2,分别交π平面于p1,p2,定义c1.c2间距为b,c1,c2到物体投影点的距离分别为b1,b2,两平面之间的距离为f,p1到c1在π平面投影点的距离为l1,p2到c2在π平面的投影点的距离为l2,则视差为l1-l2,γ为物距,即最终要求的深度,通过相似三角形计算得到

步骤2.2:在多视角图像序列中,同一物点因为不同的视角在图像中会有不同的坐标,因此在图像的同一深度层的像素点垂直插入一条直线,再进行亚像素偏移,此时偏移量与直线的斜率之间成线性关系,例如,2张相连序列的图像之间垂直插入一条直线,然后再经过亚像素偏移来对齐物点,这时直线会有一定的斜率,且该斜率与偏移后2图片与直线交点之间的水平距离成线性关系,该距离也是2张图片中物点的水平距离即视差,所以可以通过斜率来估计深度信息。,m=多视角图像个数,m=√m。根据公式

式中u,v为透镜在数组中的坐标,x,y为像素坐标,中心透镜u=0,v=0;si为预设的斜率,ns为深度层数,m为多视角图像序列个数。因此我们能得到角方差

步骤2.3:在计算了所有候选斜率的方差之后,选取最小方差的斜率来恢复深度;为了提高鲁棒性,我们计算领域平均标准差来表示模糊程度

式中wd是以(x,y)为中心的窗口,|wd|表示的是该窗口的大小,即窗口类所有像素的个数,d(x,y)为估计的局部视差。根据步骤2.1中的公式可以得到深度估计,其中γ为物距,即所求深度,由此可得到局部深度,再由3x3的窗口对图像进行循环处理,历遍整张图像,即可得到深度图。

步骤3:对织物的深度图进行预处理

步骤3.1:光场相机由于使用微透镜阵列,会产生渐晕效应,在处理离成像平面超过1m的景深时,渐晕效果不会特别明显,但是对于织物这种需要近距离拍摄,纹理信息的提取需要高分辨率的图像的对象来说,光场相机的渐晕效应对方法的处理结果影响特别大,为了削弱该影响,先对深度图像进行裁剪,取中间部分,避免渐晕圈外围渐变的明暗度对深度信息产生影响;

步骤3.2:平滑处理,对深度图做简单的平滑处理;

步骤4:自适应窗口滤波

步骤4.1:创建一个和图像大小一样的零矩阵m,用于记录噪点的位置。n为图像像素点个数,x,y分别为像素的横纵坐标。v为图像的方差。

m(x,y)=1

将像素值大于平均值h倍标准差的像素点在m矩阵的标记为1,为噪点,在本次实施例中选取为h=3倍。

步骤4.2:循环使用m阶窗口对图像各个像素进行噪点判断m=2n+1,n=1,2,3...7。判断方法如步骤4.1,若像素点灰度值与窗口内均值之差大于h倍的窗口内像素点的标准差,则将该点判断为噪点,在m矩阵中相应位置标记为1。

步骤4.3:对图像进行滤波,取中心点和中心点相邻的上下左右4点建立3x3的十字形窗口,对m矩阵进行检索,若窗口内0的数量大于1的数量,即表示窗口内有效像素个数大于噪声像素个数,则用该窗口对深度图相应位置的像素点进行均值滤波,否侧窗口由3x3变为5x5,再对m矩阵进行检索,若窗口内0的数量大于1的数量,即表示窗口内有效像素个数大于噪声像素个数,则用该窗口对深度图相应位置的像素点进行均值滤波,否则窗口横纵的大小分别加2,直到窗口大小为15x15。.

步骤4.4:根据滤波结果可以对图像进行多次m矩阵构建然后滤波,从而得到最理想的结果。本次实施例中进行了2次滤波处理。

步骤5:对进行降噪处理后的深度图做二值化处理,选取合适的阈值,即可得到清晰的二值化图像。阈值的选取与图像深度层的多少以及场景深度的复杂度有关,阈值取在0.25到0.3之间。

因此,本发明具有如下优点:利用光场相机来进行3维织物检测,比相机阵列更加方便。其中避免了光场相机的渐晕效应,自适应窗口算法对深度图滤波有很好的效果

附图说明

图1为视差与深度关系示意图。

图2为斜率,视差关系示意图。

图3为光场相机检测织物瑕疵流程图。

图4为光场相机求取深度图流程图。

图5为自适应滤波算法流程图。

图6为织物2维图。

图7为织物初始深度图。

图8为自适应算法滤波后深度图。

图9为二值化瑕疵检测图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。

实施例:

本发明包括以下步骤:

步骤1:利用光场相机采集一组多视角图像。

步骤1.1:在匀强光场中用光场相机对目标织物进行拍摄,提取光场相机中的raw文件和白图像文件,对提取出来的raw文件先进行解码,再颜色矫正,其中需要用到matlab光场工具包,该工具包由d.g.dansereau等人开发,目前有toolbox0.3,toolbox0.4两个版本,本实施例中使用的是toolbox0.4,进行图像解码时会使用到白图像文件,每个光场相机里都会自带白图片文件,工具包读取whiteimagesdatabase映射表,工具包选取最合适的白图像和微透镜网格模型,从而得到拜尔格式的光场图像。再对图像进行频域滤波从而对图像进行去马赛克操作,得到rgb彩色图像,对上一步得到的图像进行色彩校正,得到色彩校正后的图像和五维光场数据。

步骤1.2:对5维光场数据进行分解,5维光场数据可表示为lf(x,y,row.col,channel),其中x,y分别表示图形序列的大小,即一共有xy张图像,row,col表示每一张图像的横纵像素大小,channel存储着颜色信息,历遍x,y可分解为多张多视角的子图像序列。

步骤2:对多视角图像进行亚像素偏移,从而得到深度图。

步骤2.1:和目前构造深度的理论一样,先要提取视差特征。在光场描述中,通常用2个平行平面πω来描述一个四维光场l(x,y,u,v),在ω平面上选取2点c1,c2,连接物体和c1,c2,分别交π平面于p1,p2,定义c1.c2间距为b,c1,c2到物体投影点的距离分别为b1,b2,两平面之间的距离为f,p1到c1在π平面投影点的距离为l1,p2到c2在π平面的投影点的距离为l2,则视差为l1-l2,γ为物距,即最终要求的深度,通过相似三角形计算得到

步骤2.2:在多视角图像序列中,同一物点因为不同的视角在图像中会有不同的坐标,因此在图像的同一深度层的像素点垂直插入一条直线,再进行亚像素偏移,此时偏移量与直线的斜率之间成线性关系,例如,2张相连序列的图像之间垂直插入一条直线,然后再经过亚像素偏移来对齐物点,这时直线会有一定的斜率,且该斜率与偏移后2图片与直线交点之间的水平距离成线性关系,该距离也是2张图片中物点的水平距离即视差,所以可以通过斜率来估计深度信息。本次实施例中深度层数ns=50斜率预设置范围slope_begin=0,slope_end=2.5,m=多视角图像个数,m=√m。根据公式

式中u,v为透镜在数组中的坐标,x,y为像素坐标,中心透镜u=0,v=0;si为预设的斜率,ns为深度层数,m为多视角图像序列个数。因此我们能得到角方差

步骤2.3:在计算了所有候选斜率的方差之后,选取最小方差的斜率来恢复深度;为了提高鲁棒性,我们计算领域平均标准差来表示模糊程度

式中wd是以(x,y)为中心的窗口,本实施例中将窗口大小设置为3x3,|wd|表示的是该窗口的大小,即窗口类所有像素的个数,d(x,y)为估计的局部视差。根据步骤2.1中的公式可以得到深度估计,其中γ为物距,即所求深度,由此可得到局部深度,再由3x3的窗口对图像进行循环处理,历遍整张图像,即可得到深度图。

步骤3:对织物的深度图进行预处理

步骤3.1:光场相机由于使用微透镜阵列,会产生渐晕效应,在处理离成像平面超过1m的景深时,渐晕效果不会特别明显,但是对于织物这种需要近距离拍摄,纹理信息的提取需要高分辨率的图像的对象来说,光场相机的渐晕效应对方法的处理结果影响特别大,为了削弱该影响,先对深度图像进行裁剪,取中间部分,避免渐晕圈外围渐变的明暗度对深度信息产生影响。裁剪时一般取1/5,即裁剪开始点为(2m/5,2n/5),长宽分别取m/5,n/5,若m/5不为整数则向下取整,这里的m,n指深度图的长宽像素。

步骤3.2:平滑处理,对深度图做简单的平滑处理

步骤4:自适应窗口滤波

步骤4.1:创建一个和图像大小一样的零矩阵m,用于记录噪点的位置。n为图像像素点个数,x,y分别为像素的横纵坐标。v为图像的方差。

m(x,y)=1

将像素值大于平均值h倍标准差的像素点在m矩阵的标记为1,为噪点,在本次实施例中选取为h=3倍。

步骤4.2:循环使用m阶窗口对图像各个像素进行噪点判断m=2n+1,n=1,2,3...7。判断方法如步骤4.1,若像素点灰度值与窗口内均值之差大于h倍的窗口内像素点的标准差,则将该点判断为噪点,在m矩阵中相应位置标记为1。

步骤4.3:对图像进行滤波,取中心点和中心点相邻的上下左右4点建立3x3的十字形窗口,对m矩阵进行检索,若窗口内0的数量大于1的数量,即表示窗口内有效像素个数大于噪声像素个数,则用该窗口对深度图相应位置的像素点进行均值滤波,否侧窗口由3x3变为5x5,再对m矩阵进行检索,若窗口内0的数量大于1的数量,即表示窗口内有效像素个数大于噪声像素个数,则用该窗口对深度图相应位置的像素点进行均值滤波,否则窗口横纵的大小分别加2,直到窗口大小为15x15。.

步骤4.4:根据滤波结果可以对图像进行多次m矩阵构建然后滤波,从而得到最理想的结果。本次实施例中进行了2次滤波处理。

步骤5:对进行降噪处理后的深度图做二值化处理,选取合适的阈值,即可得到清晰的二值化图像。阈值的选取与图像深度层的多少以及场景深度的复杂度有关,一般在0.25到0.3之间,本次实施例中选取的阈值为0.27。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1