精华内容
下载资源
问答
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达摘 要: 线结构光扫描是三维重建领域的关键技术。光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素。本文详...

    点击上方“3D视觉工坊”,选择“星标”

    干货第一时间送达

    摘 要: 线结构光扫描是三维重建领域的关键技术。光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素。本文详细阐述了光条纹中心提取算法的理论基础及发展历程,将现有算法分为三类,传统光条纹中心提取算法、基于传统光条纹中心提取的改进算法、基于神经网络光条纹中心提取算法,并提出每一类算法的优势与不足。最后,对线结构光中心提取算法的发展提出展望,生产更高质量的线激光器,扩充基于神经网络的光条纹中心线检测模型的训练样本。

    关键词:中心提取;线结构光;三维重建;光条纹

    1.引言

    双目立体视觉技术是三维重建领域的关键技术之一,广泛应用于机器人视觉导航,非接

    触性三维测量,工业检测,医学成像,航空测绘,军事应用和全息投影等领域[1]。双目视觉测量原理是两台平行放置的CCD相机观测同一物体,相机分别获取图像并提取两幅图像中的特征点进行立体匹配,使用三角测量法由视差值计算物点的三维空间坐标[2]。立体匹配是双目视觉测量最关键的模块[3],对于表面光滑、图像灰度变化小的物体立体匹配的难度极高[4]。因此引入线结构光扫描技术主动增加图像的纹理特征,利用双目相机采集线结构光条纹[5]如图 1所示。由于设备硬件结构的原因激光器投射出的线结构光光条纹通常具有3~12个像素宽度,需要提取单像素甚至亚像素级的光条纹中心作为双目视觉系统的匹配点[6,7]。因此光条纹中心点的提取是立体视觉测量中的关键问题,目前使用最广泛的中心提取算法是Steger C在二十世纪末提出的基于Hessian矩阵的Steger算法,长期以来国内外研发团队基于Steger算法以及其他传统算法不断做出改进,显著提高了中心提取算法精度。本文对近二十年的光条纹中心提取算法进行综述,将现有算法分为三类,传统光条纹中心提取算法、基于传统光条纹中心提取的改进算法、基于神经网络光条纹中心提取算法,并提出各种算法的优势与不足。

    图1 双目系统采集线结构光条纹

    Fig.1 Structure light stripe of acquisition line of binocular system

    2. 传统光条纹中心提取算法

    传统的光条纹中心提取算法有灰度重心法、阈值法、极值法、边缘法、中心法、二值形态学细化法、Steger算法、曲线拟合法、深度约束法。本文根据不同算法的理论基础与特点将其分为四大类,光条纹几何中心提取方法、基于光条纹灰度分布特点提取方法、基于形态学条纹中心提取方法、光条纹亚像素中心提取方法。

    2.1 基于光条纹灰度分布特点提取方法

    2.1.1 灰度重心法条纹中心提取

    投射到平坦物体表面的线结构光条纹截面光强分布近似服从高斯分布[7]。通过灰度重心法可以求出条纹横截面光强分布曲线的高斯中心[8],对光条纹逐行提取高斯中心,将中心点拟合形成光条纹中心线。

    灰度重心法的计算公式如下:      

                                            

    光条纹第v列的灰度重心坐标为p(xv,v),在包含U行,V列的图像中坐标(u,v)处的像素灰度值为I(u,v),其中u=1,2,3,…,U;v=1,2,3…,V。灰度重心法速度快,实时性好,当光条纹投射在形态复杂的物体表面时,光条纹会产生较大形变,此时条纹截面呈现非高斯分布,继续使用灰度重心法会出现中心提取误差,如图 2所示。

    图2 中心提取误差直方图[45]

    Fig.2 Histogram of center extraction error

    2.1.2 极值法提取光条纹中心

    极值法的原理是对光条纹横截面的灰度分布函数做梯度运算,将梯度值为零处的像素点作为光条纹中心点,极值法对截面像素呈高斯分布的光条纹适用性较高[9,10],由于是基于灰度值的方法提取中心点,算法易受噪声影响,信噪比较小的图像不采用此方法[11,12]

    2.1.3 曲线拟合法提取光条纹中心

    由于条纹截面光强分布呈高斯分布[13],对条纹截面的像素点采用二次抛物线拟合[14]与最小二乘法的高斯曲线拟合[14,15],光条纹每一行截面拟合结果的局部极大值对应的像素点即为条纹中心[16]

    2.1.4 方向模板法提取光条纹中心

    方向模板法最初由胡斌[17]提出,是基于灰度重心法的改进算法。线结构光投射到粗糙的物体表面时,光条纹会发生形变与偏移,在一定范围内,可认为光条纹向四个方向发生偏移,水平、垂直、左倾45o、右倾45o。对应上述光条纹发生偏移的四种情况,构建四个方向的模板,分别与条纹截面各行的像素块做卷积,取响应值最大的像素块中心点作为该行的条纹中心。方向模板法能够克服白噪声的影响,并可以在一定程度上修补断线,但受限于有限的模板方向,纹理复杂的物面会使条纹向更多方向发生偏移。

    2.1.5 脊线跟踪法提取光条纹中心

      将光条纹各行横截面灰度值最大的点连接成条纹脊线,沿脊线切线方向灰度值变换平缓,脊线的法线方向光条纹灰度值逐渐降低。脊线跟踪法对噪声十分敏感[10]

    2.2 光条纹几何中心提取方法

    2.2.1 边缘法和中心法提取光条纹中心

    提取光条纹的两条边缘如图3(a)所示,并以其中一条边缘作为光条纹中心,边缘法处理速度快,但会给三维重建结果带来很大误差。常用的条纹边缘提取方法有Canny算法[18],Canny算法需要调整高低阈值及高斯滤波器大小。考虑光条纹边缘的连续性也可以采用邻域法提取光条纹边缘[11],提取到的光条纹两个边缘线的列坐标分别为u、v,则中心法得到的光条纹中心的列坐标y=(u+v)/2。如图3(b)所示,中心法提取的光条纹中心点准确性高于边缘法,但由于图像噪点影响,边缘线的提取会出现误差导致中心法的效果不佳。

    图3(a) 边缘法[23]     

        (b) 中心法[23]

    Fig.3 (a) arginal method;(b) Central method

    2.2.2 阈值法提取光条纹中心

    设定阈值T,在光条纹截面上找到最接近阈值的四个点,用这四个点在光条纹截面上的坐标以及灰度值做线性插值,得到光条纹截面上的两个点p,q的坐标,取p,q的中点即为光条纹中心点如图4所示。阈值法可以做到实时提取中心点,但易受到噪声干扰导致线性插值结果出现偏差如图5所示为噪声对阈值法的干扰。

    图4阈值法[10]      

      图5 噪声对阈值法的影响[10]

    2.2.3 基于形态学条纹中心提取方法

    利用细化法[19]提取光条纹中心骨架,由于光条纹具有一定的宽度,所以需要对光条纹反复进行形态学处理,对光条纹不断地进行腐蚀操作,剥离光条纹边界,同时也要保证剥离边界后的光条纹中心线是单像素宽度的连通线,连通线保持光条纹原有的拓扑结构。由于光照影响,细化法提取的条纹中心线有毛刺出现,使中心线的宽度超过单像素。

    2.2.4 光条纹亚像素中心提取方法

    Steger算法利用Hessian矩阵对图像求二阶方向导数[20],二阶方向导数绝对值最大的方向就是光条纹的法线方向[10]

    Hessian矩阵的表达式:

    h(x,y)为二维高斯函数,f(x,y)表示Hessian矩阵求二阶导数的图像。Hessian矩阵对f(x,y)中像素点(u,v)进行5次二维高斯卷积运算[9,10],得到绝对值最大的特征值对应的特征向量就是该点的法线方向。并在法线方向上对光条纹灰度分布函数二阶泰勒展开,得到一阶过零点即为光条纹中心点。Hessian矩阵对图像求方向导数的过程运算量巨大,无法达到实时的效果[20]

    3. 基于传统光条纹中心提取的改进算法

      传统光条纹中心提取算法中最常用的有灰度重心法、方向模板法、Steger法,如表1所示算法均存在一定的缺陷。近年来许多研究人员对传统条纹中心提取算法做出改进。

    表1 光条纹中心提取算法的缺陷

    Table 1  Defects in the extraction algorithm of light stripe center

    算法

    缺陷

    灰度重心法

    要求光条纹横截面呈完整的高斯分布

    易受环境噪声与传感器引入的误差的影响

    方向模板法

    受限于有限的模板方向

    物体表面粗糙度会影响条纹中心提取精度

    Steger算法

    运算量过大,效率低

    高斯核选取不恰当会导致图像信息失真

    3.1 灰度重心法的改进

    由于高空间相干性,线激光器会产生随机的斑点或颗粒状的图案,光条纹截面会出现宽度不一致的问题如图6所示。张小艳[21]等提出一种自适应二值化处理的方法先确定位光条纹各行截面边界,根据不同的条纹边界宽度利用灰度重心法提取光条纹中心点,提高了中心线提取准确性。

    图6 变形的光条纹[27]

    刘振[22]等通过条纹中心点间邻域灰度变化较平缓的特点,引入高斯分布互相关系数,自适应地调节互相关模板大小,结合互相关算法与曲线拟合算法精确定位条纹中心点,算法对于高光强背景的情况表现良好。

    赵博华[23]等利用形态学方法[12]设定连通域面积阈值,去除噪声并输出具有有效光条信息的二值化模板图像,利用模板与原图像相乘获得无噪声的光条图像,使用灰度重心法提取光条中心线,有效的克服了外部噪声干扰。

    粗糙的物体表面会导致光条纹发生不规则的扭曲变形,席剑辉[24]等结合高斯拟合算法与灰度重心算法提出一种快速提取条纹中心线的方法,先利用差影法提取二值化条纹图像,创建模板对图像进行两次卷积处理并采用中值滤波[25]去除噪点,在条纹边缘的局部邻域内计算像素点的梯度从而确定光条法线方向,在法线方向上利用灰度重心法获取光条中心点如图5所示。算法克服了因粗糙的物面造成的光条纹形变问题。

    图5 基于骨架的灰度重心法[31]

    赵彬[26]等提出一种自适应阈值的加权重心法提取光条纹中心。将多通道的BGR图像转换成只有R通道的光条纹图像,实验证明R通道的光条纹像素点灰度分布最接近高斯分布。通过Otsu自适应阈值法获取图像的最佳分割阈值从而将光条纹与背景分离,提高算法运算效率。最后利用加权灰度重心法提取光条中心点,该算法增强了条纹中心点局部邻域像素的权重,更精准的定位中心点坐标。

    加权灰度重心法公式:

    其中q为光条纹宽度范围,W为自适应阈值法的最佳阈值。g(x,y)为像素灰度值,yi为像素坐标值,y就是光条纹中心坐标。

    3.2 方向模板法的改进

    李和平[27]等提出一种基于遗传算法的光条纹中心提取算法,首先利用遗传算法[28,29]自动选取颜色阈值从图像中分割出光条纹区域,再通过方向模板法获取光条中心线,采用人机交互的方式填充断裂的中心线。算法增强了抗噪声的能力,实现了断线修补。

    针对方向模板法计算量大,运算效率低,光条纹中心提取精度只能达到像素级别等问题。苏小勤[30]等基于方向模板法、中心法、灰度重心法,提出了一种快速提取光条纹中心的算法。首先通过中心法提取光条骨架,利用基于位置的发现判断法求取骨架法线方向,在法线方向上对条纹截面的像素进行灰度加权提取条纹中心。

    由于投射面反射率不一致,光条纹会出现粗细不均匀的情况。传统方向模板法四个方向的高斯模板大小是固定的,当局部条纹宽度较小时,中心线会偏离结构光中心。为克服这一问题,王泽浩[31]等提出一种自适应方向模板法,首先利用灰度属性邻域法[32]对图像去噪,根据不同的条纹截面宽度自动调整方向模板大小,对结构光中心线有很好的追随性,提高了中心线提取的准确率。

    方向模板法输出光条纹三维数据的图像点列,直接使用这些点拟合条纹中心线,会出现大量毛刺。为了解决以上问题,金俊[33]等结合多帧平均法和方向模板法提出一种基于Bezier曲线拟合的光条中心提取方法。算法使用最大方差阈值分割和灰度领域属性将两幅含有结构光条纹的图像求平均,再与不含光条纹的图像做差,从而获得无噪声的光条图像[17]。利用方向模板法初步提取光条纹中心点,最后使用基于Bezier曲线的最小二乘法将这些点拟合成完整的光条纹中心线。算法提高了中心线提取速度,并修补断点。

    不同于直线光条纹中心线提取,针对大曲率的线结构光条纹中心提取问题,辛军强[34]等利用自适应阈值法分割光条纹与图像背景,对分割出的光条纹采用并行细化算法提取单像素骨架,通过方向模板法获取骨架像素点的法线方向,在法线方向上使用灰度重心法获取光条纹中心点如图7所示。算法准确度较高,可以做到实时检测。

    图7基于方向模板的灰度重心中心线

    3.3 Steger算法的改进

    张远[35]等采用FPGA的递归逻辑结构提高Steger算法的运算效率,使条纹中心提取算法的精度不受二维高斯卷积核参数的影响,增加了算法的灵活性。

    胡坤[36]等将Steger算法与阈值法结合,利用阈值法分离光条纹与图像背景,提取光条纹ROI减小Hessian矩阵的运算量。并根据高斯函数的可分离性[37],将Hessian矩阵的二维高斯卷积核转换为一维高斯卷积核。该算法提高了Steger算法的运算效率。

      Steger算法运算量大,效率低的最主要因素是Hessian矩阵对图像反复进行5次二维高斯卷积运算求取光条纹各像素点的法线方向。蔡怀宇[38]等利用PCA[39]方法对图像梯度向量的协方差矩阵进行特征分解[40],代替Hessian矩阵计算光条纹的法线方向,提高了算法运算效率。

    刘剑[41]等,提出一种Hessian矩阵与区域增长算法结合的条纹中心提取算法,先利用Hessian矩阵确定像素点的法向量,在法线方向上对条纹灰度分布函数泰勒展开获得中心点亚像素坐标作为初始种子点,区域增长迭代算法通过Hessian矩阵确定种子点的切线方向,在该方向的8邻域内寻找下一个种子点进行,将所有种子点拟合形成条纹中心线如图7所示。该算法克服了噪声对中心点提取的影响,相比文[20]算法速度提升了40倍,均方差相比灰度重心法降低了2.02 pixel。

    图7 条纹中心线效果图

    岳龙[42]等针对物体表面反射率差异较大的情况,基于Steger算法提出一种自适应条纹中心提取算法。利用Hessian矩阵计算光条纹的法向方向,在法向方向上根据条纹不同的截面宽度调整高斯函数的均方差参数σ,最后对条纹灰度分布函数泰勒展开获得条纹中心点。该方法自适应地提取曲率变化较大的条纹,一定程度上提高了运算效率。

    Hessian矩阵高斯函数的均方差参数γ与条纹宽度β的关系:                                   

    程鑫[43]等针对检测对象为黑色胶体的情况,提出一种基于阈值分割的Hessian矩阵定位和高斯曲线拟合的算法。首先对图像采用中值滤波去除噪点,通过阈值法提取光条纹图像的ROI,并对ROI的高频区域进行线性增强提升图像对比度。利用极值法找到条纹截面灰度极大值作为初始条纹中心点。将初始中心点带入Hessian矩阵计算光条纹的法向方向,在法向方向上对条纹灰度分布函数二阶泰勒展开得到条纹中心点坐标。最后采用高斯函数对中心点集进行函数逼近的拟合,获取光条纹精确的中心点坐标[44]。算法鲁棒性高,能够增强投射到特殊物体表面的光条纹稳定性。

    4. 基于神经网络光条纹中心提取算法

    李玥华[45]等提出一种基于BP神经网络的光条纹中心提取方法。先设定光条截面中心点的灰度阈值为 IT=50,选取图像中每列像素的有效光条截面区域。搭建为三层神经网络,输出层神经元个数为1,输入层个数11、隐层神经元个数设定为3。通过Steger算法对一系列弧形、随机、间断、齿形光条提取光条纹中心点并利用最小二乘法拟合获取光条纹中心线,将以上四种条纹中心线图像作为模型训练样本,训练BP神经网络。训练后的网络模型对各种复杂光条纹中心提取误差均值小于0.02 pixel,算法平均用时仅为文[120]的0.27%,克服了灰度重心法和Steger算法的缺点。

    王胜春[46]等提出了一种基于分区域多模板匹配的光条纹中心提取算法。先对图像提取结构光条纹ROI,提高光条纹在图像中的比重。根据光条纹的灰度分布和梯度方向等特征利用ENet神经网络将条纹分割为多个区域如图8所示。传统计算条纹法线的方法是对图像全局进行梯度计算,耗时巨大。针对这一问题该算法首先通过基于梯度直方图统计的区域划分方法,确定每个分割出的光条纹子区域的法线主方向。每个条纹子区域与其对应的方向模板在其法线方向上进行互相关运算[47],初步提取光条纹中心点。以初始中心点为基点,利用灰度重心法沿着该点所在的子区域法线方向提取光条亚像素中心点。该算法采用ENet模型代替传统的SegNet图像分割模型,在保证分割效果情况下,运算速度提升了18倍,浮点计算量减少至传统模型的1/76,参数设置减少至1/80。克服了噪声对光条中心提取的干扰,提升算法的提取精度。

    图8 线结构光光条区段划分[46]

    5.总结与展望

    随着三维重建领域的快速发展,线结构光扫描技术逐渐成熟,结合不同的工业生产需求取得了很多创新性成果。本文综述了线结构光中心提取技术的三个不同发展阶段。先介绍了各种传统的结构光中心提取技术并指明算法缺陷。针对传统算法提取精度差,运算量过大,易受外部环境噪声干扰等缺陷以及不同的应用场景,总结了基于不同传统算法组合的一系列改进算法。除此之外,分析了神经网络结合线结构光中心提取技术的应用及效果。本文对线结构光中心提取技术的发展提出如下展望:

    1. 生产更高质量的线激光器,避免出现光条纹截面宽度不一致的现象。光条纹截面灰度分布更接近高斯分布的线结构光和亚微米级的激光器也是提升条纹中心提取技术的精度关键因素。

    2. 本文提到的基于神经网络的光条纹中心提取算法可以达到很高的精度。为提高算法鲁棒性使其适应各种应用场景,扩充现有的数据集并添加具有一定噪声的随机光条图像是一种很好的方法。由于深度学习模型的网络结构较为复杂,提升算法速度是需要解决的关键问题。

    参考文献

    [1] Shuang Y, Baoyuan C, Lei Z, et al. Encoded lightimage active feature matching approach in binocular stereo vision[C]. Internationalforum on strategic technology, 2016: 406-409.

    [2] Tong S, Xu XG, Yi C T, et al. A survey of 3D reconstructiontechnology based on vision[J]. Application Research of Computers. 2011, 28(7):411-2417.

    佟帅, 徐晓刚, 易成涛, 等. 基于视觉的三维重建技术综述[J]. 计算机应用研究, 2011, 28(7): 411-417.

    [3] Lin J Y, Huang C B, L B, et al. Laser line scanning technologybased on binocular stereo vision[J]. Machine Design and ManufacturingEngineering, 2011, (8): 200-202.

    林俊义, 黄常标, 刘斌, 等. 一种基于双目立体视觉的激光线扫描技术[J]. 机械设计与制造, 2011, (8): 200-202.

    [4]  Zhu S P, Qiang X F. A survey of 3D coordinatevision measurement methods for workpiece feature points[J]. Optics andPrecision Engineering, 2000, 8(2): 192-197.

    祝世平, 强锡富. 工件特征点三维坐标视觉测量方法综述[J]. 光学精密工程, 2000, 8(2): 192-197.

    [5]  Jia Z Y, Fan C N, Liu W, et al. Extraction of light stripe centerof middle matching point in binocular vision measurement[J]. Optics andPrecision Engineering, 2016, 24(7): 1582-1591.

    贾振元, 樊超楠, 刘巍, 等. 双目视觉测量中等匹配点的光条中心提取[J]. 光学精密工程, 2016, 24(7): 1582-1591.

    [6]  Yang J H, Yang X R, Cheng S Y, et al. A survey of the centerextraction of light stripe in 3D vision measurement of line structured light[J].Journal ofGuangdong University of Technology, 2014, (1): 74-78.

    杨建华, 杨雪荣, 成思源, 等. 线结构光三维视觉测量中光条纹中心提取综述[J]. 广东工业大学学报, 2014, (1): 74-78. 

    [7]  Wu Q Y, Su X Y, Li J Z, et al. A new algorithm forextracting the center of light band of line structured light[J]. Journal of Sichuan University(Natural Science Edition), 2007, 39(4): 151-155.

    吴庆阳, 苏显渝, 李景镇, 等. 一种新的线结构光光带中心提取算法[J]. 四川大学学报(工程科学版), 2007, 39(4): 151-155. 

    [8] PERONA P, MALIK J. Scale-space and edge detection using anisotropicdiffusion[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,1990, 12(7) : 629-639.

    [9] Yang W. Research on the method of extracting the center of structuredlight stripe[D]. Harbin: Harbin Institute of Technology, 2009.

    杨尉. 结构光光条中心提取方法研究[D]. 黑龙江: 哈尔滨工业大学, 2009. 

    [10] Xu N. Research on imageprocessing method of line structured light stripe[D]. Harbin: HarbinEngineering University, 2007.

    许宁. 线结构光光条图像处理方法研究[D]. 黑龙江: 哈尔滨工程大学, 2007. 

    [11] Li Y H, Zhou J B, Liu L J.Research progress of line structured light measurement technology[J]. Journalof Hebei                                      University of Science and Technology, 2018, 39(2): 115-124.

    李玥华, 周京博, 刘利剑. 线结构光测量技术研究进展[J]. 河北科技大学学报, 2018, 39(2): 115-124. 

    [12] JIA Q Q, WANG B X, Luo X Z.Extraction of central positions of light stripe in sub-pixel in 3D surfacemeasurement based on light ping method[J]. Optics and PrecisionEngineering. 2010, 18(2): 390-396.

    贾倩倩, 王伯雄, 罗秀芝. 光切法形貌测量中光条中心的亚像素提取[J]. 光学精密工程,  2010, 18(02):390-396.

    [13] Izquierdo M A, Sanchez M T,Ibanez A, et al. Sub-pixel measurement of 3D surfaces by laserscanning[J]. Sensors and Actuators A-physical, 1999, 76(1): 1-8.

    [14] He J J, Zhang G J, Research onthe method of strip image processing in structured light 3D visiondetection[J]. Journal  of BeijingUniversity of Aeronautics and Astronautics, 2003, 29(7): 593-597.

    贺俊吉, 张广军. 结构光三维视觉检测中光条图像处理方法研究[J]. 北京航空航天大学学报, 2003, 29(7): 593-597. 

    [15] Lukas J, Fridrich J, Goljan M,et al. Detecting digital image forgeries using sensor pattern noise[C]. conferenceon security steganography and water marking of multimedia contents, 2006.

    [16] Cai H Y, Yu Y, Huang Z H, etal. A new method of extracting the center of interference fringes based oncurve fitting[J]. Journal ofOptoelectronics·Laser2006, 17(1):115-118.

    蔡怀宇, 于毅, 黄战华, 等. 一种基于曲线拟合提取干涉条纹中心点的新方法[J]. 光电子·激光, 2006, 17(1): 115-118. 

    [17] Hu B, Li D H, Jin G, et al.Detection method of stripe center of structured light based on directiontemplate[J]. Computer Engineering andApplications. 2002, 38(11): 59-60,109.

    胡斌, 李德华, 金刚, 等. 基于方向模板的结构光条纹中心检测方法[J]. 计算机工程与应用, 2002, 38(11): 59-60,109.

    [18] Li C M, Wang M M, Liu H Y, etal. Research on the accurate algorithm of extracting the center of linestructured light[J]. Machinery& Electronics,2017, 35(6): 29-31.

    李春明, 王萌萌, 刘海洋, 等. 精确的线结构光中心提取算法研究[J]. 机械与电子, 2017, 35(6): 29-31.

    [19] Jang Y F, Jang K Y, Lin J Y.Accurate sub-pixel extraction method of light stripe center in line structuredlight[J]. Laser & Optoelectronics Progress2015, 52(7): 177-183.

    江永付, 江开勇, 林俊义. 线结构光光条中心亚像素精确提取方法[J]. 激光与光电子学进展, 2015, 52(7): 177-183.

    [20] Steger C. An Unbiased Detectorof Curvilinear Structures[J]. IEEE Transactions on Pattern A nalysis andmachine Intelligence. 1998, 20(2): 113 -125.

    [21] Zhang X Y, Wang X Q, Bai F Z, etal. An algorithm for extracting the center of light band based on theimproved gray center of gravity method[J]. Laser & Infrared, 2016, 46(5): 622-626.

    张小艳, 王晓强, 白福忠, 等. 基于改进灰度重心法的光带中心提取算法[J]. 激光与红外, 2016, 46(5): 622-626.

    [22] Liu Z, Li S, Feng C.Extraction of laser stripe center based on cross correlation algorithm[J]. Chinese Journal of Lasers, 2013, 40(5): 197-202.

    刘振, 李声, 冯常. 基于互相关算法的激光条纹中心提取[J]. 中国激光, 2013, 40(5): 197-202.

     

    [23] Zhao B H, Wang B X, Zhang J, etal. The method of extracting the center of light strip on rough metalsurface[J]. Optics and Precision Engineering, 2011, 19(9):2138-2145.

    赵博华, 王伯雄, 张金, 等. 粗糙金属表面光条中心提取方法[J]. 光学精密工程, 2011, 19(9):2138-2145.

    [24] Xi J H, Bao H, Ren Y. Fastextraction algorithm of normal center of laser stripe[J]. Science andTechnology & Innovation,

    2018, (1):41-43.

    席剑辉, 包辉, 任艳. 激光条纹法向中心的快速提取算法研究[J]. 科技与创新, 2018, (1): 41-43.

    [25] Xing Wang S J, Deng H J, etal. A new filtering algorithm based on extremum and median[J]. Journalof Image and Graphics, 2001, (6): 533-536.

    刑藏菊, 王守觉, 邓浩江, 等. 一种基于极值中值的新型滤波算法[J]. 中国图象图形学报, 2001,(6): 533-536.

    [26] Zhao B, Ma G J. Research onsubpixel location of the center of linear laser stripe[J]. Electronic DesignEngineering, 2017, 25(24): 184-188, 193.

    赵彬, 马国军. 线激光条纹中心亚像素定位研究[J]. 电子设计工程, 2017, 25(24): 184-188,193.

    [27] Li H P, Li D H, Zhu Z, etal. Detection method of stripe center of structured light based on geneticalgorithm[J]. Optics and Precision Engineering, 2004, 12(1):82-87.

    李和平, 李德华, 朱洲, 等. 基于遗传算法的结构光条纹中心检测方法[J]. 光学精密工程, 2004, 12(1): 82-87. 

    [28] ZHANG Y J. Image Segmention[M].Beijing: Science Press, 2001.

    章毓晋. 图像分割[M]. 北京:科学出版社,2001.

    [29] FOGEL D B. An introduction tosimulated evolutionary optimization[J]. IEEE-NN, 1994, 5(1): 3-14.

    [30] Su X Q, Xiong X M. A fastalgorithm for extracting the center of line structured light[J]. Journal of Computer Applications. 2016, 36(1): 238-242.

    苏小勤, 熊显名. 快速线结构光中心提取算法[J]. 计算机应用, 2016, 36(1): 238-242.

    [31] Wang Z H, Zhang Z W. Themethod of extracting the fringe center of the adaptive direction template linestructure light[J]. Laser Journal, 2017, 38(1): 60-64.

    王泽浩, 张中炜. 自适应方向模板线结构光条纹中心提取方法[J]. 激光杂志. 2017, 38(1): 60-64.

    [32] Fang C. Research onsymmetrical line laser road rutting detection technology[D]. Xian: Chang'anUniversity, 2010.

    方翠. 对称式线激光路面车辙检测技术研究[D]. 西安: 长安大学, 2010.

    [33] Jin J, Li D H, Li H P. NewMethod for Obtaining the Center of Structured Light Stripe[J]. COMPUTERENGINEERING AND APPLICATIONS, 2006, 42(4): 42-44.

    金俊, 李德华, 李和平. 结构光三维获取系统条纹中心线检测[J]. 计算机工程与应用, 2006, 42(4):42-44.

    [34] Xin J Q, Wu Y B, Huang J.Research on the method of extracting the center line of high curvature laserstripe[J]. China Computer & Communication, 2018, (2): 39-40,46.

    辛军强, 吴远波, 黄劼. 大曲率激光条纹中心线提取方法研究[J]. 信息与电脑, 2018, (2):39-40,46.

    [35] Zhang Y, Zhang G J, Jiang J.Design and implementation of FPGA recursive logic structure of Stegeralgorithm[J]. Transducer and MicrosystemTechnologies. 2008, 27(9): 78-81.

    张远, 张广军, 江洁. Steger算法的FPGA递归逻辑结构设计与实现[J]. 传感器与微系统, 2008, 27(9):78-81.

    [36] Hu K, Zhou F Q. A fastsubpixel extraction method of stripe center line[J]. Electro-Optic Technology Application. 2005(06): 60-63.

    胡坤, 周富强. 一种条纹中心线快速亚像素提取方法[J]. 光电技术应用, 2005(06): 60-63.

    [37] Jia Y D. Machine Vision[M].Beijing: Science Press, 2000: 34-63.

    贾云得. 机器视觉[M]. 北京: 科学出版社, 2000: 34-63.

    [38] Cai H Y, Feng Z D, Huang Z H.A method of extracting stripe center of structured light based on principalcomponent analysis[J]. ChineseJournal of Lasers. 2015, 42(3):270-275.

    蔡怀宇,冯召东,黄战华. 基于主成分分析的结构光条纹中心提取方法[J]. 中国激光, 2015, 42(3): 270-275.

    [39] Pearson K. On lines and planesof closest fit to systems of points in space[J]. Philosophical Magazine,1901, 2(6): 559-572.

    [40] Abdi H, Williams L J. Principalcomponent analysis[J]. Wiley Interdisciplinary Reviews: ComputationalStatistics,2010,2(4):433-459.

    [41] Liu J, Liu L H. Extraction oflaser stripe center based on Hessian matrix and region growth[J]. Laser & Optoelectronics Progress,2019, 56(2): 105-110.

    刘剑, 刘丽华. 基于海森矩阵与区域增长的激光条纹中心提取[J]. 激光与光电子学进展, 2019, 56(2): 105-110.

    [42] Yue L, Guo X Q, Yu J. Researchon Self-adptive Extraction Method of Central Points in Complex Light Stripe[J].Science Technology and Engineering, 2016, 16(14): 236-239,244.

    岳龙, 郭喜庆, 余锦. 自适应复杂光条纹中心提取方法研究[J]. 科学技术与工程, 2016, 16(14):236-239,244.

    [43] Cheng X, Lin H, Li S. Researchon the algorithm of strip center extraction of automobile weld sealantstrip[J]. Journal of Applied Optics, 2019, 40(5): 823-828.

    程鑫, 凌鹤, 李硕. 汽车焊缝密封胶条的光条中心提取算法研究[J]. 应用光学, 2019, 40(5): 823-828.

    [44] KOKORIAN J,BUJA F, STAUFER U, etal. An optical in-plane displacement measurement technique withsub-nanometer accuracy based on curve-fitting[C]//2014 IEEE 27thInternational Conference on Micro Electro Mechanical Systems (MEMS 2014),January 26-30 2014, San Francisco, CA, USA. 2014: 580-583.

    [45] Li Y H, Liu P, Zhou J B, Ren YZ, Jin J Y. Extraction of structured light stripe center based on BP neuralnetwork[J]. Acta

    Optica Sinica, 2019, 39(12): 186-194.

    李玥华, 刘朋, 周京博, 任有志, 靳江艳. 基于BP神经网络的结构光光条中心提取[J]. 光学学报, 2019, 39(12):186-194.

    [46] Wang S C, Han Q, Wang H, etal. Extraction method of laser stripe center of rail profile in drivingenvironment[J]. Acta OpticaSinica, 2019, 39(2): 167-176.

    王胜春, 韩强, 王昊, 等. 行车环境下钢轨轮廓激光条纹中心的提取方法[J]. 光学学报, 2019, 39(2): 167-176. 

    [47] Chen N, Guo Y K, Zhang X Q.Extraction of stripe center of line structured light based on Hessianmatrix[J]. Digital Technology and Application, 2019, 37(3): 126-127.

    陈念, 郭阳宽, 张晓青. 基于Hessian矩阵的线结构光光条中心提取[J]. 数字技术与应用, 2019, 37(3): 126-127. 

    本文仅做学术分享,如有侵权,请联系删文。

    下载1

    在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

    下载2

    在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计汇总等。

    下载3

    在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

    重磅!3DCVer-学术论文写作投稿 交流群已成立

    扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

    同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

    一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

    ▲长按加微信群或投稿

    ▲长按关注公众号

    3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

    学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

     圈里有高质量教程资料、可答疑解惑、助你高效解决问题

    觉得有用,麻烦给个赞和在看~  

    展开全文
  • 为解决复杂环境下结构光光条中心提取方法的问题,笔者阅读了若干文献,写下这篇文章,希望对读者有所启发。 1.不同光照条件下提取光条中心 介绍一种基于相位一致性提取光条中心的方法。该方法的优点主要体现在可以...

    目录

    前言

    1.基于相位一致性提取光条中心

    2.基于图像多尺度分析提取光条中心

    2.1提取初始光条中心

    2.2多尺度光条中心提取

    2.2.1规范化算子。

    2.2.2提取光条中心坐标。

    3.融合传统方法提高鲁棒性提取光条中心

    3.1重心法+极值法

    3.1.1初步提取光条中心

    3.1.2提取光条中心

    3.1.3曲线拟合

    3.2重心法+轮廓跟踪算法

    4.总结

    参考文献


    前言

    为解决复杂环境下结构光光条中心提取方法的问题,笔者阅读了若干文献,写下这篇文章,希望对读者有所启发。

    1.基于相位一致性提取光条中心

    介绍一种基于相位一致性提取光条中心的方法。该方法的优点主要体现在可以在不同光照条件下保证较高精度。

    相位一致性的基本原理及应用问题_黑化咸鱼的博客-CSDN博客

    首先,如果有读者对相位一致性不太了解,可以阅读上面这篇文章。这里仅作简单介绍。

    相位一致性简介

    相位一致性的提出是基于科学家发现了人感觉图像的关键在于图像信号的相位大小。相位一致性模型是一种考虑相位信息的频率域图像增强方法,它具有局部对比度不变的特性,对光照变化不敏感,因而其能较为稳定地表达图像特征,特别在处理低对比度图像特征方面具有独特的优势,常用于边缘检测。

     已知二维图像相位一致性计算公式为:

    这里不详细解释各参量的含义,只需知道我们已知原始图像每一像素的灰度值,利用上式,选取合适系数后,可以得到对应像素的相位一致性。进一步,将整个图像的像素运算后,得到新图像的灰度值表示了相位一致性的高低,某处的相位一致性越高,代表图像的边缘特征越明显,从而增强了图像的边缘特征。

    图像经过增强后,再使用传统的基于灰度的算法提取结构光光条中心。比如采用精度较高的Steger算法。若读者对Steger算法不太了解,可以阅读下面这篇文章。

    利用Steger算法提取线条中心的基本原理_黑化咸鱼的博客-CSDN博客

    根据文献描述,在实验室环境下,使用长度为2000mm的标准件作为测量标准。不同视角下各个测量点得到的测量误差存在差异,其总标准差为4.56mm,关于测量距离的相对测量误差约为0.03%。

    2.基于图像多尺度分析提取光条中心

    介绍一种基于图像多尺度分析优化Steger算法的提取光条中心方法。在高反光的环境下,光条图像会出现亮度不均匀、光条宽度变化剧烈的情况,该方法的优点在于可以在该环境下保持精度。

    首先,在Steger算法中,图像通过高斯卷积计算图像中每个像素的Hessian矩阵。σ是高斯函数的均方差,控制着平滑效果。σ 越大,平滑程度越好,但σ过大会造成图像特征过分模糊。而σ的选取与光条的宽度有关,且影响着光条中心的提取精度。该方法Steger线条提取方法的基础上进行优化,即根据光条不同位置处的宽度确定该处卷积核函数对应的均方差σ。

    2.1提取初始光条中心

    首先需要确定光条区域。考虑到处理的对象主要为复杂图像,首先采用多阈值法针对光条图像进行二值化处理。

    Otsu多阈值法简介

    多阈值法是胡颖等人于2010年提出的图像阈值分割算法。该算法对单阈值Otsu法进行改进,通过对图像多次分类、使用分离变量合并多余的分类、使用松弛变量搜索阈值等方法提高了运算速度。Otsu法基本思想是根据阈值把直方图分割成目标和背景2组,当分割的2组数据的类间方差最大时,得到最佳分割阈值。该方法对一些灰度直方图谷底并不明显的复杂图像,该方法并不稳定,多阈值法在改进后可以处理这种问题。

     经形态学图像处理中的条件膨胀算法,消除小的干扰区域和大面积背景干扰区域。采用骨骼细化的方法,针对每一个满足约束的连通分量,抽取其骨骼作为光条中心初始点(u_i,v_i),i=1,2,...,n.对于光条中心初始点点列中任意一点(u_i,v_i),在点列中选取邻近的2k个点(k为正整数,一般k=2)拟合直线,得到直线的归一化法线方向,作为光条法线方向初始值。沿光条中心初始点的法线方向对光条灰度图像横截面进行高斯拟合。如下图所示,光条灰度图像横截面的最大值为A,0.2A对应的2\omega为光条初始宽度。

    (a)光条初始中心点及法线方向的计算结果;(b)灰度高斯函数拟合

    2.2多尺度光条中心提取

    2.2.1规范化算子

    计算图像中像素的Hessian矩阵,针对高斯卷积核进行\gamma—坐标规范化 ,得到规范化算子C

    其中\left | \lambda \right |_{max}为Hessian矩阵的模最大特征值。设定光条中心点的判别条件为C大于某阈值。

    2.2.2提取光条中心坐标

    首先,进行多尺度卷积。卷积步骤如下:

    ① 定位以(u_i,v_i)为中心的邻域范围RON,RON中像素表示为p_j,j=1,2,...,N

    ②根据高斯核的大小,以p_j为中心,定位图像中相同大小的范围(ROC);

    ③ 高斯核的一、二阶偏导数与ROC进行单像素卷积得到p_j对应的 Hessian矩阵。其中单像素卷积指平移卷积模板的中心到像素点p_j处,计算模板与p_j的邻域加权和;

    ④ 由Hessian矩阵根据2.2.1所列公式计算得到p_j对应C_{i-1}C_iC_{i+1}

    多尺度卷积步骤:以(ui,vi)为中心定义 RON,
    以 RON 中像素pj为中心定义 ROC

    然后,确定最佳尺度因子。RON中的每个像 素 p_j所 对 应 的C_{i-1}C_iC_{i+1}构成一个C值集合,集合中最大C值对应的\sigma为最佳\sigma,记为\sigma _0。最大C值对应的像素点作为像素级光条中心的候选点,记为(u_0,v_0),像素(u_0,v_0)相对于\sigma _0的Hessian矩阵记为H_0H_0的模最大特征值对应的特征向量即为光条法线方向,用(n_u,n_v)表示。

    确定了最佳σ之后只需要进行Steger算法即可。

    从该文献实验结果来看,相比传统Steger算法,运算提高了速度,但差别不大。

    3.融合传统方法提高鲁棒性提取光条中心

    3.1重心法+极值法

    3.1.1初步提取光条中心

    首先对光条中心部分即感兴趣部分做线性增强,弱化灰度较暗部分,增强灰度较亮部分的对比度。

    由于实际光条中心附近有着与其接近甚至相同灰度级的光强分布,对整个图像逐行扫描极大值点,当一行出现多个极值点时,将这些极值点位置都先保留下来。这些极值点当中包含了光条的中心点、光条中心点附近的点以及噪声点。

    由于光条各个位置反射到采集传感器上的亮度并不相同,即各个位置光条中心的灰度并不完全相同。文献提出了8邻域比较去噪算法滤除噪声点。其基本思路是,通过比较某像素与周围8邻域像素的灰度差值来判断是否为噪声点。

    3.1.2提取光条中心

    由于光条中心位置的反射光强度都是最大的,中心位置两侧灰度逐渐下降。从而可以引入重心概念,对每行计算出灰度重心,将灰度重心像素所在位置的坐标作为光条中心的坐标。对光条图像逐行或者逐列进行计算可以获得亚像素级的部分光条中心点位置。

    3.1.3曲线拟合

    考虑到复杂的工业环境,从全局角度对整个范围内已经确定的光条中心像素点进行考虑,保证各个中心点之间平滑过渡,采用最小二乘拟合原理进行多项式拟合,从而得出整个光条中心的完整曲线。完整算法流程图如下图所示。

     根据文献描述,该算法在加入高斯白噪声和椒盐噪声的情况下效果良好,较形态学细化算法更优。 

    3.2重心法+轮廓跟踪算法

    该方法文献作者称其为快速重心法,基本原理为:规划搜索光条像素的路径,采用8邻域轮廓跟踪算法沿光条上边缘访问光条像素,并采用重心法实现光条中心的快速计算。在计算过程中对单个像素的噪声点或冗余点进行剔除,以实现抗噪性。

    由于光条图像灰度呈类高斯分布,该方法采用8邻域跟踪算法寻找光条。8邻域跟踪算法是一种边界跟踪算法。为某像素到其8邻域的方向编码(即链码),通过指定链码算法,在8邻域内搜索满足阈值的边界点,然后在该边界点上继续搜索下一个新边界点。

    边界点邻域内的像素位置。(a)链码表示(b)坐标表示

    按顺时针方向旋转搜索时边界的链码表示如图所示,实心直箭头为当前点的链码方向,虚线箭头为自当前点搜索下一个边界点时的链码起始方向。

    链码搜索

    从图像左上角开始,自上而下、自左向右地扫描图像,遇到满足阈值的像素停止扫描,用8邻域跟踪算法进行跟踪,记录满足阈值的像素,再用重心法计算提取光条中心。

    据文献描述,该方法相较重心法和Steger算法提速明显,对一定程度的噪声点有抗噪能力。

    4.总结

    算法预处理方法光条搜寻方法中心提取方法鲁棒性精度速度
    基于相位一致性算法相位一致性未提及Steger算法适用光照条件变化的情况,有抗噪能力亚像素级较慢
    基于图像多尺度分析算法形态学图像处理骨骼细化方法改进Steger算法适用于高反光的情况,采用多阈值法一定程度解决了灰度变化问题,但没有从根本上解决亚像素级较慢
    重心法+极值法对ROI线性增强极值法重心法依靠灰度去噪与提取,灰度不变情况下具有抗噪能力,对灰度变化适应性存疑亚像素级速度较快
    重心法+轮廓跟踪法未提及8邻域跟踪算法重心法算法中所设阈值与灰度有关,灰度不变有一定抗噪性,对灰度变化适应性存疑亚像素级速度较快

    参考文献

    [1]张旭苹, 汪家其, 张益昕,等. 大尺度三维几何尺寸立体视觉测量系统实现[J]. 光学学报, 2012, 32(003):140-147.

    [2]胡颖,崔伟峰.Otsu多阈值分割算法的研究[J].郑州轻工业学院学报(自然科学版),2010,25(02):79-81.

    [3]李凤娇,李小菁,刘震.基于多尺度分析的激光光条中心点坐标提取方法[J].光学学报,2014,34(11):111-116.

    [4]刘枝梅,邓文怡,娄小平. 结构光测量系统中光条中心的提取算法[J]. 北京机械工业学院学报(综合版),2009,24(1):42-45. DOI:10.3969/j.issn.1674-6864.2009.01.011.

    [5]张小艳, 王晓强, 白福忠,等. 基于改进灰度重心法的光带中心提取算法[J]. 激光与红外, 2016, 46(005):622-626.

    [6]李伟明,彭国,高兴宇,丁畅.线激光光条中心快速提取算法[J].中国激光,2020,47(03):192-199.

    展开全文
  • 需将图片中的激光线的中心线坐标提取出来并绘制激光中心线图形。因为是Matlab课程的训练研究大作业,所以全文代码为Matlab,希望可以为相似作业的非专业同学提供一些帮助。 文章目录 1.问题分析 2.研究思路...

            本文是基于给定的两张多线激光图片,如下图所示。需将图片中的激光线的中心线坐标提取出来并绘制激光中心线图形。因为是Matlab课程训练研究大作业,所以全文代码为Matlab,希望可以为相似作业的非专业同学提供一些帮助。

    文章目录

    1.问题分析

     2.研究思路及关键代码

    2.1图片一部分

    2.1.1二值化处理

     2.1.2 重心法提取中心线

    2.1.3 图像叠加

     2.2 图像二部分

    2.2.1 分区二值化处理

     2.2.2 光斑处理

     2.2.3 提取中心线

     3.总结及整体代码

    3.1 总结

    3.2 整体代码

    3.2.1 图片一

    3.2.2 图片二

    3.3 参考链接


    1.问题分析

            由于是给定图片,数量不是很多,因此可以对每个图像单独分析,这也是本篇文章的局限性。在拿到图像时,如果懂ps的,可以先调大整体图像的亮度,可以看到一些原本图像显示并不清楚的地方,例如在图二中,原图中右下部分是没有激光线的,但是在调亮后确有,这是在交大作业的前一天晚上发现的,因此大家都没有再改的了。

            第一张图中,其线条相对简单,激光线基本垂直于水平线,没有较大的噪点,因此可以先二值化处理图形,再利用重心法提取中心线,可以实现像素级提取激光中心线。

            第二张图中,可以发现激光线有较大的倾斜角,且亮度不一,并有较大的光斑对图像造成干扰,因此提取较第一张图更加复杂一些。可以先对图像进行区域二值化处理,再去除光斑的影响,最后提取激光条纹中心线。

     2.研究思路及关键代码

    2.1图片一部分

    2.1.1二值化处理

            遍历图一每个像素点,经过多次调试后设定二值化的阈值为60,当图片的灰度值小于60是置为0,否则置为255,得到处理后的图。

    for i=1:a
        for j=1:b
            if I(i,j)<60
                I(i,j)=0;
            else
                I(i,j)=255;
            end
        end
    end

     

     2.1.2 重心法提取中心线

            从图中任取出一条水平线,读取其处理后的灰度值如下图。

             可以发现,每个峰值区即为激光线,因此提取每段峰值区的中点即可提取其中心线,再遍历每条水平线即可。

        w=1; %字母含义为某排识别出的中心点横坐标的序号
        for i=1:a
            for j=1:b
                if I(i,j)==255 %识别出某条激光线的第一个位置坐标
                    k=j;
                    while I(i,k)==255 %判断该条激光线的最后一个位置坐标
                        k=k+1;
                        if k>=b;
                            break;
                        end
                    end
                    s(w)=ceil((k-1+j)/2); %通过首尾位置计算中心点坐标存入数组中
                    w=w+1;
                end
                I(i,j)=0; %抹除图像所有亮点
            end
            I(i,s)=255; %赋给中心点255
            w=1;
            s=0;
        end

    2.1.3 图像叠加

            再与原图叠加即可验证其提取效果。由于需要用彩色图来区分,因此需把灰度图转化成RGB图像,灰度图是一个0-255的数来显示的,而RGB图是(R,G,B)三个0-255的数来描述,因此涉及到图像的转化部分。代码和最终图像如下。

    for i=1:a 
        for j=1:b
            q=I0(i,j); %读取原图
            II(i,j,1)=q;
            II(i,j,2)=q;
            II(i,j,3)=q;
            if I(i,j)==255 %读取提取中心线的图
                II(i,j-2,1)=255; %中心线显示为红色
                II(i,j-2,2)=0;
                II(i,j-2,3)=0;
            end
        end
    end

     2.2 图像二部分

    2.2.1 分区二值化处理

            可以明显观察到左上角的条纹的亮度较小,且有斜向右下的亮宽条纹对激光条纹有较大的影响。因此,对图像进行分区二值化以得到更好的预处理效果。

            利用四条直线将上图分成5个部分。

    对于1号和3号部分,其激光条纹亮度差异不大,因此可以设置较大的阈值,设定像素的灰度值小于160时置为0,否则置为255。

    对于2号和5号部分,其中激光条纹亮度差异较大,应设置较小的阈值。设定像素的灰度值小于45时置为0,否则置为255。

    对于4号部分,由于其干扰线亮度大,激光条纹线亮度也大,因此设定阈值应更大以滤去干扰线部分。设定像素的灰度值小于230时置为0,否则置为255。

            处理后的图如下。

     2.2.2 光斑处理

            对图像进行膨胀腐蚀处理,可以提取图中的圆。

    se=strel('disk',8); %设置圆半径
    fc=imerode(I,se);   %图像腐蚀
    fc=imdilate(fc,se);   %图像膨胀

     

     将上图反值后,与原图像叠加,得到去除圆的图像,再经过降噪处理,得到待提取中心线的图像

    I=bwareaopen(I,10); %降噪处理

     

            将之前提取到的圆的图像与上图进行相交判断处理,识别圆是否与直线相交。首先使用canny算子提取圆的边缘,再判断每个边缘像素点周围5个点的位置是否于待提取直线相交。在找到相交边缘后,再把对应圆找到。以每个圆内点为圆心,50为半径,判断其是否与边缘点相交,得到相交边缘所在圆。最后再将其与待提取中心线的图像部分叠加,得到最后的待提取中心线部分

    fc1=edge(fc,'canny'); %用Canny算子进行边缘检测
    
    for i=1:a %检测边缘是否与直线相交
        for j=1:b-5
            if fc1(i,j)==1
                s=0;
                for m=1:5
                    if I(i-m,j-m)==1||I(i+m,j-m)==1||I(i-m,j+m)==1||I(i+m,j+m)==1
                        s=1;
                    end
                end
                if s==0
                    fc1(i,j)=0;
                end
            end
        end
    end
    
    for i=1:a %找到相交边缘圆
        for j=1:b
            if fc(i,j)==255
                s=0;
                radius=50;
                for m=max(1,i-radius):min(a,i+radius)
                    for n=max(1,j-radius):min(b,j+radius)
                        if ((m-i)^2+(n-j)^2<=radius^2)&&(fc1(m,n)==1)
                            s=1;
                            break;
                        end
                    end
                end
                if s==0
                    fc(i,j)=0;
                end
            end
        end
    end
    
    for i=1:a %合并相交圆与待提取中心线
        for j=1:b
            if fc(i,j)==255
                I(i,j)=255;
            end
        end
    end

     2.2.3 提取中心线

    采用bwmorph函数,提取激光条纹的骨架线作为其中心线。

    I = bwmorph(I,'thin',100);

     

    再将其与原图叠加,得到最终图。

     3.总结及整体代码

    3.1 总结

            在对图片一进行处理时,二分阈值的选取可能不适用于部分区域,导致提取出来的中心线有部分偏移。当然也可以不预先进行二值化,从而采用基于灰度的重心法,对于噪声小的图像可能适用,但是噪声过大就会提取出噪声了。

            在对第二张图片处理时,和第一张图相比,最大的不同便是整个图像倾斜、激光线明暗变化较大,且有明显的噪点,给二值化处理带来困难,分区二值化相当于是一个妥协,也是不能通用的阻碍。在查找资料时,其实还有更专业的处理方法,opencv已提供有现成可用的api,但是本文要求为Matlab代码,因此仅仅为同为需求的同学提供一些帮助,也不失为应付作业的一种方法罢。

    3.2 整体代码

    3.2.1 图片一

    clc ; clear all;
    I = imread('图片一.bmp');
    [a,b]=size(I);
    figure(1);
    imshow(I);
    title('原图');
    I0=I;%保存一份原图,用于后面叠加显示
    
    %******二值化图像**********
    for i=1:a
        for j=1:b
            if I(i,j)<60
                I(i,j)=0;
            else
                I(i,j)=255;
            end
        end
    end
    figure(2);
    imshow(I);
    title('二值化的图');
    imwrite(I,'二值化的图.tif');
    
    %******重心法提取中心线**********
    q=100;
    while q>0
        w=1;
        for i=1:a
            for j=1:b
                if I(i,j)==255
                    k=j;
                    while I(i,k)==255
                        k=k+1;
                        if k>=b;
                            break;
                        end
                    end
                    s(w)=ceil((k-1+j)/2);
                    w=w+1;
                end
                I(i,j)=0;
            end
            I(i,s)=255;
            w=1;
            s=0;
        end
        q=q-1;
    end
    
    for i=1:a %中心线与原图叠加
        for j=1:b
            q=I0(i,j);
            II(i,j,1)=q;
            II(i,j,2)=q;
            II(i,j,3)=q;
            if I(i,j)==255
                II(i,j-2,1)=255;
                II(i,j-2,2)=0;
                II(i,j-2,3)=0;
            end
        end
    end
    
    figure(3);
    imshow(II);
    title('最终图1');
    imwrite(II,'最终图1.tif');
    

    3.2.2 图片二

    clc ; clear all;
    I = imread('图片二.bmp');
    [a,b]=size(I);
    figure(1);
    imshow(I);
    title('原图');
    pif=I;
    
    %******分区二值化图像**********
    for i=1:a
        for j=1:b
            if(((i/320+j/128)>1)&&((i/800+j/400<1))||((i/1900+j/1100>1)))%四条直线分区
                
                if I(i,j)<45
                    I(i,j)=0;
                else
                    I(i,j)=255;
                end
            else if ((i/800+j/400>1))&&((i/1900+j/1100<1)&&(3*i-5*j>200))
                    if I(i,j)<230
                        I(i,j)=0;
                    else
                        I(i,j)=255;
                    end
                else
                    if I(i,j)<160 %设置不同的阈值过滤图像
                        I(i,j)=0;
                    else
                        I(i,j)=255;
                    end
                end
            end
        end
    end
    
    figure(2);
    imshow(I);
    title('二值化的图');
    imwrite(I,'二值化的图.bmp');
    
    %******处理图中的圆形噪点**********
    se=strel('disk',8);
    fc=imerode(I,se);   %图像腐蚀
    fc=imdilate(fc,se);   %图像膨胀
    figure(3);
    imshow(fc);
    title('原图处理后的圆点图');
    imwrite(fc,'原图处理后的圆点图.bmp');
    
    for i=1:a
        for j=1:b
            if fc(i,j)==255
                I(i,j)=0; %将白色圆形置为黑色
            end
        end
    end
    
    figure(4);
    imshow(I);
    title('去除圆形的图');
    imwrite(I,'去除圆形的图.bmp');
    
    %******去除图像中的剩余噪点**********
    I=bwareaopen(I,10);
    figure(5);
    imshow(I);
    title('去噪图');
    imwrite(I,'去噪图.bmp');
    
    %******检测与直线相交的圆边缘**********
    fc1=edge(fc,'canny'); %用Canny算子进行边缘检测
    figure(6);
    imshow(fc1);
    title('圆边缘图');
    imwrite(fc1,'圆边缘图.bmp');
    
    %检测边缘是否与直线相交
    for i=1:a
        for j=1:b-5
            if fc1(i,j)==1
                s=0;
                for m=1:5
                    if I(i-m,j-m)==1||I(i+m,j-m)==1||I(i-m,j+m)==1||I(i+m,j+m)==1
                        s=1;
                    end
                end
                if s==0
                    fc1(i,j)=0;
                end
            end
        end
    end
    figure(7);
    imshow(fc1);
    title('相交圆边缘');
    imwrite(fc1,'相交圆边缘图.bmp');
    
    %******找到相交边缘圆**********
    for i=1:a
        for j=1:b
            if fc(i,j)==255
                s=0;
                radius=50;
                for m=max(1,i-radius):min(a,i+radius)
                    for n=max(1,j-radius):min(b,j+radius)
                        if ((m-i)^2+(n-j)^2<=radius^2)&&(fc1(m,n)==1)
                            s=1;
                            break;
                        end
                    end
                end
                if s==0
                    fc(i,j)=0;
                end
            end
        end
    end
    
    figure(8);
    imshow(fc);
    title('相交圆');
    imwrite(fc,'相交圆图.bmp');
    
    %******合并相交圆与线**********
    for i=1:a
        for j=1:b
            if fc(i,j)==255
                I(i,j)=255;
            end
        end
    end
    figure(9);
    imshow(I);
    title('需要找中心线的部分');
    imwrite(I,'需要找中心线的部分.bmp');
    
    %******提取中心线**********
    I = bwmorph(I,'thin',100);%生成的I为逻辑数
    figure(10);
    imshow(I);
    title('提取的中心线');
    imwrite(I,'提取的中心线.bmp');
    
    %******合并中心线与原图,中心线置红**********
    for i=1:a
        for j=1:b
            q=pif(i,j);
            pifs(i,j,1)=q;
            pifs(i,j,2)=q;
            pifs(i,j,3)=q;
            if  I(i,j)==1
                pifs(i,j,1)=255;
                pifs(i,j,2)=0;
                pifs(i,j,3)=0;
            end
        end
    end
    
    figure(11);
    imshow(pifs);
    title('最终图');
    imwrite(pifs,'最终图.bmp');
    

    3.3 参考链接

    激光光条中心的提取_九磅十五便士_的博客-CSDN博客_光条中心提取

    展开全文
  • 对信号进行 特征提取 一 dee是什么乐器声音我想能直接用 MATLAB 进行 特征 值的 提取 吗? 手机收录乐器声音的设备1、用audioread('');函数读取电脑中的 音频 文件,参数是 音频 文件的路径[sampledata,fs] = ...

    听声音变乐器案

    你在

    Matlab

    里查找关Audio的资料就可以找到相关的方法了.如读入声立文件,可以用auread函数.

    欢乐好声音 豪猪乐器[V,D]=eig(A)V,D分别是方阵A的

    特征

    向量和

    特征

    值。

    用声音模仿成乐器的声音明

    可以给些详细的命令吗?比如怎么调入一个

    声音

    文件用什么命令?要分析它的

    消除乐器声音软件下载案

    matlab

    读取avi电影(只能读一定压缩各式的avi电影)aviinfo('d:\j.avi'); %显示存在d盘的电影j.avi的信息mov=aviread('d:\j.avi'); %读入存在d盘的电影j.avimovie(mov);

    利用声音原理制作乐器案

    使用wavreadCreate a WAV file from the example file handel.mat,and read portions of the file back into

    MATLAB

    .% Create WAV file in current folder.load handel.mat hfile =

    怎么用手机内录乐器声音明

    如何以

    MATLAB

    或C语言编程实现相关

    特征提取

    算法

    中国乐器声音大全集明

    例如已经读入了avi格式的视频,如何用

    matlab

    提取

    声音

    听声音找乐器 反思喊个学笛子的人帮你吹出来不就得了,哈哈~~~再看看别人怎么说的。

    弦乐器改变发声音调的原理智能小程序[]用Adobe Audition可以

    提取

    一首歌的伴奏。 1.打开Audition 2.打开立体声的无损

    音频

    文件 3.在波形

    flute乐器的声音mp3你的信号序列长度,对应高斯白噪声序列取相同的长度,就可以直接相加的。在实际 然后使用小波分解,去噪,然后对信号重构就可以去除噪声。对信号进行

    特征提取

    dee是什么乐器声音我想能直接用

    MATLAB

    进行

    特征

    值的

    提取

    吗?

    手机收录乐器声音的设备1、用audioread('');函数读取电脑中的

    音频

    文件,参数是

    音频

    文件的路径[sampledata,fs] = audioread('f:1.mp3');sampledata保存

    音频

    信号数据,fs是

    音频

    采样率,mp3

    用手拍发出声音的乐器明

    请应该把

    声音

    放在什么位置才能用

    Matlab

    读取出来呢?~

    梦到乐器声音太大用什么软件可以将一首音乐中的某一种

    乐器

    声音

    提取

    出来?比如一首伴奏中

    乐器贝斯的声音案

    程序如下MusicSource = wavread('1');Music_source = MusicSource';N = 256; % title('原始

    语音

    帧vs.预测后

    语音

    帧')subplot(2,1,2),plot(err);grid;title('误差');pause%

    发出布谷声音的乐器案

    原理 用基

    音频

    率来作为男女生识别的标准即可,因为一般男生的基

    音频

    率都是小于200Hz的,女生则大于200Hz。命令 wavread, FFT 文件位置 用cd命令查一下你当

    什么乐器是哗哗的声音用何种软件,怎样完美

    提取

    出笛子的

    声音

    展开全文
  • } } } } // 提取连通区域,并剔除小面积联通区域 void Delete_smallregions(Mat & pSrc, Mat & pDst) { vector> contours; //二值图像轮廓的容器 vector hierarchy; //4个int向量,分别表示后、前、父、子的索引...
  • 利用matlab提取中心线

    2021-11-12 12:00:19
    先看看代码运行结果(红色部分表示河流中心线,黑色表示河流两岸!): 注: ... 提取中心线 2. 两侧目标点对应匹配 解决方法: 1. 利用三角网格方法计算中心线(提示:三角形侧边中点连线...
  • Steger算法是一种精度较高的直线提取算法,可以亚像素级提取图像中线条的中心。笔者在学习过程中因没有在网络上找到较为通俗的原理解释,因此写下这篇文章,希望能让读者快速了解该算法的原理。笔者学术水平有限,...
  • 基于C++和OpenCV的中心线提取算法加权平方灰度重心法介绍算法演示 加权平方灰度重心法介绍 详情见 https://blog.csdn.net/u010518385/article/details/101015604 算法演示 下面展示 函数-输入图像和阈值,输出点。...
  • 本博文主要介绍如何评价中心线提取算法的指标,该类指标主要有三种:完整性、正确性以及质量。完整性是召回率(recall)的一种变体,在所提取中心线新建一定长度的缓冲区,真值(ground truth)与之重叠部分的长度...
  • Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)算法背景介绍Hessian 矩阵与泰勒多项式关于求t导数与中心点、亚像素点高斯函数作用文献 算法背景介绍 在线结构光视觉传感器中,由线激光器发射出的线...
  • 多个角度扫描同一个物体时,通常会在物体上或者其他固定支架上...在三维重建之前,需要在二维图像上提取标志点中心坐标,本文讲解一种利用梯度提取粗轮廓,然后进行亚像素获取,连接轮廓,椭圆拟合得到中心点的方法。
  • GIS思维打算开一个新系列《GIS技巧100例》,主要会发布在移动端,每个例子大概在5分钟左右...02 ArcGIS提取道路中心线 02 ArcGIS提取道路中心线 这次不配文字解说,我们直接上视频。 GIS技巧100例-GIS思维...
  • 结构光光条中心提取算法2010年 8月 沈阳航空工业学院学报 A ug. 2010第 27卷 第 4期 Journa l o f Shenyang Institute of A e ronautica l Eng ineering V o.l 27 N o. 4文章编号: ...
  • 【技术实现步骤摘要】一种光斑提取及其质心确定的方法本专利技术涉及一种光斑提取及其质心确定的方法,属于激光提取和定位技术介绍国内外有不少对光斑提取的详细分析和讨论,但都大部分侧重于对其中某种误差的讨论。...
  • 一种提取深度图像中人体细化中心线的方法【技术领域】[0001] 本发明涉及图像处理技术领域,特别是涉及一种提取深度图像中人体细化中心线 的方法。【背景技术】[0002] 随着计算机技术的迅猛发展,"体感"操作技术作为...
  • Halcon中心线的提取

    2021-02-02 15:41:18
    中心线的提取中心线的提取中心线的提取
  • · 单幅干涉条纹图相位提取新算法 郭 媛,陈小天,毛 琦,赵丽娜 (齐齐哈尔大学计算机与控制工程学院,黑龙江 齐齐哈尔 161006) 摘 要:散斑干涉测量中,得到的干涉条纹图必须通过提取当中的真实相位才...
  • 线结构光扫描激光条纹提取-opencv+python功能说明从图像/视频的HSV信息中过滤出光条纹从视频中提取激光条纹 功能说明 将拍摄的激光扫描视频中的激光条纹提取出来,方便后续的点云信息计算。 从图像/视频的HSV信息中...
  • 定义:区域中心的线称为中心线。有些情况下需要求取中心线,比如道路中心。 算子:Lines_gauss () 中心线 *读取图像 read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-18.11-Progress/examples/...
  • 本发明涉及一种圆阵列标定板特征点提取方法,属于摄像机标定技术领域。背景技术:摄像机标定的途径是根据摄像机模型,由已知特征点的图像坐标和世界坐标求解摄像机的模型参数,特征点提取的精度直接决定标定结果,...
  • ArcGIS里面虽然也有一些工具可以辅助一下处理,例如在制图工具箱里面有一个提取中心线的工具,但这个工具的作用是通过道路边线(双线)提取中心线。也有人说ArcGIS里面同样是提供面转线工具,先用工具转一道再提取不...
  • Matlab 提取二值图像中心线 (Matlab extract centreline of binary image)close all; clear all; clc;binaryImage = imread('0.png');% SkeletonizeskeletonizedImage = bwmorph(binaryImage, 'skel', inf);% ...
  • 原标题:ArcGIS|利用到路面提取道路中心线的方法利用到路面提取道路中心线的方法在利用GIS制图时,需要经常跟数据打交道。很多初级的制图人员都存在一种惯性思路,以为数据精度越高,出图的效果就越好。这是错误的...
  • ******ArcGIS方法-利用到路面提取道路中心线的方法利用到路面提取道路中心线的方法在利用GIS制图时,需要经常跟数据打交道。很多初级的制图人员都存在一种惯性思路,以为数据精度越高,出图的效果就越好。这是错误的...
  • Arcgis提取道路中心线的方法 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的...
  • 并将其轮廓获取,求出轮廓的大小面积,并求拟合椭圆,从而得出光斑的位置和中心,具体实现代码和效果如下: #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/calib3d/calib3d....
  • Matlab矩阵提取

    2021-04-19 04:08:39
    满意答案c1957571472013.04.18采纳率:46%等级:11已帮助:3800人补充一个简单点的:编写一个函数文件,即.m文件,然后运行,代码如下:function chazhao()a=[1984 9 11 141984 9 11 201985 2 15 01985 2 15 121985 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,750
精华内容 56,300
关键字:

中心提取