CN109300132A - 基于c++语言平台的干涉条纹检测方法 - Google Patents

基于c++语言平台的干涉条纹检测方法 Download PDF

Info

Publication number
CN109300132A
CN109300132A CN201811250225.7A CN201811250225A CN109300132A CN 109300132 A CN109300132 A CN 109300132A CN 201811250225 A CN201811250225 A CN 201811250225A CN 109300132 A CN109300132 A CN 109300132A
Authority
CN
China
Prior art keywords
interference fringe
image
plus
skeleton
interference
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811250225.7A
Other languages
English (en)
Inventor
梅启升
王敏
梁秀玲
周群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Normal University
Original Assignee
Fujian Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Normal University filed Critical Fujian Normal University
Priority to CN201811250225.7A priority Critical patent/CN109300132A/zh
Publication of CN109300132A publication Critical patent/CN109300132A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • G06T5/30Erosion or dilatation, e.g. thinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Quality & Reliability (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及一种基于C++语言平台的干涉条纹检测方法,包括以下步骤:S1:采用OpenCV库函数读取待检测的干涉条纹图像;S2:通过对比度增强技术提升待检测的干涉条纹图像可读性;S3:对处理后的干涉条纹图像进行自适应二值化处理,将条纹进行区域划分;S4:对得到的二值化干涉条纹图像进行空洞填充处理,得到填充后的干涉条纹图像;S5:通过Zhang氏骨架提取算法和Rosen骨架提取算法结合,提高适应性;S6:基于干涉条纹骨架图像的特点分别进行去毛刺处理与断点连接处理,得到干净的干涉条纹骨架图像;S6:将干净的干涉条纹骨架图像重新进行级次标定,并加以颜色区别,完成干涉条纹图像的检测。本发明实现对具有各种噪声、低对比度的干涉条纹图像进行对干涉条纹标定。

Description

基于C++语言平台的干涉条纹检测方法
技术领域
本发明涉及涉及光学干涉图像检测领域,具体涉及基于C++语言平台的干涉条纹检测方法。
背景技术
在光学干涉图像检测领域中,光学面型复原技术、条纹级次标定、条纹提取技术都包含于干涉图像检测领域当中。对于干涉条纹图像的检测,传统技术方案为相移法,相移法的缺点是对图像要求度比较高,并且需要在每次记录图像时保证相同的、准确的位移量和稳定的光照强度,然而现在的设备大多数并不能满足这样苛刻的要求。
OpenCV(Open Source ComputerVision Library)是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV库中有很多基本的函数,这些函数能够简化C++语言的算法,使得图像处理算法更加容易实现。
发明内容
有鉴于此,本发明的目的在于提供一种基于C++语言平台的干涉条纹检测方法,解决现有干涉图像移相法需要高分辨率、低噪音的问题。
为实现上述目的,本发明采用如下技术方案:
一种基于C++语言平台的干涉条纹检测方法,包括以下步骤:
步骤S1:采用OpenCV库函数读取待检测的干涉条纹图像;
步骤S2:通过对比度增强技术提升待检测的干涉条纹图像可读性,得到处理后的干涉条纹图像;
步骤S3:对处理后的干涉条纹图像进行自适应二值化处理,将条纹进行区域划分,得到二值化干涉条纹图像;
步骤S4:对得到的二值化干涉条纹图像进行空洞填充处理,得到填充后的干涉条纹图像;
步骤S5:通过Zhang氏骨架提取算法和Rosen骨架提取算法结合,将填充的干涉条纹图像转换为干涉条纹骨架图像,提炼填充后的干涉条纹图像的有效信息;
步骤S6:基于干涉条纹骨架图像的特点分别进行去毛刺处理与断点连接处理,得到干净的干涉条纹骨架图像;
步骤S7:将干净的干涉条纹骨架图像重新进行级次标定,并加以颜色区别,完成对干涉条纹图像的检测。
进一步的,所述步骤S1采用CV::imread函数读取待检测的干涉条纹图像。
进一步的,所述对比度增强技术具体为:
根据EqualizeHist函数处理将图像进行直方图均衡化,提高干涉条纹图像的对比度,直方图均衡化的基础如下:
其中Ps(s)表示随机变量s的概率密度函数,;Pr(r)表示随机变量r的概率密度函数;采用r和s采用的准则为:
式中G为图像的灰度值分布,如8位图像分布对应的G为256,ri为原图像概率分布密度,表示对X进行向下取整,通过(3)式求出的值就是新的Ps(s)概率密度分。
进一步的,所述空洞填充处理采用阈值孔洞填充算法。
进一步的,所述步骤S6具体为:
步骤S61:将填充后的干涉条纹图像简化为局部毛刺图进行分析;
步骤S62:根据毛刺的特性,采用C++程序寻找毛刺与骨架的连接点、毛刺边缘点,及找到毛刺的坐标,并用8领域寻点法从毛刺边缘点开始遍历到连接点为止,将所有点保存到Vector类的Point数组当中,并将这些点的灰度值置为1,去除毛刺;
步骤S63:通过去毛刺处理后,将所有断点进行选定,通过匹配算法进行断点两两连接。
进一步的,所述步骤S7具体为:
步骤S71:将干净的干涉条纹骨架图的边界点作为特征点,利用OpenCV库与C++语言相结合,编写BwLabel函数,用于对干涉条纹骨架简单的从左至右的进行排序;
步骤S72:通过BwLabel函数处理的结果,对干涉条纹的级次标定。
本发明与现有技术相比具有以下有益效果:
1.本发明基于C++语言提供一种基于数字图像处理算法实现对低分辨率、噪声的干涉条纹图像的检测,克服了现有干涉图像移相法需要高分辨率、低噪音的问题
2、本发明对干涉条纹图像进行二值化时,采用滤波差分法,并对不同条纹粗细的地方采用不同窗口大小进行均值滤波减少条纹粗细对二值化的影响。
3、本发明可以对条纹进行正确且快速标定。
附图说明
图1是本发明待检测的干涉条纹原图像。
图2是本发明一实施例中直方图均衡化算法处理的图像结果。
图3是本发明一实施例中自适应二值化算法处理的图像结果。
图4是本发明一实施例中空洞填充算法处理的图像结果。
图5是本发明一实施例中用Zhang氏和Rosen骨架提取处理的结果图。
图6是本发明一实施例中用去毛刺与断点连接处理的结果图。
图7是本发明一实施例中对干涉条纹骨架进行标定。
图8是本发明一实施例中最终将干涉条纹进行颜色划分。
图9是本发明一实施例中干涉条纹检测算法实现流程图。
图10是本发明一实施例中干涉条纹滤波图。
图11是本发明一实施例中阈值填充孔洞算法效果图。
图12是本发明一实施例中毛刺简化图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
请参照图1,本发明提供一种基于C++语言平台的干涉条纹检测方法,包括以下步骤:
步骤S1:CV::imread函数将读取包含噪声的干涉条纹图像,根据《高等光学》的理论,包含噪声干涉条纹的光强分布可以表示为:
g(x,y)=I1(x,y)+I2(x,y)cos(φ)+I3(x,y) (1)
其中g(x,y)为包含噪声的干涉图像光强分布,I1(x,y)为干涉条纹的直流项,I2(x,y)为强度调制项,φ为简化的相位信息,I3(x,y)为图像噪声信息,该处的干涉条纹光强分布决定了第三步采用的滤波算法,该步骤读取的如图1所示;
步骤S2:根据EqualizeHist函数处理将图像进行直方图均衡化,提高干涉条纹图像的对比度,直方图均衡化的基础如下:
其中Ps(s)表示随机变量s的概率密度函数,;Pr(r)表示随机变量r的概率密度函数;采用r和s采用的准则为:
式中G为图像的灰度值分布,如8位图像分布对应的G为256,ri为原图像概率分布密度,表示对X进行向下取整,通过(3)式求出的值就是新的Ps(s)概率密度分布。求出的新概率密度分布也就是新8位灰度图像,该步骤直方图均衡化的结果如图2所示。
步骤S3:对图2进行自适应窗口滤波处理,该滤波处理模块的最大作用在于,降低图像中的椒盐、高斯噪声。自适应窗口模块的作用是基于干涉条纹的粗细不同采用不同大小的窗口去进行二值化处理,本实施例采用的方案是在粗、大条纹处采用大窗口,在细、小条纹处采用小窗口进行均值滤波处理。
窗口k大小定义如下:
(4)式中k为窗口大小,x、y表示图像中某点的横纵坐标,i,j表示整个图像的分辨率。本发明对于粗、大的干涉条纹采用大窗口均值滤波处理、细小的干涉条纹采用小窗口进行均值滤波处理,达到对不同形态的条纹都能准确的获取二值化图像。
通过利用自适应窗口模块对干涉条纹图像进行两次均值滤波分别得到一次滤波图、二次滤波图,将两次滤波图像进行差分处理。
滤波差分处理的理论基础如下所示:
其中,f为原图像,w为滤波器模板,Δ为差分处理。本实施例将含有噪声的干涉条纹图像进行两次均值滤波处理,并将两次滤波的结果进行差分处理,得到结果。基于该理论干涉条纹滤波多次滤波的效果图10所示:
根据图10可以看到二次滤波的对比度逐渐下降,将一次滤波和二次滤波进行差分处理,利用差分图对干涉条纹图像进行阈值二值化处理。将差分值大于零的点灰度值重新置为255,并且将差分值小于零的点灰度值重新置为0,公式如下:
该处的差分处理是基于(1)式中的干涉条纹特性,干涉条纹的光强分布为余弦函数的形式,对两次均值滤波差分的结果保留了干涉条纹的特性。最后得到干涉条纹二值化f2(x,y)如图3所示。
步骤S4:根据图三中的干涉条纹信息,采用阈值孔洞填充算法,基于图像的特征不采用漫水填充算法,是由于漫水填充算法对图像处理的盲目性较大。而本实施例采用的阈值填充孔洞算法能够有效控制填充孔洞的大小,以达到最好的图像填充效果。
阈值填充孔洞算法理论:I表示原图像,Ic表示原图像的补集,F表示边界上的点取反,内部的点全部置1的图,表示F图经过B结构元膨胀处理表示Ic作为模板对F进行测地膨胀后的结果,H表示填补后的效果图,步骤如图11(a)~(f)所示:
具体步骤如下:对需要处理的图像先进行边界处理,边界处理函数如下:
(7)中I(x,y)表示一副二值图像,F(x,y)表示一副标记图像。根据公式(5)可以得到图11(c),同时取原图像的补集Ic可以得到图11(b),利用标记图像F进行3*3SE(结构元)的侵蚀得到图11(d),将侵蚀图11(d)与图11(b)取交集得到图11(e),此处需要多次进行腐蚀操作,直到图11(e)不会改变为止,根据图11(e)取反,得到孔洞填充图像,随后根据图11(f)减去图11(a)得到孔的大小,根据孔的大小确定是否需要填充。根据以上理论,本发明基于OpenCV3库得以实现效果如图4所示。
步骤S5:基于Zhang氏骨架提取算法与Rosen骨架提取算法,将图4中的干涉条纹图像提取出对应的骨架如图5所示。
步骤S6:对干涉条纹骨架图进行分析,可以看出骨架图上有毛刺和断点两种缺陷。根据之前的自适应窗口滤波的原理,可以得出结论:毛刺的产生起源于滤波窗口不够大的原因,而断点产生的原因是滤波窗口不够小的原因。
将含有毛刺的干涉条纹骨架图像可以简化为图12所示的局部毛刺图进行分析,局部毛刺的特点在于毛刺与骨架相连、且毛刺居于图像的中心。通过毛刺特性,利用C++程序先寻找毛刺与骨架的连接点、毛刺边缘点,及找到图12中灰点的坐标,并用8领域寻点法从毛刺边缘点开始遍历到连接点为止,将所有点保存到Vector类的Point数组当中,并将这些点的灰度值置为1;
通过去毛刺处理后,将所有断点进行选定,通过匹配算法进行断点两两连接。匹配算法详细说明如下:第一,扫描图像排除边界点,通过断点特征,选取真正的断点。第二,选取一个断点作为基点,计算该点与其他所有断点的连线。第三,将该点的曲率计算得出与其他断点连线的斜率作比较,将最为接近值的点作为断点匹配点。第四,其余断点也通过相同方案连接。最后通过去毛刺、断点连接处理得到图6。
步骤S7:将干涉条纹骨架图的边界点作为特征点,利用OpenCV库与C++语言相结合,编写BwLabel函数,该函数的目的在于对干涉条纹骨架简单的从左至右的进行排序。该函数的编写过程类似于第四步的孔洞填充算法,选取图像的顶层作为基准,将每个干涉条纹的点进行独立筛选并将其分别保存到Vector类Point的存储空间内。通过BwLabel函数处理的结果,对干涉条纹的级次标定,选取的方案如下:第一,顺时针将特征点进行排序。第二,把将相邻、同一级次的第一个特征点作为第一级次特征点。第三,将该特征点的条纹的灰度值全部标定为1,然后根据干涉条纹的特征对剩下的条纹进行标定。根据上述方案的算法实现结果如图8所示。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (6)

1.一种基于C++语言平台的干涉条纹检测方法,其特征在于,包括以下步骤:
步骤S1:采用OpenCV库函数读取待检测的干涉条纹图像;
步骤S2:通过对比度增强技术提升待检测的干涉条纹图像可读性,得到处理后的干涉条纹图像;
步骤S3:对处理后的干涉条纹图像进行自适应二值化处理,将条纹进行区域划分,得到二值化干涉条纹图像;
步骤S4:对得到的二值化干涉条纹图像进行空洞填充处理,得到填充后的干涉条纹图像;
步骤S5:通过Zhang氏骨架提取算法和Rosen骨架提取算法结合,将填充的干涉条纹图像转换为干涉条纹骨架图像;
步骤S6:基于干涉条纹骨架图像的特点分别进行去毛刺处理与断点连接处理,得到干净的干涉条纹骨架图像;
步骤S7:将干净的干涉条纹骨架图像重新进行级次标定,并加以颜色区别,完成对干涉条纹图像的检测。
2.根据权利要求1所述的基于C++语言平台的干涉条纹检测方法,其特征在于:所述步骤S1采用CV::imread函数读取待检测的干涉条纹图像。
3.根据权利要求1所述的基于C++语言平台的干涉条纹检测方法,其特征在于:所述对比度增强技术具体为:
根据EqualizeHist函数处理将图像进行直方图均衡化,提高干涉条纹图像的对比度,直方图均衡化的基础如下:
其中Ps(s)表示随机变量s的概率密度函数,;Pr(r)表示随机变量r的概率密度函数;采用r和s采用的准则为:
式中G为图像的灰度值分布,如8位图像分布对应的G为256,ri为原图像概率分布密度,表示对X进行向下取整,通过(3)式求出的值就是新的Ps(s)概率密度分。
4.根据权利要求1所述的基于C++语言平台的干涉条纹检测方法,其特征在于:所述空洞填充处理采用阈值孔洞填充算法。
5.根据权利要求1所述的基于C++语言平台的干涉条纹检测方法,其特征在于:所述步骤S6具体为:
步骤S61:将填充后的干涉条纹图像简化为局部毛刺图进行分析;
步骤S62:根据毛刺的特性,采用C++程序寻找毛刺与骨架的连接点、毛刺边缘点,及找到毛刺的坐标,并用8领域寻点法从毛刺边缘点开始遍历到连接点为止,将所有点保存到Vector类的Point数组当中,并将这些点的灰度值置为1,去除毛刺;
步骤S63:通过去毛刺处理后,将所有断点进行选定,通过匹配算法进行断点两两连接。
6.根据权利要求1所述的基于C++语言平台的干涉条纹检测方法,其特征在于:所述步骤S7具体为:
步骤S71:将干净的干涉条纹骨架图像的边界点作为特征点,利用OpenCV库与C++语言相结合,编写BwLabel函数,用于对干涉条纹骨架简单的从左至右的进行排序;
步骤S72:通过BwLabel函数处理的结果,对干涉条纹的级次标定。
CN201811250225.7A 2018-10-25 2018-10-25 基于c++语言平台的干涉条纹检测方法 Pending CN109300132A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811250225.7A CN109300132A (zh) 2018-10-25 2018-10-25 基于c++语言平台的干涉条纹检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811250225.7A CN109300132A (zh) 2018-10-25 2018-10-25 基于c++语言平台的干涉条纹检测方法

Publications (1)

Publication Number Publication Date
CN109300132A true CN109300132A (zh) 2019-02-01

Family

ID=65157883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811250225.7A Pending CN109300132A (zh) 2018-10-25 2018-10-25 基于c++语言平台的干涉条纹检测方法

Country Status (1)

Country Link
CN (1) CN109300132A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580479A (zh) * 2019-08-27 2019-12-17 天津大学 基于熵和聚类算法的电子散斑干涉条纹图二值化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103292741A (zh) * 2013-05-29 2013-09-11 哈尔滨工程大学 一种基于k均值颜色聚类的物体表面三维轮廓的结构光视觉测量方法
CN105043299A (zh) * 2015-04-29 2015-11-11 桂林电子科技大学 一种便携式光栅投影三维面形测量系统及方法
CN107038029A (zh) * 2017-03-28 2017-08-11 武汉斗鱼网络科技有限公司 苹果开发语言、C++混合编译调用openCV的方法及系统
CN107330380A (zh) * 2017-06-14 2017-11-07 千寻位置网络有限公司 基于无人机航拍影像的车道线自动提取和识别方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103292741A (zh) * 2013-05-29 2013-09-11 哈尔滨工程大学 一种基于k均值颜色聚类的物体表面三维轮廓的结构光视觉测量方法
CN105043299A (zh) * 2015-04-29 2015-11-11 桂林电子科技大学 一种便携式光栅投影三维面形测量系统及方法
CN107038029A (zh) * 2017-03-28 2017-08-11 武汉斗鱼网络科技有限公司 苹果开发语言、C++混合编译调用openCV的方法及系统
CN107330380A (zh) * 2017-06-14 2017-11-07 千寻位置网络有限公司 基于无人机航拍影像的车道线自动提取和识别方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
QUN ZHOU ET AL.: ""A Kind of Effective Method for Interference Image Binarization"", 《IEEE》 *
代雷: ""电子散斑干涉图像的处理技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
刘海波 等: ""基于OpenCV的图像处理"", 《万方数据知识服务平台》 *
王飞 等: ""干涉图像的数字化处理算法研究"", 《微型机与应用》 *
陈庆虎 等: ""一种简单高效的二值图像并行细化算法 PABIT"", 《武汉理工大学学报(交通科学与工程版)》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580479A (zh) * 2019-08-27 2019-12-17 天津大学 基于熵和聚类算法的电子散斑干涉条纹图二值化方法

Similar Documents

Publication Publication Date Title
US10510148B2 (en) Systems and methods for block based edgel detection with false edge elimination
CN108510451B (zh) 一种基于双层卷积神经网络的重建车牌的方法
JP2002525735A (ja) ベクトル画像シーケンスにおける意味対象物の追跡
CN105844277B (zh) 标签识别方法和装置
CN110544300B (zh) 一种基于二维手绘图像特征自动生成三维模型的方法
CN110363178B (zh) 基于局部和全局深度特征嵌入的机载激光点云分类方法
KR101086402B1 (ko) 영상 분할 방법
CN111260675A (zh) 一种图像真实边界高精度提取方法及系统
KR20020008245A (ko) 정밀한 수치표고모형의 자동생성을 위한 지능적 보간법
Nousias et al. A saliency aware CNN-based 3D model simplification and compression framework for remote inspection of heritage sites
KR102466061B1 (ko) 계층적 생성 적대 네트워크를 이용한 노이즈 제거 장치 및 그 방법
Wu et al. Pyramid edge detection based on stack filter
CN109300132A (zh) 基于c++语言平台的干涉条纹检测方法
CN114092499A (zh) 一种药盒分割方法
CN113421210A (zh) 一种基于双目立体视觉的表面点云重建方法
Krishnamoorthy et al. An enhanced method for object removal using exemplar-based image inpainting
Farella et al. Sparse point cloud filtering based on covariance features
Verwer et al. Binary and grey-value skeletons: Metrics and algorithms
CN110378167B (zh) 一种基于深度学习的条码图像补正方法
CN113177956A (zh) 一种面向无人机遥感影像的语义分割方法
CN113888614B (zh) 深度恢复方法、电子设备和计算机可读存储介质
JP3638845B2 (ja) 画像処理装置及び方法
CN115345897A (zh) 三维重建的深度图优化方法及装置
CN115953346B (zh) 一种基于特征金字塔的图像融合方法、装置及存储介质
Hasthorpe et al. The generation of river channel skeletons from binary images using raster thinning algorithms

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190201

RJ01 Rejection of invention patent application after publication