九點(diǎn)標(biāo)定在圖像測量過程以及機(jī)器視覺應(yīng)用中,為確定空間物體表面某點(diǎn)的三維幾何位置與其在圖像中對應(yīng)點(diǎn)之間的相互關(guān)系,九點(diǎn)標(biāo)定是點(diǎn)的仿射變換,只是圖像行列、和坐標(biāo)XY的仿射關(guān)系,也就是矩陣關(guān)系。從只有XY2個(gè)坐標(biāo)軸來看,只有二個(gè)方向,所以只能適用于2D,并不是真正的手眼標(biāo)定。
在大多數(shù)條件下這些參數(shù)必須通過實(shí)驗(yàn)與計(jì)算才能得到,其標(biāo)定結(jié)果的精度及算法的穩(wěn)定性直接影響相機(jī)工作產(chǎn)生結(jié)果的準(zhǔn)確性。因此,做好相機(jī)標(biāo)定是做好后續(xù)工作的前提,提高標(biāo)定精度是科研工作的重點(diǎn)所在。
1. 操作簡單,方便快捷;
2. 計(jì)算簡單,計(jì)算量少;
3. 對操作者水平要求不高,只懂二維仿射變換即可。
4. 幾乎適用于所有2D平面的工業(yè)測量與視覺定位。
缺點(diǎn):
1. 像素精度低,受人為操作影響較大;
2. 不能校正畸變與校正斜拍;
3. 不能求出相機(jī)的內(nèi)參與外參;
4. 像素精度稍低,低于手眼標(biāo)定的像素精度;
5. 只合適用于2D,不適用于3D。
使用九點(diǎn)標(biāo)定時(shí),影響機(jī)械精度的因素:
1. 相機(jī)傾斜發(fā)生變化;
2. 工作距離發(fā)生變化;
3. 測量物體厚度或變薄;
4. 用于標(biāo)定點(diǎn)的數(shù)量;
5. 鏡頭發(fā)生畸變;
6. 像素精度不夠。
l 第一步:制作9個(gè)點(diǎn),相機(jī)采圖的時(shí)候能全部拍到即可。一般以會(huì)3X3的行列相等去制作。
1.在圖像上找到9個(gè)圓的中心坐標(biāo)。(二值化提取區(qū)域后排序獲得區(qū)域行列坐標(biāo)/使用模板匹配后排序獲得行列坐標(biāo))
2.會(huì)用到的一些算子:
rgb1_to_gray (Image, GrayImage) RGB圖轉(zhuǎn)灰度圖
mirror_image (GrayImage, ImageMirror, 'row') 圖像鏡像,就是把9個(gè)點(diǎn)的序號(hào)按照自己習(xí)慣的方式在圖像上顯示。
illuminate (ImageMirror1, ImageIlluminate, 101, 101, 0.5) 圖像亮度(灰度)不均勻時(shí),使用這個(gè)算子平均一下圖像灰度值。
scale_image (ImageIlluminate, ImageScaled, 42.5, -4080) 縮放圖像,使黑白更分明。
binary_threshold (ImageScaled, Region, 'max_separability', 'dark', UsedThreshold) 二值化提取黑或提取白
connection (Region, ConnectedRegions) 連通域斷開。
sort_region (ConnectedRegions, SortedRegions, 'character', 'true', 'row') 區(qū)域排序。
area_center (SortedRegions, Area, Row, Column) 獲取區(qū)域的面積與重心行列。
l 第二步:保持9個(gè)圓點(diǎn)不動(dòng),使用機(jī)械手的作業(yè)工具對準(zhǔn)9個(gè)圓的圓心位置,并保存好機(jī)械手坐標(biāo)。然后把9個(gè)點(diǎn)的坐標(biāo)按照圓的序號(hào)在生成一個(gè)一維數(shù)組變量。(一定要對好序號(hào),就是第一步中排序后的序號(hào)和數(shù)組元素一一對應(yīng))
l 第三步:使用圖像行列的圓心和機(jī)械手的一維數(shù)組變量,生成一個(gè)矩陣關(guān)系。
vector_to_hom_mat2d (Row, Column, X, Y, HomMat2D) HomMat2D就是我們要的這個(gè)矩陣。
write_tuple (HomMat2D, HomMatFile) 保存矩陣使用
read_tuple (HomMatFile, HomMat2D1) 讀取矩陣使用
l 第四步:使用相機(jī)去識(shí)別一個(gè)或多個(gè)新的物體,并得到mark行列坐標(biāo),通過讀取步驟三保存的矩陣,求出mark點(diǎn)的機(jī)械坐標(biāo)。
affine_trans_point_2d (HomMat2D, Row1, Column1, Rx, Ry) 矩陣轉(zhuǎn)換,把行列坐標(biāo)轉(zhuǎn)換為RxRy。
l 第五步:補(bǔ)償偏差,即當(dāng)前拍照位置與標(biāo)定拍照位置的偏差。
RxNew := Rx + (當(dāng)前拍照X坐標(biāo) – 標(biāo)定拍照時(shí)X坐標(biāo))
RyNew := Ry + (當(dāng)前拍照Y坐標(biāo) – 標(biāo)定拍歸時(shí)Y坐標(biāo))
l 第六步:3項(xiàng)重點(diǎn)注意事項(xiàng):
1. 切記鏡像mirror_image。前后一定要保持圖片一致。
2. 行列坐標(biāo)和XY坐標(biāo),前后要保持一致。
3. 圓的序號(hào),行列序號(hào)一定要和定位XY序號(hào)保持一致。