机器视觉---九点标定
很多初學者,都對標定概念模糊不清,分不清坐標系之間的關系,搞不清相機標定和機械手相機標定有什么關系,想當初自己也是一個人摸索了很久,本文將盡量給大家解釋(更多技術分享,請關注微信公眾號:善眸科技;更多技術交流請加入qq機器視覺聯盟群:1020941040)。
? ? 我們通常所說的相機標定分為兩種,一種是相機參數的標定,這一般用到張氏標定法,標定的作用是校正相機自身的畸變,利用校正得到的參數對圖形進行處理后再呈現出來。關于這方面的資料,網上大把,我也不再此說明。一般的機械手定位也不會進行這個標定,因為現在的相機畸變還是很小的,精度可以滿足大多數要求。
? 本文要介紹的是第二種,相機和機械手之間的標定,相機知道的是像素坐標,機械手是空間坐標系,所以手眼標定就是得到像素坐標系和空間機械手坐標系的坐標轉化關系。手眼標定作用:建立相機坐標系和機械手坐標系之間的關系,即給機械手裝上眼睛,讓它去哪就去哪。
? ? 九點標定直接建立相機和機械手之間的坐標變換關系。讓機械手的末端去走這9個點得到在機器人坐標系中的坐標,同時還要用相機識別9個點得到像素坐標。這樣就得到了9組對應的坐標。由下面的式子可知至少需要3個點才能求出標定的矩陣。
常用的標定方法有:九點標定
(1)、標定,Halcon中進行9點標定的算子
%前面求出圖像坐標
area_center(SortedRegions,Area,Row,Column) %
Column_robot := [275,225,170,280,230,180,295,240,190]
%機器人末端運動到9點的列坐標
Row_robot := [55,50,45,5,0,-5,-50,-50,-50]
%機器人末端運動到9點的行坐標
vector_to_hom_mat2d(Row,Column,Row_robot,Column_robot,HomMat2D)
%求解變換矩陣,HomMat2D是圖像坐標和機械手坐標之間的關系
(2)、求解
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
%由像素坐標和標定矩陣求出機器人基礎坐標系中的坐標
一些特殊情況的解釋:
有些情況中我們看到相機固定在一個地方,然后拍照找到目標,控制機械手去抓取,這種就很好理解。我們也叫做eye-to-hand 。
還有一種情況是相機固定在機械手上面,這種情況的標定過程實際上和相機和機械手分離的標定方法是一樣的,因為相機拍照時,機械手會運動到相機標定的時候的位置,然后相機拍照,得到目標的坐標,再控制機械手,所以簡單的相機固定在末端的手眼系統很多都是采用這種方法,標定的過程和手眼分離系統的標定是可以相同對待的。我們也叫做eye-in-hand 。
————————————————
版權聲明:本文為CSDN博主「視覺鳥」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/chuoji2469384644/article/details/106996137
總結
以上是生活随笔為你收集整理的机器视觉---九点标定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “System.AccessViolat
- 下一篇: C#的winform的中委托显示图片