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