本發(fā)明涉及一種基于圖像分割的工件定位與識(shí)別的方法,屬于機(jī)器視覺領(lǐng)域。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)、數(shù)字圖像處理的迅速發(fā)展,機(jī)器視覺在國民經(jīng)濟(jì)、科學(xué)研究及國防建設(shè)領(lǐng)域都有著廣泛的應(yīng)用。機(jī)器視覺作為工業(yè)機(jī)器人獲得外接環(huán)境信息的主要手段,它可以提高工業(yè)生產(chǎn)的柔性和自動(dòng)化程度,其最大的優(yōu)點(diǎn)是與被觀測(cè)對(duì)象無接觸,對(duì)觀測(cè)對(duì)象不會(huì)帶來損傷,另外機(jī)器人可以在惡劣環(huán)境用于代替人工不知疲倦、始終如一的觀測(cè)被檢測(cè)對(duì)象。傳統(tǒng)的裝配生產(chǎn)線上,裝配機(jī)器人的操作都是通過逐點(diǎn)示教才能完成生產(chǎn)線上的物料搬運(yùn)、裝配以及各工位之間工件轉(zhuǎn)移和上下料,只能做一些固定的動(dòng)作,但是工業(yè)現(xiàn)場(chǎng)環(huán)境復(fù)雜,工件位姿隨機(jī)擺放,實(shí)際目標(biāo)工件的位置與理想工件位姿極易存在偏差,致使工業(yè)機(jī)器人無法順利完成操作任務(wù)。這些機(jī)器人利用各種傳感器來進(jìn)行控制,稱為敏感控制機(jī)器人。進(jìn)行裝配操作時(shí),所有的動(dòng)作都要預(yù)先設(shè)定,同時(shí)要求工件位置、包裝箱的位置和方向放置得非常嚴(yán)格。為此要有價(jià)格昂貴的夾具或固定機(jī)構(gòu),還需要有精心設(shè)計(jì)的特殊傳送帶。
將視覺系統(tǒng)引入工業(yè)機(jī)器人,可以大大地?cái)U(kuò)展機(jī)器人的使用性能和應(yīng)用范圍,使機(jī)器人在完成指定任務(wù)的過程中,具有更大的適應(yīng)性,也使得工業(yè)生產(chǎn)現(xiàn)代化、智能化。在實(shí)際應(yīng)用中,需要機(jī)械手能根據(jù)工件實(shí)際的位置動(dòng)態(tài)調(diào)整抓取操作,因此,設(shè)計(jì)了一種基于圖像分割的工件定位與識(shí)別方法,通過視覺系統(tǒng)捕獲工件圖像,采用最小外接矩形定位的方法,計(jì)算出工件的位置,以及偏轉(zhuǎn)角度,實(shí)時(shí)發(fā)送工件的位置信息給機(jī)器人。從而使機(jī)器人根據(jù)圖像處理結(jié)果,做出相應(yīng)的動(dòng)作,抓取工件。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有方法中存在的上述不足,本發(fā)明要解決的技術(shù)問題是提供一種基于圖像分割的工件定位與識(shí)別的方法。
本發(fā)明為實(shí)現(xiàn)上述目的所采用的技術(shù)方案是:一種基于圖像分割的工件定位與識(shí)別的方法,包括以下步驟:
圖像預(yù)處理階段:去除輸入圖像中的噪音,對(duì)圖像進(jìn)行平滑操作;根據(jù)平滑后圖像的灰度級(jí)像素個(gè)數(shù),得到平滑后圖像前景與背景灰度的兩個(gè)最大值,基于兩個(gè)最大值的對(duì)應(yīng)灰度進(jìn)行圖像增強(qiáng),用以增強(qiáng)圖像的前景與背景的對(duì)比度;根據(jù)圖像中前景與背景灰度的期望,進(jìn)行閾值分割;
工件區(qū)域定位與分割階段:對(duì)閾值分割后的二值圖像進(jìn)行局部區(qū)域填充與被包圍區(qū)域填充;提取填充后圖像的邊緣,使用最小外接矩形框出圖像中的工件區(qū)域,對(duì)最小外接矩形的工件區(qū)域進(jìn)行分割,分割出圖中含有工件區(qū)域的子圖像,作為特征提取的圖像,提取不變矩特征與幾何特征;根據(jù)提取出的特征訓(xùn)練分類器,對(duì)工件特征進(jìn)行分類。
所述基于兩個(gè)最大值的對(duì)應(yīng)灰度進(jìn)行圖像增強(qiáng),通過以下公式計(jì)算:
其中,圖像的灰度級(jí)數(shù)為0~M,背景色為白色,前景色為黑色,a為在0~M/2中灰度直方圖最大值對(duì)應(yīng)的灰度值,b為在M/2~M中灰度直方圖最大值對(duì)應(yīng)的灰度值,f(x,y)為輸入圖像的灰度值,級(jí)數(shù)為0~M,g(x,y)為圖像增強(qiáng)后的灰度值,級(jí)數(shù)為0~M,其中M=255的條件下,c、d的值根據(jù)人眼能夠分辨的像素設(shè)置。
所述閾值分割,包括以下步驟:
設(shè)直方圖數(shù)組為Hist[256],灰度值為i的像素個(gè)數(shù)為ni=Hist[i],灰度值在[0~T]間的總像素?cái)?shù)為N,灰度值為i的像素的概率為:
灰度值在[T+1~255]之間像素的總數(shù)為M,則灰度值為i的像素的概率為:
求的最大值max{sum[i],i∈[0~255]}對(duì)應(yīng)的i,其中,
所求得的i即為圖像分割閾值T,根據(jù)T進(jìn)行圖像閾值分割。
所述局部區(qū)域填充分為縱向局部填充和橫向局部填充;
所述縱向局部填充:設(shè)黑色為前景,白色為背景,如果同一列兩個(gè)黑點(diǎn)之間的像素全部是白色且兩點(diǎn)間的像素長度不大于預(yù)設(shè)填充閾值,則填充為黑色;
所述橫向填充:設(shè)黑色為前景,白色為背景,如果同一行兩個(gè)黑點(diǎn)之間的像素全部是白色且兩點(diǎn)之間的距離不大于預(yù)設(shè)填充閾值長度的區(qū)域,則填充為黑色。
所述被包圍區(qū)域填充具體為:設(shè)白色點(diǎn)為背景,黑色點(diǎn)為前景,如果白色連通區(qū)域到達(dá)邊緣點(diǎn),則該區(qū)域不被包圍;如果白色連通區(qū)域不能到達(dá)邊緣點(diǎn),則該區(qū)域被包圍,被包圍區(qū)域填充為黑色。
所述對(duì)最小外接矩形的工件區(qū)域進(jìn)行分割:
根據(jù)最小外接矩形與源圖像坐標(biāo)系x軸的角度θ,對(duì)工件區(qū)域進(jìn)行切割,根據(jù)幾何關(guān)系,源圖像對(duì)應(yīng)工件區(qū)域圖像的像素:
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是源圖像中的坐標(biāo),i、j是工件區(qū)域圖像的像素坐標(biāo),0≤i<dst.width,0≤j<dst.height,dst.width是工件區(qū)域圖像的寬,dst.height是工件區(qū)域圖像的長,dst.pixel(i,j)是工件區(qū)域圖像的灰度值,src.pixel(m,n)是源圖像的灰度值,pt[2]是工件區(qū)域圖像坐標(biāo)系的原點(diǎn)。
所述提取子圖像的不變矩特征:
設(shè)已切割出大小為M*N的目標(biāo)數(shù)字圖像f(i,j)的二維(p+q)階矩定義為
其中p=0,1,2,…和q=0,1,2,…是整數(shù),相應(yīng)的(p+q)階中心矩定義為:
式中p=0,1,2,…和q=0,1,2,…,其中
和
由ηpq表示的歸一化中心矩定義為
式中,其中(p+q)=2,3,…
由二階矩和三階矩推出如下7個(gè)不變矩組:
φ1=η20+η02
φ3=(η30-3η12)2+(3η21-η03)2
φ4=(η30+η12)2+(η21+η03)2
φ5=(η30-3η12)(η30+η12)[(η30+η12)2-3(η21+η03)2]+
(3η21-η03)(η21+η03)[3(η30+η12)2-(η21+η03)2]
φ6=(η20-η02)[(η30+η12)2-(η21+η03)2]+
4η11(η30+η12)(η21+η03)
φ7=(3η21-η03)(η30+η12)[(η30+η12)2-3(η21+η03)2]+
(3η12-η30)(η21+η03)[3(η30+η12)2-(η21+η03)2]
所述幾何特征包括圓度、連通區(qū)域的細(xì)長度和連通區(qū)域的矩形擬合因子;
所述圓度用于衡量圖形的周邊復(fù)雜程度,計(jì)算公式如下:
其中,p為圖形周長,A為周長所圍的面積;
所述細(xì)長度是區(qū)域外接矩形的長寬比,區(qū)域外接矩形是一個(gè)包圍缺陷形狀的面積最小的矩形,細(xì)長度的計(jì)算公式如下:
其中,a、b分別是最小外接矩形的寬與長;
矩形擬合因子R是反映工件矩形度的參數(shù):
其中,Ao是工件所在區(qū)域面積,Ar是工件最小外接矩形的面積。
所述分類器為基于高斯徑向基的支持向量機(jī)。
本發(fā)明具有以下優(yōu)點(diǎn)及有益效果:
1.給出工件的具體位置,準(zhǔn)確度高。經(jīng)過一系列的預(yù)處理,工件區(qū)域填充后,增加了工件區(qū)域完整性,使用最小外接矩形框出工件區(qū)域,并切割出去含有工件區(qū)域的子圖像,給出工件的偏移角度。
2.算法速度快,實(shí)時(shí)性好。預(yù)處理過程中,高斯平均算子平滑,基于直方圖兩個(gè)最大值對(duì)應(yīng)灰度的圖像增強(qiáng)算法與基于最大平方和的閾值分割算法設(shè)計(jì)簡(jiǎn)單,時(shí)間復(fù)雜度低,計(jì)算量小。
3.分類準(zhǔn)確。使用基于高斯徑向基核函數(shù)的支持向量機(jī),速度較快。對(duì)于大多說情況都是一個(gè)較好的選擇。
4.適應(yīng)性強(qiáng)。本方法適用于生產(chǎn)線上各種工件的定位與分類,包括螺母,鑰匙,墊片等。
附圖說明
圖1是工件定位與識(shí)別流程圖;
圖2是六角螺母原圖;
圖3是圖2基于直方圖兩個(gè)最大值對(duì)應(yīng)灰度的灰度拉伸圖;
圖4是圖3基于最大平方和的閾值分割算法圖;
圖5是圖4局部區(qū)域填充圖;
圖6是圖5被包圍區(qū)域填充圖;
圖7圖8圖9圖10是圖2切割出的六角螺母圖;
圖11是方形螺母原圖;
圖12是圖11基于直方圖兩個(gè)最大值對(duì)應(yīng)灰度的灰度拉伸圖;
圖13是圖12基于最大平方和的閾值分割圖;
圖14是圖13局部區(qū)域填充圖;
圖15是圖14被包圍區(qū)域填充圖;
圖16是基于最小外接矩形分割出的方形螺母;
圖17是最小外接矩形分割圖;
圖18是被包圍區(qū)域填充算法流程圖。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明。
本發(fā)明用于工件的定位與識(shí)別,其定位與識(shí)別流程圖如圖1所示。
圖像預(yù)處理階段:首先去除圖像噪音的濾波器為高斯平滑算子,高斯平滑算子模板是通過高斯關(guān)系式來設(shè)置的。坐標(biāo)x,y處的高斯函數(shù)g利用方差σ2根據(jù)下式來控制:
通過,此式計(jì)算模板中的權(quán)值,得到高斯平滑模板。其中,σ2的大小與模板大小人為設(shè)置。
把已經(jīng)平滑的圖像,使用基于直方圖兩個(gè)最大值的對(duì)應(yīng)灰度的圖像增強(qiáng)算法進(jìn)行灰度拉伸,設(shè)圖像的灰度級(jí)數(shù)為0~M,背景色為白色,前景色為黑色,前景背景的灰度值是直方圖中最多的像素,在0~M/2中找到一個(gè)直方圖最大值對(duì)應(yīng)的灰度值a,在M/2~M中找到一個(gè)直方圖最大值對(duì)應(yīng)的灰度值b,根據(jù)兩個(gè)區(qū)域的峰值對(duì)應(yīng)的像素,進(jìn)行對(duì)比度增強(qiáng)。輸入圖像f(x,y)的灰度級(jí)別為0~M級(jí),圖像增強(qiáng)后圖像g(x,y)的灰度也為0~M級(jí),區(qū)間[a,b]、[c,d]分別為源圖像與增強(qiáng)圖像的某一灰度區(qū)間,其中M=255的條件下,設(shè)置c=10,d=245,c、d的值是根據(jù)人眼能夠分辨的像素設(shè)置。
得到的對(duì)比度很強(qiáng)的圖像,進(jìn)行最大平方和閾值分割。設(shè)以灰度值T為閾值,將直方圖按T分成兩段。其中[0~T]之間的灰度期望值為u0,[T+1~255]的灰度期望為u1,[0~T]之間灰度的概率和為w0,[T+1~255]之間灰度的概率和為w1。存在閾值T,T∈[0~255]使得的值最大,以閾值T將源圖像二值化,當(dāng)前像素的灰度大于閾值T設(shè)為白色,小于閾值T設(shè)為黑色。
設(shè)直方圖數(shù)組為Hist[256],灰度值為i的像素個(gè)數(shù)為ni=Hist[i],則:
for(int t=0;t<img.width;t++)
for(int k=0;k<img.height;k++)
if(i==img.pixel(x,y))
Hist[i]++;
灰度值在[0~T]間的總像素?cái)?shù)為N,對(duì)應(yīng)的概率為:
灰度值在[T+1~255]之間像素的總數(shù)設(shè)為M,則灰度值為i的像素的概率為:
設(shè)可求得最大平方和對(duì)應(yīng)的閾值T,求出max{sum[i],i∈[0~255]}對(duì)應(yīng)的i即為所求。
工件區(qū)域定位與分割階段:閾值分割后的圖像,存在工件區(qū)域不連通的問題與蟲洞現(xiàn)象。給出局部區(qū)域填充算法,修復(fù)二值圖像中工件區(qū)域不連通的部分,使目標(biāo)區(qū)域連接成一個(gè)連通區(qū)域。該方法分為縱向局部填充和橫向局部填充。黑色為前景,白色為背景,橫向填充:同一行兩個(gè)黑點(diǎn)之間的像素全部是白色且兩點(diǎn)之間的距離不大于10像素長度的區(qū)域,則填充為黑色;縱向填充:同一列兩個(gè)黑點(diǎn)之間的像素全部是白色且兩點(diǎn)間的像素長度不大于10,則填充為黑色。
針對(duì)蟲洞現(xiàn)象,給出被包圍區(qū)域填充算法。設(shè)白色點(diǎn)為背景,黑色點(diǎn)為前景。如果白色連通區(qū)域到達(dá)邊緣點(diǎn),則該區(qū)域不被包圍,如果白色連通區(qū)域不能到達(dá)邊緣點(diǎn),則該區(qū)域被包圍,被包圍區(qū)域填充為黑色。采用四鄰域的方法,判斷區(qū)域是否連通。
如圖17所示,工件區(qū)域完全聯(lián)通之后,通過建立凸外形并且旋轉(zhuǎn)外形以尋找給定2D點(diǎn)集的最小面積的包圍矩形。根據(jù)條形碼區(qū)域最小外接矩形的角度,對(duì)該區(qū)域進(jìn)行切割,給出基于最小外接矩形的工件區(qū)域分割算法。根據(jù)幾何關(guān)系,源圖像對(duì)應(yīng)目標(biāo)圖像的像素,得公式:
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是源圖像中的坐標(biāo),i、j是目的圖像的像素坐標(biāo),0≤i<dst.width,0≤j<dst.height,pt[2]是工件區(qū)域圖像坐標(biāo)系的原點(diǎn)。
特征提取與分類階段:已分割出的工件圖像,提取出不變矩特征與幾何特征,對(duì)提出的特征樣本集,使用基于高斯徑向基(RBF)的支持向量機(jī)進(jìn)行訓(xùn)練。
高斯核函數(shù)為:
對(duì)應(yīng)的支持向量機(jī)是高斯徑向基函數(shù)(Radial basis function)的分類器。在此情形下,分類決策函數(shù)成為:
實(shí)施例:將本發(fā)明方法在PC上進(jìn)行仿真驗(yàn)證,所用的編程軟件為VS2010,opencv2.4.9,VC++編程,選擇工件有鑰匙、四角螺母、六角螺母等。
主要的測(cè)試環(huán)境如下:
操作系統(tǒng):Microsoft Windows7
CPU:Pentium(R)Dual-Core
主頻:2.93GHz
內(nèi)存:2G
本實(shí)施例以典型工件方形螺母、六角螺母和鑰匙的定位與識(shí)別為例,進(jìn)行工件區(qū)域的分割與特征提取。
以六角螺母如圖2、方形螺母如圖11的分割與識(shí)別為例,具體流程如下:
采集方形螺母、六角螺母與鑰匙三種不同工件的圖片,根據(jù)圖像預(yù)處理、工件區(qū)域定位與分割、特征提取與分類的步驟處理圖像。如圖3是對(duì)圖2使用基于直方圖兩個(gè)最大值對(duì)應(yīng)灰度的對(duì)比度增強(qiáng)圖,圖4是對(duì)圖3基于最大平方和的閾值分割圖,圖5是圖4的局部填充圖,圖6是圖5的被包圍區(qū)域填充圖,如圖18是被包圍區(qū)域填充算法的流程圖,判斷當(dāng)前白色區(qū)域是否達(dá)到邊緣點(diǎn),不到達(dá)邊緣則是被包圍區(qū)域,設(shè)置該區(qū)域灰度為黑色,否則,保持該區(qū)域灰度不變,圖7~圖10是分割出六角螺母子圖像。之后,提取各種工件的不變矩特征與幾何特征特征,每種工件的特征可以提取多組,每個(gè)特征組對(duì)應(yīng)的一個(gè)工件類別,多個(gè)特征組形成一個(gè)特征集,對(duì)特征集進(jìn)行訓(xùn)練。訓(xùn)練時(shí),先給出樣本集中每組特征的類別,并把特征組與對(duì)應(yīng)的類別寫入txt文件中,使用基于高斯徑向基(RBF)核函數(shù)的支持向量機(jī)訓(xùn)練樣本集。
訓(xùn)練好分類器后,輸入新的圖像,提取到該圖像中工件區(qū)域子圖像的特征組后,根據(jù)已經(jīng)訓(xùn)練好的分類器,對(duì)本組新特征進(jìn)行分類。
通過分析,可以得到如下結(jié)論:
1.本發(fā)明方法可以保證工件定位的準(zhǔn)確度的要求,可以分割出傾斜的工件,給出工件所在最小外接矩形的中心位置,與工件的傾斜角。如圖12是由圖11的對(duì)比度增強(qiáng)圖,圖13是圖12的最大平方和閾值分割,圖14是圖13的局部區(qū)域填充,圖15是圖14的被包圍區(qū)域填充。由圖11可以看出,方形螺母與圖像的水平線存在一個(gè)傾斜角,從分割出的方形螺母如圖16可以看出,本發(fā)明基于最小外接矩形的工件區(qū)域分割算法,不但可以給出工件的準(zhǔn)確位置,而且可以準(zhǔn)確分割出含有工件區(qū)域的子圖像。
2.本發(fā)明方法算法簡(jiǎn)單,執(zhí)行效率高。圖像處理階段,使用的是基于高斯平滑算子模板、基于直方圖的灰度拉伸、基于最大平方和的閾值分割算法,以及局部區(qū)域填充算法和被包圍區(qū)域填充算法,算法設(shè)計(jì)簡(jiǎn)單,時(shí)間復(fù)雜度低,計(jì)算量小;圖像定位與分割階段,使用最小外接矩形分割算法,不需要對(duì)原圖像掃描,只需用工件區(qū)域子圖像坐標(biāo),計(jì)算出原圖像坐標(biāo),把源圖像坐標(biāo)處像素的灰度值作為當(dāng)前子圖像當(dāng)前坐標(biāo)處像素的灰度值,計(jì)算量小。
3.分類準(zhǔn)確,適用性強(qiáng)?;诟咚箯较蚧撕瘮?shù)的支持向量機(jī)也是大多數(shù)時(shí)候的選擇,具有訓(xùn)練速度快,分類準(zhǔn)確的特點(diǎn)。通過對(duì)方形螺母、六角螺母和鑰匙的分類可以看出,本發(fā)明可以使用多中工件的定位與分類工作。