halcon 旋转_HALCON高级篇:3D相机标定(2/3)
在多位姿上觀察標(biāo)定物
標(biāo)定的主要輸入數(shù)據(jù)是所謂的觀察。為此,標(biāo)定物在不同的位姿被放置。對(duì)于每一個(gè)位姿,相機(jī)獲取一張圖像。在這張圖像上,標(biāo)定物的標(biāo)志點(diǎn)被提取,還有他們的(像素)坐標(biāo),連同相機(jī)的索引,標(biāo)定物,標(biāo)定物的位姿,包含響應(yīng)標(biāo)志點(diǎn)的索引,都被存儲(chǔ)在標(biāo)定數(shù)據(jù)模型中。
如果你使用標(biāo)準(zhǔn)的HALCON標(biāo)定板,你可以用算子find_calib_object去提取坐標(biāo),其將自動(dòng)存儲(chǔ)獲得的信息到標(biāo)定數(shù)據(jù)模型,包括標(biāo)志點(diǎn)的坐標(biāo)和標(biāo)志點(diǎn)對(duì)應(yīng)的列表。
如果你用的是自己的標(biāo)定物,你必須提取其標(biāo)志點(diǎn)和確定其對(duì)應(yīng)關(guān)系,然后用set_calib_data_observ_points將信息存儲(chǔ)在標(biāo)定數(shù)據(jù)模型中。
獲取標(biāo)定圖像的規(guī)則
如果你想獲得準(zhǔn)確的結(jié)果,請(qǐng)準(zhǔn)照下面的規(guī)則:
- 用一個(gè)干凈的標(biāo)定板
- 用多個(gè)圖像覆蓋整個(gè)視野,例如在視野所有區(qū)域至少放置標(biāo)定一次
- 變換標(biāo)定板的方向,包含標(biāo)定板繞著x軸和y軸旋轉(zhuǎn),這樣標(biāo)定圖案的透視畸變是清晰可見的。沒有一些傾斜的標(biāo)定板,焦距是不能夠被合理的計(jì)算出來(接近45度的傾斜角度是被推薦的)
- 對(duì)于六角形排列的標(biāo)定板,至少使用6張圖像,矩形排列的標(biāo)定板10到15張
- 對(duì)于矩形排列的標(biāo)定板,用一個(gè)背景比標(biāo)定板更暗的光照
- 標(biāo)定把亮的部分的灰度值至少為100
- 標(biāo)定板的亮暗對(duì)比應(yīng)該超過100
- 用一個(gè)使標(biāo)定板均勻的光照
- 圖像不能過曝(圖像亮的部分應(yīng)該嚴(yán)格低于255)
- 圓的直徑應(yīng)該至少20個(gè)像素
- 圓的直徑的像素至少20個(gè)像素
- 對(duì)于標(biāo)定板大小的選取,六角形排列的標(biāo)定板應(yīng)該覆蓋整個(gè)圖像,對(duì)于矩形排列的標(biāo)定板,至少覆蓋整個(gè)圖像的1/4
- 六角形排列的標(biāo)定板,至少一個(gè)定位圖像在圖像中是完全可見的。如果至少兩個(gè)定位圖是可見的,可能去檢測(cè)是否標(biāo)定板是反射的。對(duì)于矩形排列的標(biāo)定把,標(biāo)定應(yīng)該在圖像中完全可見的。
- 圖像應(yīng)該盡可能的包含一點(diǎn)噪聲
- 圖像應(yīng)該被嚴(yán)格聚焦,例如在物體之間的過度應(yīng)該被清晰的界定開。
需要注意的是,一個(gè)好的標(biāo)定結(jié)果僅僅是在相機(jī)視野中標(biāo)定標(biāo)志點(diǎn)均勻分布的情況下才能獲得。你可以想象一下相對(duì)于視野的3D空間的一部分作為一個(gè)標(biāo)定體積,如圖2所示,這里展示了,當(dāng)從不同角度看時(shí),標(biāo)定板的兩個(gè)位姿和它們標(biāo)定標(biāo)志點(diǎn)的位置。可以看到,例如從面1看,更大的部分沒有被標(biāo)志點(diǎn)所覆蓋。為了獲得更標(biāo)志點(diǎn)的均勻分布,進(jìn)而得到一個(gè)好的標(biāo)定結(jié)果,你必須在你其他的圖像中放置標(biāo)定板,進(jìn)而對(duì)于整個(gè)視角,標(biāo)定容積空的部分被最小化。注意的是,當(dāng)有一個(gè)非常小的標(biāo)定板(相比于視野而言),這就意味著比推薦的更多的標(biāo)定圖像數(shù)量被需要使用。
如果一張圖像被用于標(biāo)定過程或者如果標(biāo)定板的方向在不同的標(biāo)定圖像不發(fā)生變化,就不可能很好的確定焦距和相機(jī)的位姿;在這種情況下,僅僅聚焦之間的比率和標(biāo)定板和相機(jī)之間的距離被確定下來。然而,在標(biāo)定板平面進(jìn)行世界坐標(biāo)的測(cè)量是可能,但是不可能去讓相機(jī)參數(shù)去適應(yīng)在另一個(gè)面上進(jìn)行測(cè)量,例如標(biāo)定板被放置的面。
圖2: 標(biāo)定容積的查看:(左)具有兩個(gè)標(biāo)定位姿的標(biāo)定容積和(右)當(dāng)不同角度看時(shí),標(biāo)定標(biāo)志點(diǎn)相對(duì)應(yīng)的分布。對(duì)于一個(gè)好的標(biāo)定結(jié)果,沒有標(biāo)定標(biāo)志點(diǎn)的區(qū)域(尤其從面1視角則更大)必須通過更多標(biāo)定板位姿的謹(jǐn)慎選擇達(dá)到最小化。
結(jié)果世界坐標(biāo)的精度,除了在圖像中的測(cè)量精度外,非常依賴被用來標(biāo)定進(jìn)程中所用的圖像的數(shù)量。越多圖像(具有更大不同的標(biāo)定板位姿)被使用,更精確的結(jié)果將被獲取。
提取HALCON標(biāo)定板上的標(biāo)志點(diǎn)
算子find_calib_object尋找標(biāo)定板,決定了標(biāo)定標(biāo)志點(diǎn)的圖像坐標(biāo),并具有很高的精度,最后將結(jié)果存儲(chǔ)在標(biāo)定數(shù)據(jù)模型中。
需要注意的是find_caltab和find_marks_and_pose僅僅被用于矩形排列的標(biāo)定板。還有,它們需要復(fù)雜的參數(shù)調(diào)整。相反的是,可以用于所有標(biāo)準(zhǔn)的HALCON標(biāo)定板,自動(dòng)選擇合適的參數(shù),因此更容易去使用。
限制標(biāo)定到特定的參數(shù)
如果某相機(jī)參數(shù)已知了,你可以用算子set_calib_data從標(biāo)定中排除它們,類似的,你可以限制標(biāo)定到某些參數(shù)。
執(zhí)行標(biāo)定
在準(zhǔn)備了標(biāo)定數(shù)據(jù)模型以后,可以通過調(diào)用calibrate_cameras來執(zhí)行標(biāo)定,用標(biāo)定數(shù)據(jù)模型作為輸入:
作為一個(gè)直接結(jié)果是,僅僅是標(biāo)定錯(cuò)誤被返回。你可以用算子get_calib_data來更進(jìn)一步的去分析標(biāo)定結(jié)果的質(zhì)量。
主要的標(biāo)定結(jié)果,例如相機(jī)的內(nèi)參,被存儲(chǔ)在標(biāo)定數(shù)據(jù)模型中。
總結(jié)
以上是生活随笔為你收集整理的halcon 旋转_HALCON高级篇:3D相机标定(2/3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 003007属于什么板块
- 下一篇: jquery mobile快速入门_【K