專(zhuān)利名稱(chēng):一種結(jié)構(gòu)光編碼、解碼方法及編碼、解碼裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種結(jié)構(gòu)光編碼方法、解碼方法及結(jié)構(gòu)光編碼裝置、解碼裝置。
背景技術(shù):
在計(jì)算機(jī)視覺(jué)、機(jī)器人學(xué)以及計(jì)算機(jī)圖形學(xué)等領(lǐng)域中,通常需要獲取三 維目標(biāo)的外形等空間信息,以便將物體在計(jì)算機(jī)中進(jìn)行真實(shí)的三維重建。為了獲取三維目標(biāo)的空間信息,目前經(jīng)常采用通過(guò)光柵投影結(jié)構(gòu)光的方 法,該方法中,投射光束通過(guò)根據(jù)空間結(jié)構(gòu)光編碼的光柵投影在三維被測(cè)目 標(biāo)上形成結(jié)構(gòu)光,被測(cè)目標(biāo)的空間信息經(jīng)過(guò)結(jié)構(gòu)光編碼成為條紋圖形,這些 變形條紋由與投影中心成 一 定角度的攝像機(jī)記錄,通過(guò)對(duì)記錄的 一 系列投影 光柵進(jìn)行結(jié)構(gòu)光解碼及后續(xù)處理,得到被測(cè)目標(biāo)每個(gè)空間點(diǎn)的測(cè)量信息???見(jiàn),結(jié)構(gòu)光編碼方法在基于結(jié)構(gòu)光投影法的數(shù)據(jù)獲取中起著至關(guān)重要的作 用,編碼技術(shù)的好壞直接影響著系統(tǒng)的測(cè)量精度、速度和可靠性。目前,常用的編碼方法主要分為基于空間鄰域信息的編碼和基于時(shí)間序 列的編碼兩種。其中,基于時(shí)間序列的編碼順序的將多種光柵投影到同一個(gè) 物體上,同步采集成像信息并按順序排列起來(lái),從而得到連續(xù)的顏色信息來(lái) 組成編碼,但這類(lèi)方法需要有專(zhuān)門(mén)的設(shè)備來(lái)控制多個(gè)光柵的順序投影和同步 采集,操作起來(lái)比較困難?;诳臻g鄰域信息的編碼只投影一種光柵,利用 相鄰的條紋來(lái)組成不同的編碼,這類(lèi)方法操作簡(jiǎn)單,易于實(shí)現(xiàn)。但這類(lèi)方法目前多是基于二維信息進(jìn)行編碼的。如圖l和圖2所示,圖l中利用網(wǎng)格點(diǎn) 的不同構(gòu)造作為基本編碼單元,如圖1中的四種基本編碼單元0+、 0-、 l+、 l-;圖2中利用正方體內(nèi)黑白像素的數(shù)量對(duì)比作為基本編碼單元,如圖2中的三種基本編碼單元。之后,利用所確定的基本編碼單元進(jìn)行結(jié)構(gòu)光編碼。 這類(lèi)方法中由于多是基于二維信息進(jìn)行編碼的,因此在解碼時(shí),需要對(duì)結(jié)構(gòu) 光圖像在二維空間中識(shí)別出這些基本編碼單元,即提取出上述的網(wǎng)格點(diǎn)或正 方體中的黑白像素,而在二維空間中提取網(wǎng)格點(diǎn)時(shí),網(wǎng)格點(diǎn)的顏色很容易受到干擾;在二維空間中提取正方形時(shí),由于正方形容易受變形的影響,因此提取較困難,這些勢(shì)必造成解碼效率較低。 發(fā)明內(nèi)容有鑒于此,本發(fā)明中一方面提供一種結(jié)構(gòu)光編碼方法和解碼方法,另一 方面提供一種結(jié)構(gòu)光編碼裝置和解碼裝置,以便提高結(jié)構(gòu)光的解碼效率。本發(fā)明所提供的結(jié)構(gòu)光編碼方法,包括基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元;按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原則,利用所述基本編碼單元生成編碼序列,所述編碼序列中任意相鄰的N個(gè)基本編碼單元具有唯一的列編碼;按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光;其中,M和N為大于1的整數(shù)。較佳地,所述M根線條包括明、暗兩根線條;所述基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元包 括基于按設(shè)定順序排列為左右的所述兩根線條的寬度對(duì)比,確定左側(cè)線條比 右側(cè)線條寬、左側(cè)線條比右側(cè)線條窄和左側(cè)線條與右側(cè)線條寬度相等的三種基 本編碼單元。較佳地,所述設(shè)定順序?yàn)槊骶€條在左、暗線條在右;或者為明線條在 右、暗線條在左。較佳地,所述N為4。本發(fā)明所提供的結(jié)構(gòu)光解碼方法,包括 從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn);根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線條的寬度; 根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解析出基本編碼單元; 根據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰的N個(gè)基本編碼單元對(duì)應(yīng) 的基本列編碼,根據(jù)所述基本列編碼,得到結(jié)構(gòu)光的編碼序列; 其中,M和N為大于1的整數(shù)。較佳地,所述從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn)包括從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描;根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮度曲線;確定所述亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn),將所述過(guò)渡點(diǎn)作為不 同線條間的邊界點(diǎn)。較佳地,所述確定亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn)包括根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,所述計(jì)算間隔大于或等于亮度曲線中 相鄰一個(gè)波峰和一個(gè)波谷之間的距離,且小于相鄰的兩個(gè)波峰和一個(gè)波谷、或 一個(gè)波J奪和兩個(gè)波谷的距離;在所述亮度區(qū)域中從左到右依次計(jì)算每個(gè)計(jì)算間隔內(nèi)的最大值和最小值, 得到所述計(jì)算間隔內(nèi)的波峰值和波谷值,計(jì)算所述計(jì)算間隔內(nèi)波峰值和波谷值 的平均值,并在所述計(jì)算間隔內(nèi)搜索一個(gè)點(diǎn),使所述點(diǎn)的左鄰域點(diǎn)值和右鄰域 點(diǎn)值分別位于所述平均值的兩側(cè),將搜索到的點(diǎn)作為所述計(jì)算間隔內(nèi)波峰點(diǎn)與 波谷點(diǎn)之間的過(guò)渡點(diǎn)。較佳地,所述線條包括明、暗兩種線條;所述將過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)包括將所述亮度曲線中波峰點(diǎn)到 波谷點(diǎn)之間的過(guò)渡點(diǎn)作為明線條與暗線條之間的邊界點(diǎn),并將波谷點(diǎn)到波峰點(diǎn) 之間的過(guò)渡點(diǎn)作為暗線條與明線條之間的邊界點(diǎn);所述根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線條的寬度包括按照 從左到右的順序,根據(jù)暗線條與明線條之間的邊界點(diǎn)和明線條與暗線條之間的 邊界點(diǎn)的位置,確定對(duì)應(yīng)的明線條的寬度;根據(jù)明線條與暗線條之間的邊界點(diǎn) 和暗線條與明線條之間的邊界點(diǎn)的位置,確定對(duì)應(yīng)的暗線條的寬度。較佳地,所述M根線條包括明、暗兩根線條;所述根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解析出基本編碼單 元包括根據(jù)按設(shè)定順序排列為左右的所述兩根線條的寬度對(duì)比,確定當(dāng)前 按設(shè)定順序排列為左右的兩根線條為左側(cè)線條比右側(cè)線條寬或左側(cè)線條比 右側(cè)線條窄或左側(cè)線條與右側(cè)線條寬度相等的基本編碼單元。本發(fā)明所提供的結(jié)構(gòu)光編碼裝置,包括編碼單元確定模塊,用于基于按設(shè)定順序排列的M根線條間的寬窄變化確 定基本編碼單元;編碼序列生成模塊,用于按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原 則,利用所述基本編碼單元生成編碼序列,使所述編碼序列中任意相鄰的N個(gè) 基本編碼單元具有唯一的列編碼;結(jié)構(gòu)光編碼模塊,用于按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光; 其中,M和N為大于l的整凄t。較佳地,所述M根線條包括明、暗兩根線條;則所述編碼單元確定 模塊包括明暗線條編碼單元確定子模塊,用于基于按設(shè)定順序排列為左右 的所述兩根線條的寬度對(duì)比,確定左側(cè)線條比右側(cè)線條寬、左側(cè)線條比右側(cè) 線條窄和左側(cè)線條與右側(cè)線條寬度相等的三種基本編碼單元。本發(fā)明所提供的結(jié)構(gòu)光解碼裝置,包括邊界點(diǎn)確定模塊,用于從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn); 線條寬度確定模塊,用于根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線 條的寬度;編碼單元解析模塊,用于根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解 析出基本編碼單元;編碼序列解析模塊,用于根據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰 的N個(gè)基本編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)所述基本列編碼,得到結(jié)構(gòu)光的 編碼序列;其中,M和N為大于1的整數(shù)。較佳地,所述邊界點(diǎn)確定模塊包括掃描子模塊,用于從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描; 亮度曲線生成子模塊,用于根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮 度曲線;邊界點(diǎn)確定子模塊,用于確定所述亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡 點(diǎn),并將所述過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)。 較佳地,所述邊界點(diǎn)確定子模塊包括計(jì)算間隔設(shè)定單元,用于根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,所述計(jì)算間 隔大于或等于亮度曲線中相鄰一個(gè)波峰和一個(gè)波谷之間的距離,且小于相鄰的 兩個(gè)波峰和 一 個(gè)波谷、或 一 個(gè)波^奪和兩個(gè)波谷的距離;過(guò)渡點(diǎn)確定單元,用于在所述亮度區(qū)域中從左到右依次計(jì)算每個(gè)計(jì)算間隔 內(nèi)的最大值和最小值,得到所述計(jì)算間隔內(nèi)的波峰值和波谷值,計(jì)算所述計(jì)算 間隔內(nèi)波峰值和波谷值的平均值,并在所述計(jì)算間隔內(nèi)搜索一個(gè)點(diǎn),使所述點(diǎn) 的左鄰域點(diǎn)值和右鄰域點(diǎn)值分別位于所述平均值的兩側(cè),將搜索到的點(diǎn)作為所 述計(jì)算間隔內(nèi)波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn)。較佳地,所述M根線條包括明、暗兩根線條;則所述編碼單元解析 模塊包括明暗線條編碼單元解析子模塊,用于根據(jù)按設(shè)定順序排列為左右 的所述兩根線條的寬度對(duì)比,確定當(dāng)前按設(shè)定順序排列為左右的兩根線條為 左側(cè)線條比右側(cè)線條寬或左側(cè)線條比右側(cè)線條窄或左側(cè)線條與右側(cè)線條寬 度相等的基本編碼單元。從上述方案可以看出,本發(fā)明中基于按設(shè)定順序排列的M根線條間的 寬窄變化確定基本編碼單元,并利用該基本編碼單元生成編碼序列,從而4要 照該編碼序列對(duì)光線進(jìn)行編碼,使得解碼時(shí),可只需根據(jù)一維的線條間的邊 界點(diǎn)確定線條寬度后得到基本編碼單元,進(jìn)而根據(jù)該基本編碼單元進(jìn)行解 碼,即解碼時(shí)無(wú)需獲取二維的空間信息,只需利用 一 維的信息便可進(jìn)行解碼,使得解碼效率得到了提高。進(jìn)一步地,通過(guò)利用明、暗兩種線條,使得線條間的顏色對(duì)比分明,解碼時(shí)識(shí)別不同線條間的邊界點(diǎn)的準(zhǔn)確性較高,從而進(jìn)一 步提高了解碼效率。
圖1為現(xiàn)有技術(shù)中結(jié)構(gòu)光編碼方法中的一種基本編碼單元的示意圖;圖2為現(xiàn)有技術(shù)中結(jié)構(gòu)光編碼方法中的又一種基本編碼單元的示意圖;圖3為本發(fā)明實(shí)施例中結(jié)構(gòu)光編碼方法的示例性流程圖;圖4為圖3所示方法中的基本編碼單元的示意圖;圖5為本發(fā)明實(shí)施例中的結(jié)構(gòu)光投影到目標(biāo)上的結(jié)構(gòu)光圖像;圖6為本發(fā)明實(shí)施例中結(jié)構(gòu)光解碼方法的示例性流程圖;圖7為圖6所示方法中基于亮度曲線確定邊界點(diǎn)的方法示意圖;圖8為本發(fā)明實(shí)施例中結(jié)構(gòu)光編碼裝置的示例性結(jié)構(gòu)圖;圖9為本發(fā)明實(shí)施例中結(jié)構(gòu)光解碼裝置的示例性結(jié)構(gòu)圖;圖10為本發(fā)明實(shí)施例中邊界點(diǎn)確定模塊的內(nèi)部結(jié)構(gòu)示意圖;圖11為圖IO所示邊界點(diǎn)確定模塊中邊界點(diǎn)確定子模塊的內(nèi)部結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例中,為了提高解碼效率,將二維信息的基本編碼單元變?yōu)?一維信息的基本編碼單元,并利用該基本編碼單元進(jìn)行結(jié)構(gòu)光編碼。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和 附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。圖3為本發(fā)明實(shí)施例中結(jié)構(gòu)光編碼方法的示例性流程圖。如圖3所示, 該方法包括如下流程步驟301,基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼 單元。其中,M為大于l的整數(shù)。本實(shí)施例中的M根線條可以為任意的M根能夠區(qū)分邊界的線條,例如 若M二2,則M根線條可以為明、暗兩根線條;若M-3,則M根線條可以為明、暗、灰三根線條;依次類(lèi)推;M可以為其可以實(shí)現(xiàn)的任意取值。其 中,明線條可以為綠色、白色或黃色等亮度較高的顏色的線條。本實(shí)施例中,以M根線條包括明、暗兩根線條的情況為例,則本步 驟中,可基于按設(shè)定順序排列為左右的兩根線條的寬度對(duì)比,確定左側(cè)線條 比右側(cè)線條寬、左側(cè)線條比右側(cè)線條窄和左側(cè)線條與右側(cè)線條寬度相等的三 種基本編碼單元。假設(shè)設(shè)定順序?yàn)槊骶€條在左、暗線條在右(當(dāng)然設(shè)定順序也可以是 暗線條在左、明線條在右),則如圖4所示,圖4為本發(fā)明實(shí)施例中一種基 本編碼單元的示意圖,若分別用0、 1、 2表示三種基本編碼單元,則可將左 側(cè)的明線條比右側(cè)暗線條寬的情況對(duì)應(yīng)基本編碼單元0,將左側(cè)的明線條比 右側(cè)暗線條窄的情況對(duì)應(yīng)基本編碼單元1,將左側(cè)明線條與右側(cè)暗線條寬度 相等的情況對(duì)應(yīng)基本編碼單元2。或者,也可有其他的0、 1、 2與基本編碼 單元的對(duì)應(yīng)關(guān)系,此處不再——列舉。步驟302,按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原則,利用基 本編碼單元生成任意相鄰的N個(gè)基本編碼單元具有唯一列編碼的編碼序列。 其中,N為大于1的整數(shù)。本步驟中,可根據(jù)De Bruijn Sequences理論,利用基本編碼單元生成編 碼序列,使該編碼序列中任意一段設(shè)定長(zhǎng)度的基本編碼單元序列,如包括N 個(gè)基本編碼單元的基本編碼單元序列,具有唯一的列編碼。本步驟中,仍以M根線條包括明、暗兩根線條的情況為例,則對(duì)于 圖4所示的編碼為0、 1、 2的三個(gè)基本編碼單元,假設(shè)設(shè)定長(zhǎng)度的基本編碼 單元序列為包括4 (即N=4)個(gè)基本編碼單元的基本編碼單元序列,即4個(gè) 基本編碼單元對(duì)應(yīng)一個(gè)列編碼,如0000, 0012等,則可得到34=81種列編 碼,若將這些列編碼從頭到尾依次進(jìn)行排列,則可得到0000, 0001, 0010, 0100, 1000, 0002, 0020, 0200, 2001, 0011, 0110, 1100, 1001, 0012, 0120, 1200, 2002, 0021, 0210, 2100, 1002, 0022, 0220, 2201, 2010, 0101, 1010, 0102, 1020, 0201, 2011, 0111, 1110, 1101, 1011, 0112,1120, 1201, 2012, 0121, 1210, 2101, 1012, 0122, 1220, 2202, 2020, 0202, 2021, 0211, 2110, 1102, 1021, 0212, 2120, 1202, 2022, 0221, 2210, 2102, 1022, 0222, 2221, 2211, 2111, 1111, 1112, 1121, 1211, 2112, 1122, 1221, 2212, 2121, 1212, 2122, 1222, 2222, 2220, 2200, 2000。相應(yīng)地,利用基本編碼單元生成的任意相鄰的4個(gè)基本編碼單元具有 唯一列編碼的編碼序列可以為0000100020011001200210022010102011101步驟303,按照所生成的編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光。 本步驟中,為了得到結(jié)構(gòu)光,可按照所生成的編碼序列制作相應(yīng)的光柵, 之后將光線透過(guò)光柵進(jìn)行投影,則可得到對(duì)應(yīng)的編碼光線,即結(jié)構(gòu)光。例如,圖5示出了本發(fā)明實(shí)施例中4要照上述編碼序列0000100020011022000得到的結(jié)構(gòu)光投影到目標(biāo)上的結(jié)構(gòu)光圖像。以上對(duì)本發(fā)明實(shí)施例中的結(jié)構(gòu)光編碼方法進(jìn)行了詳細(xì)描述,對(duì)應(yīng)該結(jié)構(gòu)光編碼方法,圖6中示出了本發(fā)明實(shí)施例中結(jié)構(gòu)光解碼方法的示例性流程圖。如圖6所示,該流程包括如下步驟步驟601,從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn)。本實(shí)施例中,從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn)的方法可有多種,例如可以為目前圖像處理技術(shù)中的利用梯度信息的方法或離散二階差分法等。其中,利用梯度信息的方法是根據(jù)梯度來(lái)求過(guò)渡點(diǎn)的方法,該方法中認(rèn) 為過(guò)渡點(diǎn)為局部范圍內(nèi)的梯度極大值點(diǎn),因此可以在設(shè)定范圍內(nèi)計(jì)算所有點(diǎn) 的梯度值,然后搜索極大值。離散二階差分法中,認(rèn)為曲線上的過(guò)渡點(diǎn)對(duì)應(yīng) 的二階差分理論值為0,但在離散情況下計(jì)算得到的二階差分不可能為0, 而是在過(guò)渡點(diǎn)的鄰域點(diǎn)出現(xiàn)正負(fù)交替的情況,因此可以在設(shè)定的范圍內(nèi)搜索 鄰域點(diǎn)二階差分正負(fù)交替的點(diǎn)來(lái)得到過(guò)渡點(diǎn)。此外,本實(shí)施例中,還列舉了另外一種方法,該方法可稱(chēng)為基于亮度曲線的方法。本實(shí)施例中,對(duì)于圖5所示的結(jié)構(gòu)光圖像,基于亮度曲線的方法可如圖7所示,圖7為本發(fā)明實(shí)施例中基于亮度曲線確定邊界點(diǎn)的方法示意圖。該 方法包括A、 從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描。如圖7中的上 部分所示,該部分示出了當(dāng)前掃描的一個(gè)像素行的圖像,為了清晰起見(jiàn),圖 7中只示出了當(dāng)前像素行的一部分。B、 根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮度曲線。如圖7中的 下部分所示,該部分示出了對(duì)應(yīng)圖7中的上部分所示像素行的亮度曲線圖。C、 確定亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn)。圖7中,兩根虛線 之間的黑色圓點(diǎn)就是一個(gè)過(guò)渡點(diǎn)。確定這些過(guò)渡點(diǎn)的方法可以有多種,其中 一種為首先根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,如圖7中的兩條虛線之間 的間隔,并使該計(jì)算間隔大于或等于相鄰的 一 個(gè)波峰和 一個(gè)波谷之間的距 離,且小于相鄰的兩個(gè)波峰和一個(gè)波谷、或一個(gè)波峰和兩個(gè)波谷的距離;然 后在所述亮度曲線中相同的計(jì)算間隔內(nèi)從左到右依次計(jì)算每個(gè)間隔內(nèi)(如圖 7中的兩根虛線之間)的最大值和最小值,得到該計(jì)算間隔內(nèi)的波峰值和波 谷值,之后計(jì)算該最大值(波峰值)和最小值(波谷值)的平均值,并在該 計(jì)算間隔內(nèi),即兩根虛線之間搜索一個(gè)點(diǎn),使該點(diǎn)的左鄰域點(diǎn)值和右鄰域點(diǎn) 值分別位于該平均值的兩側(cè),即左鄰域點(diǎn)值和右鄰域點(diǎn)分別比該平均值大和 小或者分別比該平均值小和大,則該點(diǎn)就是該計(jì)算間隔內(nèi)波峰點(diǎn)和波谷點(diǎn)之 間的過(guò)渡點(diǎn)。其中,若該點(diǎn)的左鄰域點(diǎn)值和右鄰域點(diǎn)值分別比所述平均值大 和小,那么該點(diǎn)就是波峰點(diǎn)到波谷點(diǎn)之間的過(guò)渡點(diǎn),若分別比所述平均值小 和大,那么該點(diǎn)就是波谷點(diǎn)到波峰點(diǎn)之間的過(guò)渡點(diǎn)。圖7中過(guò)渡點(diǎn)的左鄰域 點(diǎn)值比平均值小,右鄰域點(diǎn)值比平均值大,則該點(diǎn)即為波谷點(diǎn)到波峰點(diǎn)之間 的過(guò)〉度點(diǎn)。D、 將所確定的過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)。本步驟中,對(duì)于圖5所示編碼時(shí)采用明、暗兩種線條情況,則亮度曲線中波峰點(diǎn)到波谷點(diǎn)之間的過(guò)渡點(diǎn)為明線條與暗線條之間的邊界點(diǎn),波谷點(diǎn)到 波峰點(diǎn)之間的過(guò)渡點(diǎn)為暗線條與明線條之間的邊界點(diǎn)。步驟602,根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定對(duì)應(yīng)線條的寬度。 本步驟中,對(duì)于圖5所示編碼時(shí)采用明、暗兩種線條情況,可按照從左 到右的順序,根據(jù)暗線條與明線條之間的邊界點(diǎn)和明線條與暗線條之間的邊 界點(diǎn)的位置,確定對(duì)應(yīng)的明線條的寬度;根據(jù)明線條與暗線條之間的邊界點(diǎn) 和暗線條與明線條之間的邊界點(diǎn)的位置,確定對(duì)應(yīng)的暗線條的寬度。步驟603,根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解析出基本編 碼單元。本實(shí)施例中,對(duì)于M根線條包括明、暗兩根線條的情況,可根據(jù)按 設(shè)定順序排列為左右的兩根線條的寬度對(duì)比,確定當(dāng)前按設(shè)定順序排列為左 右的兩根線條為左側(cè)線條比右側(cè)線條寬或左側(cè)線條比右側(cè)線條窄或左側(cè)線 條與右側(cè)線條寬度相等的基本編碼單元。對(duì)于圖5所示編碼時(shí)設(shè)定順序?yàn)槊骶€條在左、暗線條在右的情況,假設(shè) 將從波峰點(diǎn)到波谷點(diǎn)之間的過(guò)渡點(diǎn)記為0,將從波谷點(diǎn)到波峰點(diǎn)之間的過(guò)渡 點(diǎn)記為1,則每三個(gè)分別標(biāo)記為101的過(guò)渡點(diǎn)之間的線條對(duì)應(yīng)一個(gè)基本編碼 單元,根據(jù)過(guò)渡點(diǎn)1和過(guò)渡點(diǎn)O之間亮線條的寬度、以及過(guò)渡點(diǎn)0和過(guò)渡點(diǎn) 1之間暗線條的寬度的對(duì)比關(guān)系,可解析出該標(biāo)記為101的過(guò)渡點(diǎn)之間的線 條對(duì)應(yīng)圖4中的哪個(gè)基本編碼單元,如果左側(cè)明線條比右側(cè)暗線條寬,則對(duì) 應(yīng)基本編碼單元0;如果左側(cè)明線條比右側(cè)暗線條窄,則對(duì)應(yīng)基本編碼單元 1;如果左側(cè)明線條與右側(cè)暗線條寬度相等,則對(duì)應(yīng)基本編碼單元2。步驟604,根據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰的N個(gè)基本 編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)所述列編碼確定所述結(jié)構(gòu)光的編碼序列。本實(shí)施例中,對(duì)于圖5所示的結(jié)構(gòu)光圖像,根據(jù)基本編碼單元的鄰域關(guān) 系,可得到任意截取的相鄰4個(gè)基本編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)這些 基本列編碼及其位置的唯一性,進(jìn)而可得到結(jié)構(gòu)光的編碼序列。以上對(duì)本發(fā)明實(shí)施例中的結(jié)構(gòu)光編碼方法和解碼方法進(jìn)行了詳細(xì)描述,下面再對(duì)本發(fā)明實(shí)施例中應(yīng)用上述方法的結(jié)構(gòu)光編碼裝置和解碼裝置進(jìn)行 詳纟田4苗述。圖8為本發(fā)明實(shí)施例中結(jié)構(gòu)光編碼裝置的示例性結(jié)構(gòu)圖。如圖8所示, 該裝置包括編碼單元確定模塊、編碼序列生成模塊和結(jié)構(gòu)光編碼模塊。其中,編碼單元確定模塊用于基于按設(shè)定順序排列的M根線條間的寬窄變 化確定基本編碼單元。其中,M為大于l的整數(shù)。編碼序列生成模塊,用于按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原 則,利用所述基本編碼單元生成任意相鄰的N個(gè)基本編碼單元具有唯一列編碼 的編碼序列。其中,N為大于l的整數(shù)。結(jié)構(gòu)光編碼模塊,用于按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光。其中,若M根線條包括明、暗兩根線條,則本實(shí)施例中的編碼單元確定才莫 塊可包括明暗線條編碼單元確定子模塊(圖中未示出),用于基于按設(shè)定順序排 列為左右的兩根線條的寬度對(duì)比,確定左側(cè)線條比右側(cè)線條寬、左側(cè)線條比右 側(cè)線條窄和左側(cè)線條與右側(cè)線條寬度相等的三種基本編碼單元。本實(shí)施例中的結(jié)構(gòu)光編碼裝置中各模塊的具體操作可與圖3所示方法 中各步驟中的相應(yīng)操作一致,此處不再——贅述。圖9為本發(fā)明實(shí)施例中結(jié)構(gòu)光解碼裝置的示例性結(jié)構(gòu)圖。如圖9所示, 該裝置包括邊界點(diǎn)確定模塊、線條寬度確定模塊、編碼單元解析模塊和編 碼序列解析模塊。其中,邊界點(diǎn)確定模塊用于從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn)。線條寬度確定模塊用于根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線條 的寬度。編碼單元解析;漠塊用于根據(jù)按設(shè)定順序排列的M才艮線條間的寬窄變化解析 出基本編碼單元。其中,M為大于l的整數(shù)。編碼序列解析模塊用于根據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰的 N個(gè)基本編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)所述基本列編碼,得到結(jié)構(gòu)光的編 碼序列。其中,N為大于l的整數(shù)。具體實(shí)現(xiàn)時(shí),邊界點(diǎn)確定模塊可有多種具體實(shí)現(xiàn)形式,其中對(duì)應(yīng)圖7所示基于亮度曲線的方法可有如圖IO所示的結(jié)構(gòu)示意圖,包括掃描子模塊、亮度曲線生成子模塊和邊界點(diǎn)確定子^t塊。其中,掃描子模塊用于從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描。 亮度曲線生成子模塊用于根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮度曲線。邊界點(diǎn)確定子模塊用于確定所述亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò) 渡點(diǎn),并將所述過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)。具體實(shí)現(xiàn)時(shí),邊界點(diǎn)確定子模塊的內(nèi)部結(jié)構(gòu)還可以如圖ll所示,包括 計(jì)算間隔設(shè)定單元和過(guò)渡點(diǎn)確定單元。其中,計(jì)算間隔設(shè)定單元用于根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,所述計(jì) 算間隔大于或等于亮度曲線中相鄰一個(gè)波峰和一個(gè)波谷之間的距離,且小于相 鄰的兩個(gè)波J奪和一個(gè)波谷、或一個(gè)波>峰和兩個(gè)波谷的距離。過(guò)渡點(diǎn)確定單元用于在所述亮度區(qū)域中從左到右依次計(jì)算每個(gè)計(jì)算間 隔內(nèi)的最大值和最小值,得到該計(jì)算間隔內(nèi)的波峰值和波谷值,計(jì)算所述計(jì) 算間隔內(nèi)波峰值和波谷值的平均值,并在所述計(jì)算間隔內(nèi)搜索一個(gè)點(diǎn),使所 述點(diǎn)的左鄰域點(diǎn)值和右鄰域點(diǎn)值分別位于所述平均值的兩側(cè),將搜索到的點(diǎn) 作為所述計(jì)算間隔內(nèi)波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn)。其中,若M根線條包括明、暗兩根線條,則本實(shí)施例中的編碼單元解析模 塊可包括明暗線條編碼單元解析子模塊(圖中未示出),用于根據(jù)按設(shè)定順序 排列為左右的兩根線條的寬度對(duì)比,確定當(dāng)前按設(shè)定順序排列為左右的兩根線 條為左側(cè)線條比右側(cè)線條寬或左側(cè)線條比右側(cè)線條窄或左側(cè)線條與右側(cè)線條寬 度相等的基本編碼單元。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了 進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述^又為本發(fā)明的較佳實(shí)施例而已, 并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所作的任 何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種結(jié)構(gòu)光編碼方法,其特征在于,該方法包括基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元;按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原則,利用所述基本編碼單元生成編碼序列,所述編碼序列中任意相鄰的N個(gè)基本編碼單元具有唯一的列編碼;按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光;其中,M和N為大于1的整數(shù)。
2、 如權(quán)利要求1所述的方法,其特征在于,所述M根線條包括明、暗 兩根線條;所述基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元包 括基于按設(shè)定順序排列為左右的所述兩4艮線條的寬度對(duì)比,確定左側(cè)線條比 右側(cè)線條寬、左側(cè)線條比右側(cè)線條窄和左側(cè)線條與右側(cè)線條寬度相等的三種基 本編碼單元。
3、 如權(quán)利要求2所述的方法,其特征在于,所述設(shè)定順序?yàn)槊骶€條在左、 暗線條在右;或者為明線條在右、暗線條在左。
4、 如權(quán)利要求2所述的方法,其特征在于,所述N為4。
5、 一種結(jié)構(gòu)光解碼方法,其特征在于,該方法包括 從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn); 根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線條的寬度; 根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解析出基本編碼單元; 才艮據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰的N個(gè)基本編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)所述基本列編碼,得到結(jié)構(gòu)光的編碼序列; 其中,M和N為大于1的整數(shù)。
6、 如權(quán)利要求5所述的方法,其特征在于,所述從結(jié)構(gòu)光圖像中確定不同 線條間的邊界點(diǎn)包括從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描; 根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮度曲線; 確定所述亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn),將所述過(guò)渡點(diǎn)作為不 同線條間的邊界點(diǎn)。
7、 如權(quán)利要求6所述的方法,其特征在于,所述確定亮度曲線中波峰點(diǎn)與 波谷點(diǎn)之間的過(guò)渡點(diǎn)包括根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,所述計(jì)算間隔大于或等于亮度曲線中 相鄰一個(gè)波峰和一個(gè)波谷之間的距離,且小于相鄰的兩個(gè)波峰和一個(gè)波谷、或 一個(gè)波^^和兩個(gè)波谷的距離;在所述亮度曲線中從左到右依次計(jì)算每個(gè)計(jì)算間隔內(nèi)的最大值和最小值, 得到所述計(jì)算間隔內(nèi)的波峰值和波谷值,計(jì)算所述計(jì)算間隔內(nèi)波峰值和波谷值 的平均值,并在所述計(jì)算間隔內(nèi)搜索一個(gè)點(diǎn),使所述點(diǎn)的左鄰域點(diǎn)值和右鄰域 點(diǎn)值分別位于所述平均值的兩側(cè),將搜索到的點(diǎn)作為所述計(jì)算間隔內(nèi)波峰點(diǎn)與 波谷點(diǎn)之間的過(guò)渡點(diǎn)。
8、 如權(quán)利要求6所述的方法,其特征在于,所述線條包括明、暗兩種線條; 所述將過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)包括將所述亮度曲線中波峰點(diǎn)到波谷點(diǎn)之間的過(guò)渡點(diǎn)作為明線條與暗線條之間的邊界點(diǎn),并將波谷點(diǎn)到波峰點(diǎn) 之間的過(guò)渡點(diǎn)作為暗線條與明線條之間的邊界點(diǎn);所述根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線條的寬度包括按照 從左到右的順序,根據(jù)暗線條與明線條之間的邊界點(diǎn)和明線條與暗線條之間的 邊界點(diǎn)的位置,確定對(duì)應(yīng)的明線條的寬度;根據(jù)明線條與暗線條之間的邊界點(diǎn) 和暗線條與明線條之間的邊界點(diǎn)的位置,確定對(duì)應(yīng)的暗線條的寬度。
9、 如權(quán)利要求5所述的方法,其特征在于,所述M根線條包括明、暗 兩才艮線條;所述根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解析出基本編碼單元包 括根據(jù)按設(shè)定順序排列為左右的所述兩根線條的寬度對(duì)比,確定當(dāng)前按設(shè)定 順序排列為左右的兩根線條為左側(cè)線條比右側(cè)線條寬或左側(cè)線條比右側(cè)線條窄或左側(cè)線條與右側(cè)線條寬度相等的基本編碼單元。
10、 一種結(jié)構(gòu)光編碼裝置,其特征在于,該裝置包括 編碼單元確定模塊,用于基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元;編碼序列生成模塊,用于按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原 則,利用所述基本編碼單元生成編碼序列,使所述編碼序列中任意相鄰的N個(gè) 基本編碼單元具有唯一的列編碼;結(jié)構(gòu)光編碼模塊,用于按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光;其中,M和N為大于1的整數(shù)。
11、 如權(quán)利要求10所述的裝置,其特征在于,所述M根線條包括明、 暗兩根線條;所述編碼單元確定模塊包括明暗線條編碼單元確定子模塊,用于基于按 設(shè)定順序排列為左右的所述兩根線條的寬度對(duì)比,確定左側(cè)線條比右側(cè)線條寬、 左側(cè)線條比右側(cè)線條窄和左側(cè)線條與右側(cè)線條寬度相等的三種基本編碼單元。
12、 一種結(jié)構(gòu)光解碼裝置,其特征在于,該裝置包括邊界點(diǎn)確定模塊,用于從結(jié)構(gòu)光圖像中確定不同線條間的邊界點(diǎn); 線條寬度確定模塊,用于根據(jù)每根線條兩側(cè)的邊界點(diǎn)的位置,確定所述線 條的寬度;編碼單元解析模塊,用于根據(jù)按設(shè)定順序排列的M根線條間的寬窄變化解 析出基本編碼單元;編碼序列解析模塊,用于根據(jù)基本編碼單元的鄰域關(guān)系,解析出任意相鄰 的N個(gè)基本編碼單元對(duì)應(yīng)的基本列編碼,根據(jù)所述基本列編碼,得到結(jié)構(gòu)光的 編碼序列;其中,M 和N為大于1的整數(shù)。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述邊界點(diǎn)確定模塊包括 掃描子模塊,用于從左到右對(duì)所述結(jié)構(gòu)光圖像的每個(gè)像素行進(jìn)行掃描; 亮度曲線生成子模塊,用于根據(jù)所述像素行中各像素點(diǎn)的亮度值,生成亮度曲線;邊界點(diǎn)確定子模塊,用于確定所述亮度曲線中波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡 點(diǎn),并將所述過(guò)渡點(diǎn)作為不同線條間的邊界點(diǎn)。
14、 如權(quán)利要求13所述的裝置,其特征在于,所述邊界點(diǎn)確定子模塊包括 計(jì)算間隔設(shè)定單元,用于根據(jù)不同線條的寬度設(shè)定計(jì)算間隔,所述計(jì)算間隔大于或等于亮度曲線中相鄰一個(gè)波峰和一個(gè)波谷之間的距離,且小于相鄰的 兩個(gè)波峰和 一 個(gè)波谷、或 一 個(gè)波峰和兩個(gè)波谷的距離;過(guò)渡點(diǎn)確定單元,用于在所述亮度區(qū)域中從左到右依次計(jì)算每個(gè)計(jì)算間隔 內(nèi)的最大值和最小值,得到所述計(jì)算間隔內(nèi)的波峰值和波谷值,計(jì)算所述計(jì)算 間隔內(nèi)波峰值和波谷值的平均值,并在所述計(jì)算間隔內(nèi)搜索一個(gè)點(diǎn),使所述點(diǎn) 的左鄰域點(diǎn)值和右鄰域點(diǎn)值分別位于所述平均值的兩側(cè),將搜索到的點(diǎn)作為所 述計(jì)算間隔內(nèi)波峰點(diǎn)與波谷點(diǎn)之間的過(guò)渡點(diǎn)。
15、 如權(quán)利要求12所述的裝置,其特征在于,所述M根線條包括明、 暗兩根線條;所述編碼單元解析模塊包括明暗線條編碼單元解析子模塊,用于根據(jù)按 設(shè)定順序排列為左右的所述兩根線條的寬度對(duì)比,確定當(dāng)前按設(shè)定順序排列為 左右的兩根線條為左側(cè)線條比右側(cè)線條寬或左側(cè)線條比右側(cè)線條窄或左側(cè)線條 與右側(cè)線條寬度相等的基本編碼單元。
全文摘要
本發(fā)明公開(kāi)了一種結(jié)構(gòu)光編碼方法、解碼方法和結(jié)構(gòu)光編碼裝置、解碼裝置。其中,結(jié)構(gòu)光編碼方法包括基于按設(shè)定順序排列的M根線條間的寬窄變化確定基本編碼單元;按照N個(gè)基本編碼單元構(gòu)成一個(gè)基本列編碼的原則,利用所述基本編碼單元生成任意相鄰的N個(gè)基本編碼單元具有唯一列編碼的編碼序列;按照所述編碼序列對(duì)光線進(jìn)行編碼,得到結(jié)構(gòu)光;其中,M和N為大于1的整數(shù)。本發(fā)明中所公開(kāi)的技術(shù)方案,能夠提高解碼的效率。
文檔編號(hào)G01B11/24GK101281024SQ200810113080
公開(kāi)日2008年10月8日 申請(qǐng)日期2008年5月27日 優(yōu)先權(quán)日2008年5月27日
發(fā)明者謝東海, 英 黃 申請(qǐng)人:北京中星微電子有限公司