本发明涉及一种基于gabor滤波的工件特征提取与识别的方法,属于数字图像处理与机器视觉领域。
背景技术:
在计算机技术与机器视觉发展的进程中,机器视觉在人工智能、科学研究、国民经济以及国防建设等领域的应用十分广泛。数字图像与视觉作为机器人获得外界信息的主要方法,它可以提高工业生产的自动化和智能化程度,其最大的优点是机器人与被观测对象无接触,观测对象不会受到接触损伤,另外机器人可以用于不同的环境中观测被检测对象。
工件图像识别可以看作特征提取和分类器设计相结合的过程。工件图像特征提取过程受到遮挡,动态背景,视角和光照变化等因素的影响而具有很大的挑战性。而gabor小波与人类视觉系统中简单单细胞的视觉刺激响应非常相似,对于图像的边缘敏感,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,能够提供对光照变化良好的适应性,且能够容忍一定程度的图像旋转和变形,可以解决以上旋转,变形,光照变化等各种工件图像的问题。
因此,本文设计了一种基于gabor滤波的工件图像特征提取与识别方法,通过视觉系统捕获具有工件的源图像并进行预处理,提出最小外接矩形的工件区域剪切算法,在源图像中剪切出工件图像,同时确定工件位置以及偏转角度,并提取gabor滤波的工件图像特征,发送工件图像的信息给机器人。从而使机器人根据数字图像处理结果,做出相应的选择以及抓取动作。
技术实现要素:
针对现有方法中存在的上述不足,本发明要解决的技术问题是提供一种gabor滤波的工件图像特征提取与识别的方法。
本发明为实现上述目的所采用的技术方案是:一种基于gabor滤波的工件图像特征提取与识别方法,包括以下步骤:
源图像预处理阶段:去除源图像中的噪声后统计灰度直方图,得到图像前景与背景灰度的两个最大值,采用灰度拉伸算法得到灰度拉伸图像;根据阈值分割算法对灰度拉伸图像进行阈值分割;
工件区域定位与剪切阶段:对阈值分割后的二值图像进行局部区域填充与被包围区域填充;提取填充后二值图像的工件区域外轮廓,使用最小外接矩形框出工件区域;采用工件区域剪切算法剪切源图像中的工件区域得到工件图像;
gabor滤波工件图像阶段:使用gabor滤波器对工件图像进行滤波,得到多张滤波工件图像;
工件图像特征提取与识别:归一化每张滤波工件图像的灰度,并计算每张归一化滤波图像灰度的均值、方差和二阶矩,作为该工件图像特征数组,完成工件图像特征提取;将多种工件图像特征数组作为样本集,训练分类器;使用该分类器,对待检测的图像提取工件图像特征并进行分类,完成工件识别。
所述灰度拉伸算法通过以下公式计算:
其中,源图像的灰度级数为0~m,背景色为白色,前景色为黑色,a为在0~m/2中灰度直方图前景最大值对应的灰度值,b为在m/2~m中灰度直方图背景最大值对应的灰度值,x,y是像素坐标,f(x,y)为源图像在坐标(x,y)的灰度值,g(x,y)为灰度拉伸后的坐标(x,y)处的灰度值,级数为0~m,c、d为设定值。
所述阈值分割算法包括以下步骤:
灰度拉伸图像的灰度直方图数组为hist[256],灰度值为i的像素个数为ni=hist[i],灰度值在[0~t]间的总像素数为n,
灰度值在[t+1~255]之间像素的总数为l,则
求
所求得的i即为图像分割阈值t,根据t对灰度拉伸图像进行阈值分割。
所述局部区域填充分为纵向局部填充和横向局部填充,设阈值分割后的图像黑色为前景色,白色为背景色;
所述纵向局部填充:如果同一列两个黑点之间的像素全部是白色且两点间的像素长度不大于预设填充阈值,则填充为黑色;
所述横向填充:如果同一行两个黑点之间的像素全部是白色且两点之间的距离不大于预设填充阈值长度的区域,则填充为黑色。
所述被包围区域填充具体为:如果局部区域填充后的图像中白色连通区域能到达边缘点,则该区域不被包围;否则,该区域被包围,被包围区域填充为黑色。
所述工件区域剪切算法包括以下步骤:
根据工件区域最小外接矩形与源图像坐标系x轴的角度α,剪切出工件图像,源图像对应工件区域图像的像素坐标与灰度关系如下:
m=pt[2].y+i*cosα+j*sinα
n=pt[2].x-j*cosα+i*sinα
dst.pixel(i,j)=src.pixel(m,n)
其中,m、n是源图像中的坐标,i、j是工件区域图像的像素坐标,0≤i<dst.width,0≤j<dst.height,dst.width是工件区域图像的宽,dst.height是工件区域图像的长,dst.pixel(i,j)是工件区域图像的在坐标(i,j)处的灰度值,src.pixel(m,n)是源图像在坐标(m,n)处的灰度值,pt[2]是工件区域图像坐标系的原点。
所述使用gabor滤波器对工件图像进行滤波通过下式实现:
其中,x0=xcosθi+ysinθi,y0=-xsinθi+ycosθi;x、y是空间域工件图像像素坐标,x0和y0是坐标点(x,y)的旋转坐标;ω0为滤波器的中心频率;θi为gabor小波的方向;σ为高斯函数在x0和y0坐标轴的标准方差,exp(jω0x0)为交流成分,
采用四个不同的时域窗口s∈[2,5]对应四个不同的中心频率ω0公式如下:
其中,ω0用于控制gabor滤波器的频域尺度,s为gabor小波时域窗;以及四个方向θ1=0,θ2=π/4,θ3=π/2,θ4=3π/4,每个方向有四个频域尺度,共16个滤波器。
将工件图像fr(x,y)和g(x0,y0,θi,ω0)卷积,得到滤波工件图像:
f(x,y,θi,ω0)=fr(x,y)g(x0,y0,θi,ω0)
将不同的ω0和θi带入上式,每个工件图像滤波后得到16张滤波图像。
所述计算每个归一化滤波图像灰度的均值、方差和二阶矩包括:
设归一化滤波工件图像为fn(x,y),其宽度为w,高度为h,则归一化滤波图像fn(x,y)的灰度均值与方差计算如下:
归一化图像fn(x,y)的二维(p+q)阶矩定义为
其中p=0,1,2,…和q=0,1,2,…是整数,相应的(p+q)阶中心矩定义为:
式中p=0,1,2,…和q=0,1,2,…,其中
由ηpq表示的归一化中心矩定义为
式中,
两个二阶不变矩如下:
φ1=η20+η02
所述分类器为基于高斯径向基的支持向量机。
本发明具有以下优点及效果:
1.给出工件的具体位置,准确度高。源图像预处理后,得到工件图像区域的外轮廓,使用最小外接矩形框出工件区域外轮廓,并切割出工件图像,给出工件图像的倾斜角。
2.提取特征效率高。在预处理与图像分割中,使用高斯滤波器平滑工件图像,基于直方图两个最大值的灰度拉伸算法、图像阈值分割算法和区域填充设计简单,计算量小。
3.分类准确。使用rbf核函数的svm,收敛较快,分类准确。
4.适应性强。本方法对不同光照工件图像具有适应性,对不同姿态工件图像具有一定的鲁棒性,且具有良好的方向和尺度选择性。包括螺母,垫片等。
附图说明
图1是工件图像特征提取与识别流程图;
图2是源图像;
图3是源图像经过预处理后的局部区域填充图像;
图4是工件定位图像;
图5是图4剪出的矩形工件;
图6是图4剪出的垫片;
图7图8是图4剪出的螺母图像;
图9图10图11图12分别是图5图6图7图8的gabor滤波图像;
图13图14图15图16分别是图9图10图11图12的归一化图像;
图17是最小外接矩形剪切算法图。
具体实施方式
下面结合附图及实施实例对本发明做进一步的详细说明。
本发明用于工件图像特征提取与识别,其特征提取与识别流程图如图1所示。
本发明步骤如下:源图像预处理:首先去除源图像噪声,然后对去除噪声的图像进行灰度拉伸,最后对灰度拉伸后的进行阈值分割、区域填充等操作,得到图像中的工件区域的轮廓以便定位工件区域。图像工件区域定位与剪切是指使用工件外轮廓的最小外接框住工件区域,然后裁剪出最小外接矩形内的工件图像。gabor滤波工件图像是指使用不同方向不同尺度的gabor滤波器,对工件图像进行滤波。工件图像特征提取与识别:归一化滤波工件图像灰度,计算归一化滤波工件图像灰度的均值、方差与不变矩,并作为特征,提取样本特征数组,使用各种工件的多个征作数组作为样本集,训练分类器。
一种基于gabor滤波的工件图像特征提取与识别方法,包括以下步骤:
源图像预处理阶段:去除源图像中的噪声,以平滑源图像;统计平滑后图像的灰度直方图,得到图像前景与背景灰度的两个最大值,提出基于灰度直方图两个最大值的灰度拉伸算法,用于增强图像的前景与背景的对比度;根据提出最大期望平方和的阈值分割算法,对灰度拉伸图像进行阈值分割;
工件区域定位与剪切阶段:对阈值分割后的二值图像进行局部区域填充与被包围区域填充;提取填充后工件图像的外轮廓,使用最小外接矩形框出工件区域,提出最小外接矩形的工件区域剪切算法,剪切源图像中的工件区域。
gabor滤波工件子图像阶段:使用四个方向四个尺度的gabor滤波器,对工件子图像进行滤波,得到16张滤波图像。
工件图像特征提取与识别:归一化每张滤波图像灰度,计算归一化滤波工件图像灰度的均值、方差和二阶矩,共64个数值,作为工件图像特征数组,将多种工件图像特征数组作为样本集,训练分类器;使用训练好的分类器,对当前工件图像特征进行分类。
源图像预处理阶段:
首先去除图像噪音的滤波器为高斯平滑算子,高斯平滑算子模板是通过高斯关系式来设置的。坐标x,y处的高斯函数g利用方差σ2根据下式来控制:
通过,此式计算模板中的权值,得到高斯平滑模板。其中,σ2的大小与模板尺寸由程序员设置。
所述基于灰度直方图两个最大值的灰度拉伸算法,通过以下公式计算:
其中,图像的灰度级数为0~m,背景色为白色,前景色为黑色,a为在0~m/2中灰度直方图最大值对应的灰度值,b为在m/2~m中灰度直方图最大值对应的灰度值,f(x,y)为输入图像的灰度值,级数为0~m,g(x,y)为灰度拉伸后的灰度值,级数为0~m,其中m=255的条件下,c、d的值根据人眼能够分辨的像素设置。
所述基于最大期望平方和的阈值分割算法:
设灰度拉伸图像g(x,y)的灰度直方图数组为hist[256],灰度值为i的像素个数为ni=hist[i],灰度值在[0~t]间的总像素数为n,
灰度值在[t+1~255]之间像素的总数为l,则
求
所求得的i即为图像分割阈值t,根据t对g(x,y)图像进行阈值分割。
所述工件区域定位与剪切阶段:
所述局部区域填充分为纵向局部填充和横向局部填充,设黑色为前景,白色为背景。
所述纵向局部填充:如果同一列两个黑点之间的像素全部是白色且两点间的像素长度不大于预设填充阈值,则填充为黑色;
所述横向填充:如果同一行两个黑点之间的像素全部是白色且两点之间的距离不大于预设填充阈值长度的区域,则填充为黑色。
所述被包围区域填充具体为:如果白色连通区域到达边缘点,则该区域不被包围;如果白色连通区域不能到达边缘点,则该区域被包围,被包围区域填充为黑色。
所述基于最小外接矩形的工件区域剪切算法:
根据最小外接矩形与源图像坐标系x轴的角度α,对工件区域进行剪切,根据几何关系,源图像对应工件区域图像的像素:
m=pt[2].y+i*cosα+j*sinα
n=pt[2].x-j*cosα+i*sinα
dst.pixel(i,j)=src.pixel(m,n)
如图17所示,其中,m、n是点p在源图像坐标系xoy中的坐标,i、j是点p在目的图像坐标系uqv中的坐标,0≤i<dst.width,0≤j<dst.height,pt[2]是坐标系uqv的原点q,工件区域最小外接矩形abcq与源图像xoy坐标系x轴的夹角角度为α。
所述gabor滤波工件子图像阶段:
所述使用四个方向四种尺度的gabor滤波平滑工件图像:
其中,x0=xcosθi+ysinθi,y0=-xsinθi+ycosθi;x、y是空间域工件图像像素坐标,x0和y0是坐标点(x,y)的旋转坐标;ω0为滤波器的中心频率;θi为gabor小波的方向;σ为高斯函数在x0和y0坐标轴的标准方差,exp(jω0x0)为交流成分,
采用四个不同的时域窗口s∈[2,5]对应四个不同的中心频率ω0公式如下:
其中,ω0用于控制gabor滤波器的频域尺度,s为gabor小波时域窗;以及四个方向θ1=0,θ2=π/4,θ3=π/2,θ4=3π/4,每个方向有四个频域尺度,共16个滤波器。
将工件图像fr(x,y)和g(x0,y0,θi,ω0)卷积,得到滤波工件图像:
f(x,y,θi,ω0)=fr(x,y)g(x0,y0,θi,ω0)
将不同的ω0和θi带入上式,每个工件图像滤波后得到16张滤波图像。
所述提取工件图像特征提取与识别阶段:
对滤波之后的工件图像采用min-max算法进行灰度归一化,设归一化滤波工件图像为fn(x,y),其宽度为w,高度为h,则归一化滤波图像fn(x,y)的灰度均值与方差计算如下:
归一化图像fn(x,y)的二维(p+q)阶矩定义为
其中p=0,1,2,…和q=0,1,2,…是整数,相应的(p+q)阶中心矩定义为:
式中p=0,1,2,…和q=0,1,2,…,其中
由ηpq表示的归一化中心矩定义为
式中,
两个二阶不变矩如下:
φ1=η20+η02
所述分类器为基于高斯径向基的支持向量机:
通过以上步骤,将提取的多种工件图像特征以及其种类对应编号作为训练样本集,用样本集训练基于高斯径向基(rbf)的支持向量机。
支持向量机的核为高斯核函数:
其中,zi为样本集中特征向量,即64维特征向量;z表示当前用于测试的正例特征向量,也可能是作为反例的背景图像的特征向量;σ为设定参数。
对应的支持向量机是高斯径向基函数(radialbasisfunction)的分类器。在此情形下,分类决策函数为:
其中,ns表示样本集特征个数;
将新提取的工件图像特征,放入训练好的分类器中,识别其特征对应的编号,即为对应工件编号。
实施实例:将本发明方法在计算机上进行验证,所用的编程软件为vs2010,opencv2.4.9,所用工件有螺母、垫片等。
主要的测试环境如下:
操作系统:microsoftwindows7
cpu:pentium(r)dual-core
主频:2.93ghz
内存:2g
本实施实例以典型工件如矩形工件、螺母和垫片的特征提取与识别为例,进行工件图像的特征提取与识别。
以图2为例,具体流程如下:
采集矩形工件、螺母与垫片三种不同工件的图像,根据源图像预处理、工件区域定位与分割、gabor滤波工件图像,工件图像特征提取与识别的步骤处理图像。如图3是对图2使用基于直方图两个最大值的灰度拉伸算法、基于最大平方和的阈值分割算法、局部填充算法处理得到的图像,判断局部区域填充图像中当前白色区域是否达到边缘点,不到达边缘则是被包围区域,设置该区域灰度为黑色,否则,保持该区域灰度不变。如图4所示,找到工件区域外轮廓的最小外接矩形,使用基于最小外接矩形的剪切算法处理图4,剪切出图5矩形工件、图6垫片、图7螺母和图8螺母图像。使用4个方向4种尺度的gabor滤波器分别对图5、图6、图7、图8进行gabor滤波,每张图像到16张滤波图像,如图9、图10、图11和图12所示;图13、图14、图15和图16分别是图9、图10、图11和图12使用min-max归一化得到的图像,之后提取图13、图14、图15和图16中的每一张gabor滤波图像灰度的均值、方差和不变矩作为特征数值,举例说明:如图13中共16张灰度归一化图像,每个图像有4个特征数值,所以图13提取特征数组为64维。每种工件图像可以提取多个特征数组,每个特征数组对应的一个工件类别编号,多个特征数组形成一个特征样本集,使用特征样本集以及样本集特征对应工件的编号训练支持向量机。训练时,样本集中每组特征的类别已知,将特征数组与对应的类别写入txt文件中,使用样本集中的特征训练基于高斯径向基(rbf)核函数的支持向量机,作为分类器。
训练好分类器后,输入新的图像,提取到该图像中工件图像的特征数组,使用已经训练好的支持向量机,对当前新特征进行识别。
通过分析,可以得到如下结论:
1.本发明方法可以保证工件定位的准确度的要求,可以分割出倾斜的工件,给出工件所在最小外接矩形的中心位置,与工件的倾斜角。如图4是源图像预处理后,使用最小外接矩形框出的工件区域。由图4可以看出,矩形工件、螺母与垫片图像的最小外接矩形的边与源图像水平线存在一个倾斜角,从分割出的工件如图5、图6、图7和图8可以看出,本发明中基于最小外接矩形的工件区域剪切算法,不但可以给出工件的准确位置,而且可以准确地剪切出工件图像。
2.本发明方法算法简单,执行效率高。源图像处理阶段,使用的是基于高斯平滑算子模板、基于直方图的灰度拉伸算法、基于最大平方和的阈值分割算法,以及局部区域填充算法和被包围区域填充算法,算法设计简单,时间复杂度低,计算量小;工件图像区域定位与分割阶段,使用最小外接矩形剪切算法,不需要对源图像扫描,只需用工件图像坐标,计算源图像坐标,把该处像素的灰度值作为当前工件图像坐标处像素的灰度值,计算量小。
3.提取特征适用性强,分类准确。gabor滤波器对图像的边缘敏感,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,能够提供对光照变化良好的适应性,且能够容忍一定程度的图像旋转和变形。本文使用的支持向量机,具有训练速度快,分类准确的特点。通过对矩形工件、螺母和垫片的分类可以看出,本发明可以使用多种工件的识别工作。