低亮度多角度环境下皮带损伤样本的优化和预处理方法与流程

文档序号:21369260发布日期:2020-07-04 04:45阅读:439来源:国知局
低亮度多角度环境下皮带损伤样本的优化和预处理方法与流程

本发明属于皮带损伤样本优化和预处理技术领域,具体涉及一种应用于低亮度多角度环境下工业相机拍摄到的皮带损伤样本的优化和预处理方法。



背景技术:

在煤矿的工业生产中,皮带输送的整体环境非常复杂。工业相机的选址非常苛刻,实际环境下,相机的角度等情况并不能满足我们预期的图片效果。故在没法调整安装位置及角度的条件下,我们只能在图像处理方面下手。而且拍摄环境的亮度整体偏暗,随着时间变化亮度有所变化,这种变化对于人工智能的图片识别会有很大的影响,使得学习结果出现一些误差。

为了克服硬件方面难以克服的困难,本领域的技术人员在软件方面做了克服,设计了图片预处理的方法,来克服硬件环境无法满足人工智能学习要求的弊端。在实际的安装角度下,我们无法保证整个皮带充满图片区域,不可能使皮带两边正好与图片两边重合,故实际拍摄的图片存在有皮带以外的内容,如输送支架、墙体窗户等无关区域。这些皮带以外的无关区域会对人工智能的图片识别造成很大的干扰,无法保证其识别结果的准确性。

另外,当拍摄环境内的亮度很低时,图片效果会整体很黑,基本不满足检测条件,通过直方图均衡会得到较亮的,满足条件的图片,随着外部亮度随时间变化的因素,普通的直方图均衡并不能持续的保证其最佳效果。



技术实现要素:

为解决现有技术存在的技术问题,本发明提供了一种应用于低亮度多角度环境下工业相机拍摄到的皮带损伤样本的优化和预处理方法。

为实现上述目的,本发明所采用的技术方案为:低亮度多角度环境下皮带损伤样本的优化和预处理方法,具体步骤如下:

步骤一、采用工业相机对皮带进行拍照取样;

步骤二、确定拍摄图片内的干扰区域,将干扰区域内的各个顶点按顺序使用直线相连,构成所需的填充区域,对填充区域进行颜色填充;

步骤三、对拍摄图片的皮带图像上端两顶点拉伸至图片的两个上端点,对拍摄图片的皮带图像下端两端点拉伸至图片的两个下端点,皮带图像铺满整个拍摄图片;

步骤四、调整步骤三中处理后图像的局部对比度,削弱局部图像对比度过度增强和抑制噪声信号放大,并为图片匹配颜色对比度阙值limit;

步骤五:对图片进行自适应均衡化。

在步骤二中,使用fillpoly函数对填充区域进行黑色填充。

其中,作为优选的,使用cv2.fillpoly(frame,[triangleleft,triangleright],(0,0,0))函数对填充区域进行颜色填充;

其中,frame表示将要修改的图片;第二参数为列表,列表中每个元素为一个numpy类型的序列,标识需要填图区域的顶点,填充区域会将顶点按顺序使用直线相连,构成所需要的填充区域;第三参数标识填充的颜色值,fillpoly函数向皮带以外的填充区域内填充黑色。

在步骤三中,使用getperspectivetransform函数对拍摄图片进行透视变换。

其中,作为优选的,使用opencv库的m=cv2.getperspectivetransform(pts1,pts3)函数对拍摄图片进行透视变换,其中,第一参数表示原来图像中测定的四点坐标,第二参数为目标图像中的四点坐标;

选用cv2.warpperspective(frame,m,(width,1824))函数得到透视变换后的图像,其中,frame表示需要变化的图像源,m表示变换矩阵,第三个参数代表图像大小,即宽度和高度。

在步骤四中,limit值的匹配方法为:每通过四千张图片后,重新计算limit值,(mean_current,stddv_current)=cv2.meanstddev(image),meanstddev函数用于计算并取得当前图片矩阵的均值,用当前图片均值与初始化均值比较,结合最大值与最小值计算,得到新的limit值;通过cv2.createclahe(cliplimit=limit,tilegridsize=(8,8))函数使用新的limit值生成自适应均衡化图像模型;使用frame=clahe.apply(frame)对图片进行自适应均衡化,实现均衡化效果。

本发明与现有技术相比,具体有益效果体现在:

一、本发明通过图片形变将皮带区域填满整个图片,去除无关区域对识别结果造成影响。

二、本发明对直方图均衡的阈值进行重新的计算,就可以随着亮度的变化,直方图均衡的效果都是最佳的,自适应直方图均衡克服了外部亮度变化的因素,提高了ai判断的准确性。

附图说明

图1为原始图片与干扰区域经过纯色填充后图片的对比图。

图2为原始图片与透视变换后图片的对比图。

图3为对子区域灰度级像素的裁剪分配示意图。

图4为clahe算法中的像素插值示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

低亮度多角度环境下皮带损伤样本的优化和预处理方法,具体步骤如下:

采用工业相机对皮带进行拍照取样,如图1所示,图中,两边下角存在除皮带以外的干扰区域,这些干扰区域会影响ai的判断,将干扰区域的某一块判断为皮带损伤,实际处理过程中需要对干扰区域进行遮挡处理。当干扰区域为某一纯色的时候,ai程序很容易判断该区域不满足判定条件。在实际操作过程中,将干扰区域进行涂黑操作即可消除无关区域的干扰问题。

使用cv2.fillpoly(frame,[triangleleft,triangleright],(0,0,0))函数来实现。frame表示将要修改的图片。第二参数为列表,列表中每个元素为一个numpy类型的序列,表示需要填图区域的顶点,填充区域会将顶点按顺序使用直线相连,构成所需要的填充区域;第三个参数表示填充的颜色值。

fillpoly函数会将给定区域作为填充区域,然后将给定颜色涂覆至填充区域内。皮带以外的地方作为给定区域,即填充区域,使用黑色进行填充,消除干扰区域,消除对ai判断的干扰。

图像透视变换:找到下端皮带两点,对两点进行拉展,使皮带下端两端点分别到达图片对应侧的两个下端点处,通过对皮带下端两端点的拉展,皮带铺满整个图片以消除如图1所示的干扰区域。

本发明采用opencv库的m=cv2.getperspectivetransform(pts1,pts3)函数,第一参数表示原来图像中待测定的四点坐标,是一个numpy类型的序列,即里面放了四个点的坐标,每个坐标都是由行列的位置构成,相当于二维坐标轴里的x和y;第二参数为目标图像中的四点坐标,即拉伸到某处的位置坐标。getperspectivetransform函数会反馈一个由变换前位置到变化后位置的变换矩阵,通过上述函数我们会得到一个由原图像到目标图像的变化矩阵m。

进而,用形变函数cv2.warpperspective(frame,m,(width,1824))得到透视变换后的图像,其中,frame表示需要变化的图像源,m表示变换矩阵,第三个参数代表图像大小,即宽度和高度。如图2所示,原图像即被拉伸成只容有皮带内容的图像,以提高ai的判断准确性。

低亮度处理方法:如图2所示,实际生产环境中光线不足,直方图均衡能增大灰度值的分布范围,拉伸图像灰度的动态范围,增大对比度,突出细节信息。然而,在实验中发现经过直方图均衡处理过的图像灰度均值调整到了图像灰度中值附近,从而某些图像出现了过度增强现象,即图像中某些地方出现了光晕。因此,当缺陷出现在对比度强烈的图像中时可能会造成细节消失,影响缺陷检测模型的判断。

基于此,本发明采用clahe对采集图像进行预处理,通过限制局部区域直方图的高度,有限度的调整局部图像对比度,从而达到削弱局部对比度过度增强和抑制噪声信号放大的目的。并且在自适应的直方图均衡中,本发明采取自动的方法为图片匹配合适的颜色对比度阈值limit。

合适的limit值给定方法:每通过四千张图片的时候重新计算limit值,采用(mean_current,stddv_current)=cv2.meanstddev(image),meanstddev函数可以得到当前图片矩阵的均值(图片本身是一种点阵,即矩阵的每个点代表此点的颜色),用当前的均值与初始化均值比较,并结合最大值与最小值计算,得到新的limit值;通过cv2.createclahe(cliplimit=limit,tilegridsize=(8,8))函数使用最新的limit值生成自适应均衡化图像模型;使用frame=clahe.apply(frame)对图片进行自适应均衡化,即可得到灰度值之间的间隔更小,一些频数较大的灰度值补充给了频数较小的灰度值的图像,从而实现均衡化效果。

均衡化主要原理步骤如下:

(1)、将原图像划分为k个大小为m×n的区域,每个划分区域相互连续并且互不重叠,m、n的大小通常可根据实际需要来进行调整,一般情况下为8×8;

(2)、每个子区域单独来看,计算子区域像素个数平均分配到每个灰度级的平均值:(c为该区域灰度级的数量);限定每个灰度级的像素数不得超过平均值naver的α倍,α即为裁剪限幅系数,则实际剪切极限值为:ncl=α·naver;

(3)、如图3所示,根据剪切极限值ncl剪切子区域灰度级的多余像素数并对其重新分配,使得裁减掉的部分均匀的分布在各个灰度级上,

设重新分配像素数为nclip,根据灰度级数可得到每个灰度级均分的像素数:

重新分配过程如下:

当h(i)>hcl,h(i)=ncl;当h(i)+nacp≥hcl,h(i)=ncl;当h(i)+nacp<hcl,h(i)=h(i)+nacp;

h(i)表示子区域中第i个灰度级的像素数。

经过上述分配后,若有剩余像素nlp,则需要从最小灰度级按照步长循环分配直至像素为0,得到新的直方图;

(4)、对新的直方图进行均衡化;具体方法如下:记fi为灰度级,ni是该灰度级像素的个数,n是总的像素个数,则该灰度出现的频率为:

计算累计分布函数:

将直方图均衡后的图像灰度级记为gj,则新的灰度级为:

gj=int[(gmax-gmin)c(fi)+gmin+0.5]

其中,int表示取整运算,gmax、gmin表示原直方图最大与最小灰度级,通过新的映射方法求原始灰度级对应的gj。

(5)、如图4所示,根据上述映射关系,求每个子区域中心点的新的灰度值。为了加快计算速度,同时降低区域边缘像素变化影响,使用插值算法求解部分像素。其中内部像素(深色大阴影部分)采用双线性插值法,边缘像素(浅色阴影部分)采用线性插值法,角落像素(深色小阴影部分)采用直接填充法。

在实际应用时,划分m×n大小的子区域与剪切极限值ncl是可变化的,m、n的大小一般都为8,ncl则决定了图像对比度变化的范围。而为了能根据当前图像的对比度自动调整剪裁幅度,我们自适应调整ncl。首先,根据现有的图像样本求其灰度平均值mean、meanlow、meanupper,随着测试新的样本,上述三值可随之变化。之后,根据当前的输入图片的灰度平均值,通过分段线性的映射方式,使平均灰度值高的ncl就低,平均灰度值低的ncl就高,抑制实际工作环境中由于光照强度不同带来的影响。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包在本发明范围内。

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