本發(fā)明涉及視覺(jué)檢測(cè)技術(shù)中的結(jié)構(gòu)光投射條紋編碼方法,具體涉及一種基于時(shí)域空域混合編碼的結(jié)構(gòu)光條紋投射方法。
背景技術(shù):
結(jié)構(gòu)光三維視覺(jué)測(cè)量技術(shù),具有視覺(jué)測(cè)量的非接觸、速度快、自動(dòng)化程度高,柔性好等優(yōu)點(diǎn)。結(jié)構(gòu)光三維視覺(jué)基于光學(xué)三角法原理,通過(guò)計(jì)算采集圖像的各種光模式特征點(diǎn)的偏移信息反算出被測(cè)物體的表面輪廓。光學(xué)投射器投射確定的光模式,使得結(jié)構(gòu)光圖像信息易于提取,因而測(cè)量精度較高,廣泛應(yīng)用于各種工業(yè)產(chǎn)品的在線檢測(cè)。
面結(jié)構(gòu)光投射方式相比較于點(diǎn)結(jié)構(gòu)光和線結(jié)構(gòu)光具有不需要運(yùn)動(dòng)機(jī)構(gòu)協(xié)助,可實(shí)現(xiàn)實(shí)時(shí)測(cè)量,系統(tǒng)成本低等優(yōu)點(diǎn)在近些年來(lái)得到了發(fā)展。因結(jié)構(gòu)光光學(xué)投射器投射出的圖案和攝像機(jī)需要拍攝的圖片數(shù)量不同,可以分為彩色編碼投射法,灰度編碼法,基于傅里葉變換的投射方法,條紋序列投射法和混合圖案投射法等。其中彩色編碼投射法只需要拍攝一幅圖片就可以完成測(cè)量,但是其缺點(diǎn)也顯而易見(jiàn),在測(cè)量部分彩色物體時(shí),這種方法的測(cè)量信息會(huì)受到被測(cè)物表面顏色的干擾,使測(cè)量結(jié)果變得不可靠?;叶染幋a法同樣需要拍攝一幅圖片就可以完成測(cè)量,并且測(cè)量結(jié)果不受被測(cè)物表面色彩的干擾,但是由于其解碼原理是在空域上實(shí)現(xiàn)的,因此為了測(cè)量表面不連續(xù)的物體這種方法編碼時(shí)需要采用pseudo隨機(jī)二維序列(PRBA)的原理實(shí)現(xiàn)?;诟道锶~變換的條紋投射方法是一種比較經(jīng)典的空域結(jié)構(gòu)光測(cè)量方法,但是如何防止其頻譜泄露一直是難以解決的問(wèn)題,而且這種方法解相位算法復(fù)雜,不適合測(cè)量表面不連續(xù)的物體,在具體應(yīng)用時(shí)具有較多問(wèn)題。條紋序列投射法是一種時(shí)域條紋投射方法,可以測(cè)量具有任意表面特征的物體,但是由于其需要拍攝的圖像過(guò)多,在實(shí)際測(cè)量時(shí)難以提高測(cè)量速度。當(dāng)測(cè)量速度的要求不是很高時(shí),可以將以上的兩種或更多的方法結(jié)合來(lái)進(jìn)行測(cè)量,這就是混合圖案投射法。一種比較經(jīng)典的方法就是格雷碼結(jié)合相移的方法,這種方法不僅克服了相移法解相位算法復(fù)雜的問(wèn)題,而且也相較于格雷碼測(cè)量方法具有更高的測(cè)量精度。斯坦福大學(xué)的Hall-HoltO等人設(shè)計(jì)了一種條紋投射方法,通過(guò)投射四幅不同的二值條紋圖案實(shí)現(xiàn)了三維形貌測(cè)量,但是這種方法只能達(dá)到像素級(jí)精度且測(cè)量結(jié)果容易受被測(cè)物表面紋理的影響。清華大學(xué)徐靜等人設(shè)計(jì)了一種時(shí)域結(jié)合空域編碼的條紋投射方法,通過(guò)投射三幅不同的二值條紋圖案,實(shí)現(xiàn)了物體表面的三維形貌測(cè)量。但是這種方法提取條紋亞像素級(jí)坐標(biāo)方法困難,并且各條紋之間具有較多約束,因而編碼過(guò)程較為復(fù)雜??偨Y(jié)上述研究可以發(fā)現(xiàn),一種好的條紋投射方法不僅要求編碼方法相對(duì)簡(jiǎn)單,測(cè)量精度高,魯棒性強(qiáng),且要求需要拍攝的圖像數(shù)量盡量少。
技術(shù)實(shí)現(xiàn)要素:
為克服現(xiàn)有技術(shù)的不足,本發(fā)明旨在提供一種時(shí)域結(jié)合空域混合編碼的結(jié)構(gòu)光投射方式,使得結(jié)構(gòu)光測(cè)量方法編碼原理相對(duì)簡(jiǎn)單,測(cè)量速度較快,魯棒性強(qiáng),且獲得的測(cè)量結(jié)果具有亞像素級(jí)精度等優(yōu)點(diǎn)。本發(fā)明采用的技術(shù)方案是,基于時(shí)域空域混合編碼的結(jié)構(gòu)光條紋投射方法,包括編碼投影步驟、條紋檢測(cè)步驟;
編碼投影步驟包括時(shí)域編碼、空域編碼,時(shí)域編碼具體是,采用十進(jìn)制來(lái)表述在時(shí)域上的編碼方式,單個(gè)周期的投影條紋隨著時(shí)間變化有001,010,011,100,101,110六種編碼情況,在這里,001代表投影儀投射的第一幅圖像和第二幅圖像的條紋編碼值是0,而對(duì)應(yīng)的第三幅圖像的編碼值是1,其中0對(duì)應(yīng)著相應(yīng)圖像中的暗條紋,1對(duì)應(yīng)著相應(yīng)圖像中的亮條紋,將每個(gè)周期條紋的灰度分布設(shè)計(jì)為正弦式分布,如條紋編碼為1,則投射出的條紋灰度按正弦波的上半部分規(guī)律分布,反之,則按正弦波的下半部分規(guī)律分布,其具體約束如式(1):
其中,(ui,vi)為圖像坐標(biāo),w為每個(gè)條紋的周期寬度,(1)中上式為條紋編碼值為1的條紋灰度分布規(guī)律,下式則為條紋編碼值為0的條紋灰度分布規(guī)律;
空域編碼具體步驟是,利用相鄰幾個(gè)周期的條紋的編碼值在空域進(jìn)行編碼,對(duì)于第一個(gè)周期的條紋,共有6種編碼值的選擇方式,而其相鄰周期的條紋編碼值共有5種選擇,第三個(gè)周期的條紋編碼值也有5種選擇,以此類(lèi)推;設(shè)n為空域上每組編碼子序列需要的連續(xù)條紋周期數(shù)目,可知可能的子序列的數(shù)量共有
m=6×5n-1 (2)
也就是存在m種編碼值,在空域編碼時(shí)每相鄰四個(gè)周期的條紋組成一個(gè)編碼子序列,對(duì)應(yīng)一個(gè)編碼值p,以保證每個(gè)周期的條紋對(duì)應(yīng)一個(gè)單獨(dú)的編碼值;
獲得滿足要求的編碼序列首先需要利用窮舉法列出所有編碼子序列的可能性,然后利用歐拉環(huán)形算法將各個(gè)序列連接起來(lái),假設(shè)子序列的長(zhǎng)度為n,則需要滿足前一子序列的后n-1位與后一子序列的前n-1的時(shí)域編碼值相同,這樣的一種完整的序列滿足系統(tǒng)要求用來(lái)進(jìn)行測(cè)量;
條紋檢測(cè)步驟具體是,首先,對(duì)攝像機(jī)拍攝得到的三幅條紋投射圖像進(jìn)行均值濾波去除高斯噪聲,對(duì)經(jīng)過(guò)濾波的圖像進(jìn)行二值化處理獲得每個(gè)周期的條紋在對(duì)應(yīng)圖像中的編碼值,最后參照編碼方法,利用獲得的二值圖像解碼,從而獲得各個(gè)周期條紋對(duì)應(yīng)的編碼值p以及條紋中心的坐標(biāo)(u,v)。
圖像二值化方法如下:
(1)遍歷采集到的三幅圖像,將圖像對(duì)應(yīng)像素的灰度值進(jìn)行大小排序,從小到大依次是G1,G2,G3;
(2)計(jì)算各像素點(diǎn)的對(duì)比度
設(shè)定一個(gè)閾值,當(dāng)對(duì)比度小于這個(gè)閾值時(shí),認(rèn)為這個(gè)像素點(diǎn)處在低對(duì)比度區(qū)域,將三幅圖像對(duì)應(yīng)點(diǎn)的二值化結(jié)果都設(shè)為0。這種情況有兩種可能的原因造成,第一種情況是攝像機(jī)拍攝到了投影儀條紋沒(méi)有照射到的區(qū)域,即陰影區(qū)域,第二種是由于條紋編碼特征造成的,即當(dāng)三組條紋的值均接近于正弦條紋的灰度中間值時(shí),三組條紋灰度值非常接近,造成對(duì)比度偏低,這種情況多發(fā)生在每組條紋的邊緣區(qū)域。
(3)當(dāng)對(duì)比度大于閾值contrast時(shí),認(rèn)為這個(gè)像素點(diǎn)處在高對(duì)比度區(qū)域,可以進(jìn)行下一步處理,對(duì)于高對(duì)比度區(qū)域,設(shè)定
M1=G2-G1,M2=G3-G2 (4)
對(duì)二者求商,
M2/M1=(G3-G2)/(G2-G1) (5)
若M2/M1>1,則令G3對(duì)應(yīng)圖像的二值化結(jié)果為255,對(duì)應(yīng)的編碼值為1,G1和G2對(duì)應(yīng)圖像的二值化結(jié)果和編碼值均為0,反之,令G1對(duì)應(yīng)圖像的二值化結(jié)果和編碼值為0,G2和G3對(duì)應(yīng)圖像的二值化結(jié)果為255,編碼值為1。
圖像完成二值化后,需識(shí)別每組條紋中心以及完成解碼過(guò)程,具體過(guò)程如下:
(1)獲取編碼圖像,在時(shí)域上獲取每個(gè)周期內(nèi)條紋在時(shí)域上的編碼值q;
(2)對(duì)圖像的每一行從左到右進(jìn)行遍歷,若圖像像素點(diǎn)的編碼值q=0,則不處理此點(diǎn)。若不為0,則檢查下一個(gè)像素點(diǎn)的編碼值是否和此點(diǎn)相同;
(3)若編碼值相同,則返回步驟(2),若不同,則計(jì)算之前具有相同編碼點(diǎn)的數(shù)量,設(shè)定一閾值,若編碼點(diǎn)數(shù)小于此閾值,則認(rèn)為這些像素點(diǎn)是由于雜散光影響造成的噪聲點(diǎn),不進(jìn)行處理。
(4)若編碼點(diǎn)數(shù)大于此閾值,則利用灰度重心法求經(jīng)中值濾波后的亮條紋中心點(diǎn)坐標(biāo)作為此周期條紋的坐標(biāo),進(jìn)行空域解碼后對(duì)應(yīng)的灰度條紋的編碼值作為此周期內(nèi)條紋的編碼值。
在獲取了每個(gè)條紋中心的亞像素精度坐標(biāo)(u,v)以及對(duì)應(yīng)的編碼值p后,就可以利用(u,v,p)和對(duì)應(yīng)的世界坐標(biāo)(xw,yw,zw)可以建立圖像坐標(biāo)系和世界坐標(biāo)系之間的對(duì)應(yīng)關(guān)系。
本發(fā)明的特點(diǎn)及有益效果是:
本發(fā)明提出了一種基于時(shí)域空域混合編碼的結(jié)構(gòu)光條紋投射方法,通過(guò)投射三幅編碼圖像,利用攝像機(jī)拍攝被條紋照射到的被測(cè)物圖像,采用本發(fā)明提出的方法對(duì)三幅圖像進(jìn)行二值化,條紋亞像素級(jí)坐標(biāo)獲取和解碼,進(jìn)而獲取被測(cè)物表面的三維信息。
該方法適合于在各種測(cè)量條件下進(jìn)行結(jié)構(gòu)光測(cè)量,尤其在被測(cè)物表面紋理復(fù)雜,測(cè)量環(huán)境光照條件變化較大,實(shí)時(shí)性要求較高的條件下,本發(fā)明均能得到較好的測(cè)量結(jié)果,具有較好的技術(shù)優(yōu)勢(shì)。
附圖說(shuō)明:
圖1.依據(jù)編碼原則設(shè)計(jì)的投射條紋圖案。
圖2.拍攝到的條紋圖像。
圖3.圖像二值化結(jié)果。
圖4.(a)編碼圖像(b)條紋中心提取結(jié)果圖。
具體實(shí)施方式
本發(fā)明采用的技術(shù)方案是,
1.條紋編碼規(guī)則
本發(fā)明設(shè)計(jì)了一種條紋投射編碼方法,這種條紋投射方法每次測(cè)量時(shí)利用投影儀投射三幅圖像,進(jìn)行圖像處理獲取每個(gè)周期的條紋中心坐標(biāo)以及對(duì)應(yīng)的編碼值,用來(lái)建立投影儀和攝像機(jī)之間的對(duì)應(yīng)關(guān)系。
為了簡(jiǎn)化條紋圖樣隨時(shí)間變化的表述,采用十進(jìn)制來(lái)表述本發(fā)明在時(shí)域上的編碼方式。單個(gè)周期的投影條紋隨著時(shí)間變化有001,010,011,100,101,110六種編碼情況,也就是1,2,3,4,5,6這六種編碼值。在這里,001代表投影儀投射的第一幅圖像和第二幅圖像的條紋編碼值是0,而對(duì)應(yīng)的第三幅圖像的編碼值是1,其中0對(duì)應(yīng)著相應(yīng)圖像中的暗條紋,1對(duì)應(yīng)著相應(yīng)圖像中的亮條紋。如果每個(gè)周期的條紋灰度按二值條紋分布方式進(jìn)行設(shè)計(jì),則實(shí)際測(cè)量時(shí),本發(fā)明提出的編碼方式只能獲得條紋的邊緣坐標(biāo)信息而非條紋中心信息,其坐標(biāo)也必然只能達(dá)到像素級(jí)精度。因此,需要將每個(gè)周期條紋的灰度分布設(shè)計(jì)為正弦式分布,如條紋編碼為1,則投射出的條紋灰度按正弦波的上半部分規(guī)律分布,反之,則按正弦波的下半部分規(guī)律分布。其具體約束如式(1)。
其中,(ui,vi)為圖像坐標(biāo),w為每個(gè)條紋的周期寬度,(1)中上式為條紋編碼值為1的條紋灰度分布規(guī)律,下式則為條紋編碼值為0的條紋灰度分布規(guī)律。
下面說(shuō)明如何在空域?qū)l紋進(jìn)行編碼。在利用不同時(shí)間點(diǎn)的三幅圖像進(jìn)行時(shí)域編碼后,每個(gè)周期條紋的編碼值必然是1,2,3,4,5,6這六種情況之一。由于在測(cè)量中每個(gè)周期的條紋需要存在單獨(dú)的編碼值,因此需要利用相鄰幾個(gè)周期的條紋的編碼值在空域進(jìn)行編碼。對(duì)于第一個(gè)周期的條紋,共有6種編碼值的選擇方式,而其相鄰周期的條紋編碼值共有5種選擇,第三個(gè)周期的條紋編碼值也有5種選擇,以此類(lèi)推。設(shè)n為空域上每組編碼子序列需要的連續(xù)條紋周期數(shù)目,可知可能的子序列的數(shù)量共有
m=6×5n-1 (2)
也就是存在m種編碼值。比如說(shuō),我們利用分辨率為912*1180的投影儀想得到456個(gè)數(shù)值條紋,則子序列的長(zhǎng)度最少為4。在空域編碼時(shí)每相鄰四個(gè)周期的條紋組成一個(gè)編碼子序列,對(duì)應(yīng)一個(gè)編碼值p,這樣做可以保證每個(gè)周期的條紋對(duì)應(yīng)一個(gè)單獨(dú)的編碼值。
按照上述編碼規(guī)律進(jìn)行時(shí)域和空域編碼在實(shí)際測(cè)量時(shí)具有很高的精度和很好的魯棒性。
首先,每個(gè)周期條紋的灰度在時(shí)域上的分布情況需要隨著投射圖像的變化而變化可以使解碼效果不受被測(cè)量物體表面顏色、紋理等的影響。如果被檢測(cè)物體的表面顏色有深有淺,那么當(dāng)亮條紋投射到深色區(qū)域和暗條紋投射到淺色區(qū)域時(shí),攝像機(jī)獲取的圖像中,兩個(gè)條紋對(duì)應(yīng)的灰度值有可能很接近,因此,很難利用求取全局閾值的方法對(duì)得到的圖像進(jìn)行二值化,解碼過(guò)程會(huì)變得很困難。相反,可以利用三幅圖像同樣位置的條紋互相之間的約束關(guān)系使解碼過(guò)程變得容易且準(zhǔn)確?;谶@個(gè)原因,在時(shí)域上由三幅投射圖像共同組成的三位二進(jìn)制編碼中000和111這兩種編碼方式被剔除掉了。
其次,同一時(shí)間點(diǎn)上相鄰兩個(gè)周期的條紋編碼值不同,這樣做可以消除掉由于投射深度的變化造成的條紋周期的變化給解碼帶來(lái)的影響。由于條紋的周期寬度隨著投影儀投射深度的增加而增大,若允許相鄰兩個(gè)周期在時(shí)域上的編碼值相同的情況存在,則在實(shí)際測(cè)量中很難判斷單個(gè)周期條紋包含的實(shí)際條紋周期數(shù),會(huì)造成解碼錯(cuò)誤。
最后,為了獲得條紋中心的亞像素精度級(jí)坐標(biāo),單周期內(nèi)條紋的亮度分布規(guī)律是正弦的,這樣可以類(lèi)比線激光測(cè)量的方法,在檢測(cè)到了每個(gè)周期條紋的坐標(biāo)范圍后,可以利用灰度重心法求取條紋中心的亞像素級(jí)精度的坐標(biāo),提高系統(tǒng)測(cè)量精度和分辨力,且方法簡(jiǎn)單易行。
獲得滿足要求的編碼序列首先需要利用窮舉法列出所有編碼子序列的可能性,然后利用歐拉環(huán)形算法將各個(gè)序列連接起來(lái)。假設(shè)子序列的長(zhǎng)度為n,則需要滿足前一子序列的后n-1位與后一子序列的前n-1的時(shí)域編碼值相同,這樣的一種完整的序列滿足系統(tǒng)要求,可以用來(lái)進(jìn)行測(cè)量。
2.條紋檢測(cè)
首先,對(duì)攝像機(jī)拍攝得到的三幅條紋投射圖像進(jìn)行均值濾波去除高斯噪聲,對(duì)經(jīng)過(guò)濾波的圖像進(jìn)行二值化處理獲得每個(gè)周期的條紋在對(duì)應(yīng)圖像中的編碼值,最后按照上文所述的編碼方法,利用獲得的二值圖像解碼,就可以獲得各個(gè)周期條紋對(duì)應(yīng)的編碼值p以及條紋中心的坐標(biāo)(u,v)。
圖像二值化方法如下:
(1)遍歷采集到的三幅圖像,將圖像對(duì)應(yīng)像素的灰度值進(jìn)行大小排序,從小到大依次是G1,G2,G3;
(2)計(jì)算各像素點(diǎn)的對(duì)比度
設(shè)定一個(gè)閾值,當(dāng)對(duì)比度小于這個(gè)閾值時(shí),認(rèn)為這個(gè)像素點(diǎn)處在低對(duì)比度區(qū)域,將三幅圖像對(duì)應(yīng)點(diǎn)的二值化結(jié)果都設(shè)為0。這種情況有兩種可能的原因造成,第一種情況是攝像機(jī)拍攝到了投影儀條紋沒(méi)有照射到的區(qū)域,即陰影區(qū)域,第二種是由于條紋編碼特征造成的,即當(dāng)三組條紋的值均接近于正弦條紋的灰度中間值時(shí),三組條紋灰度值非常接近,造成對(duì)比度偏低,這種情況多發(fā)生在每組條紋的邊緣區(qū)域。
(3)當(dāng)對(duì)比度大于閾值contrast時(shí),認(rèn)為這個(gè)像素點(diǎn)處在高對(duì)比度區(qū)域,可以進(jìn)行下一步處理,對(duì)于高對(duì)比度區(qū)域,設(shè)定
M1=G2-G1,M2=G3-G2 (4)
對(duì)二者求商,
M2/M1=(G3-G2)/(G2-G1) (5)
若M2/M1>1,則令G3對(duì)應(yīng)圖像的二值化結(jié)果為255,對(duì)應(yīng)的編碼值為1,G1和G2對(duì)應(yīng)圖像的二值化結(jié)果和編碼值均為0,反之,令G1對(duì)應(yīng)圖像的二值化結(jié)果和編碼值為0,G2和G3對(duì)應(yīng)圖像的二值化結(jié)果為255,編碼值為1。
圖像完成二值化后,需識(shí)別每組條紋中心以及完成解碼過(guò)程,具體過(guò)程如下:
(1)獲取編碼圖像,在時(shí)域上獲取每個(gè)周期內(nèi)條紋在時(shí)域上的編碼值q;
(2)對(duì)圖像的每一行從左到右進(jìn)行遍歷,若圖像像素點(diǎn)的編碼值q=0,則不處理此點(diǎn)。若不為0,則檢查下一個(gè)像素點(diǎn)的編碼值是否和此點(diǎn)相同;
(3)若編碼值相同,則返回步驟(2),若不同,則計(jì)算之前具有相同編碼點(diǎn)的數(shù)量,設(shè)定一閾值,若編碼點(diǎn)數(shù)小于此閾值,則認(rèn)為這些像素點(diǎn)是由于雜散光影響造成的噪聲點(diǎn),不進(jìn)行處理。
(4)若編碼點(diǎn)數(shù)大于此閾值,則利用灰度重心法求經(jīng)中值濾波后的亮條紋中心點(diǎn)坐標(biāo)作為此周期條紋的坐標(biāo),進(jìn)行空域解碼后對(duì)應(yīng)的灰度條紋的編碼值作為此周期內(nèi)條紋的編碼值。
在獲取了每個(gè)條紋中心的亞像素精度坐標(biāo)(u,v)以及對(duì)應(yīng)的編碼值p后,就可以利用(u,v,p)和對(duì)應(yīng)的世界坐標(biāo)(xw,yw,zw)可以建立圖像坐標(biāo)系和世界坐標(biāo)系之間的對(duì)應(yīng)關(guān)系。
根據(jù)本發(fā)明提出的編碼條紋設(shè)計(jì)方法,設(shè)計(jì)的一種編碼條紋如圖1。利用投影儀投射出設(shè)計(jì)的條紋,攝像機(jī)同時(shí)拍攝被條紋照射到的被測(cè)物,得到如圖2所示的三幅圖像。首先對(duì)三幅圖像進(jìn)行均值濾波去除高斯噪聲,利用本文提出的二值化方法對(duì)三幅圖像二值化處理,得到如圖3所示的三幅圖像。進(jìn)一步處理圖像,利用本發(fā)明提出的條紋編碼方法和灰度重心法,獲得了編碼圖像以及每個(gè)周期條紋的中心坐標(biāo),分別如圖4(a)(b)所示。
通過(guò)本發(fā)明提出的條紋投射方法,利用2.5mm量塊在三種不同光照條件下各測(cè)得10組數(shù)據(jù)進(jìn)行實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)結(jié)果如表1所示。
表1實(shí)驗(yàn)數(shù)據(jù)(單位:mm)