Halcon應用:九點標定-手眼標定

提示:若沒有查找的算子,可以評論區留言,會盡快更新

Halcon應用:九點標定-手眼標定

  • 前言
  • 一、Halcon應用?
  • 二、應用實戰
      • 1、圖形理解[eye-to-hand]:
      • 1.1、開始應用
      • 2、 圖形理解[eye-in-hand]
      • 2.1、 開始應用

前言

本篇博文主要用于記錄學習Halcon中算子的應用場景,及其使用代碼和圖像展示。只講通俗易懂使用方法,不講原理,不講原理,不講原理,重要的事情說三遍。
九點標定-手眼標定:想象一下,人眼睛看到一個東西的時候要讓手去抓取,就會控制手到物體旁邊,可是眼睛看到的位置和手的位置所處的不一樣,這就需要知道眼鏡和手的坐標關系。如果把大腦比作中間人,把眼睛比作A,把手比作C,如果A和中間人的關系知道,中間人和C的關系知道,那么C和A的關系就知道了,也就是手和眼的坐標關系也就清晰了。


提示:以下是本篇文章正文內容,下面案例可供參考,注意參數坐標的使用,能幫助你理解算子

一、Halcon應用?

Halcon 是一個強大的圖像處理工具,該工具是為了解決機器視覺項目任務而創建的。

二、應用實戰

1、圖形理解[eye-to-hand]:

眼在手外:站在相機角度看到的三角形物體,與站在機械臂角度看到的物體可能會有所差異,比如:
在這里插入圖片描述
在這里插入圖片描述

									視角差異圖

大家看到這個腦海中是否會出現之前的一個應用:仿射變換,沒錯,就是用到仿射變換,將相機視角的圖變化到機械臂視角,經過平移和放縮,旋轉。

1.1、開始應用

我們可以采用九點標定板進行標定,在相機視角下,通過halcon將每一個點的圖像坐標獲取到,采用一一對應的方式,獲得對應機械臂坐標下的各個點的機械坐標,這樣就分別獲得兩組坐標,分別是相機視角下的坐標[Qx, Qy],一個是機械視角下的坐標[Rx, Ry]。
在這里插入圖片描述

*假定已經獲得圖像坐標下的九點位置
column_img := [50,150,200,50,150,200,50,150,200]
row_img := [20,20,20,70,70,70,120,120,120]
*分別獲得機械坐標下的九個點位置
column_robot :=[275,225,170,280,230,180,295,240,190]
row_robot := [55,50,45,5,0,-5,-50,-50,-50]*利用該算子構建變換矩陣
vector_to_hom_mat2d (row_img, column_img, row_robot, column_robot, HomMat2D)
* 獲得需要知道的圖像坐標下的某點(Qx, Qy)的機械坐標(Rx, Ry)
affine_trans_point_2d (HomMat2D, Qx, Qy, Rx, Ry)
* 標定完成

2、 圖形理解[eye-in-hand]

眼在手中:相機固定在機械手上面,這種情況的標定過程實際上和相機和機械手分離的標定方法是一樣的,隨著機械臂帶著相機移動,相機視野中的三角形區域會發生變化,某些情況下相機只能看到三角形的一個角區域。但是機械視角和相機視角看到的會是一樣的。
在這里插入圖片描述

2.1、 開始應用

同樣,我們還是采用標定板的方式進行標定,但是此相比前面會有點差異,如下:
在這里插入圖片描述

思考一下:那么視野中只有一個標定點,如何進行標定呢🤔?
步驟1:將標志位(三角形)放置在相機視野中;
步驟2:記錄當前標志位的圖像坐標和機械臂的機械坐標
步驟3:移動機械臂帶動相機移動,比如位置2,大家可以參考背景上的雷電標志,雷電和三角形之間是相對固定的,也就是說,三角形標志在相機視野中在移動;
步驟4:那么我們可以使用9個位置,要保證三角形始終在相機視野中,分別記錄下對應位置的圖像坐標(三角形)和相應的機械坐標
至此,我們是不是得到了類似上面的九點標定數據形式

在這里插入圖片描述
如果你當前是在做相機裝在機械臂末端的九點簡化標定,那你就是在用 Eye-in-Hand 模式,但做的是平面仿射標定,不涉及全6自由度位姿變換,屬于 簡化版手眼標定

* eye in hand
column_img := [869.0,979.07,1090.03,1461.64,1833.96,1724.21,1613.21,1240.49,1351.27]
row_img := [1372.36,1758.86,2145.75,2040.02,1935.01,1546.79,1158.53,1265.07,1652.6]
* column=x row=y
row_robot :=[98.84,109.81,120.62,121.88,123.11,112.23,101.62,100.343,111.08]
column_robot := [320.81,322.27,323.695,313.15,302.45,301.106,299.56,310.75,311.65]
* 現在我們根據圖像坐標求到機械坐標的變換矩陣
vector_to_hom_mat2d (row_img, column_img, row_robot, column_robot, HomMat2D1)
* 那從機械轉圖像一樣
vector_to_hom_mat2d (row_robot, column_robot, row_img, column_img, HomMat2D2)
* 問題來了
* 如果讓標志位移動到相機中心,機械手坐標是多少?
* 已知條件是:機械手拍照位置(Rx,Ry),和標志位坐標(row, column), 相機size=2448*2048
* 假定拍照位置是Ry=1300,Rx=1000, 在拍照位時圖像中標志位是row = 240,col = 542
* 求解坐標, 機械 -> 圖像  注意矩陣用的哪個
affine_trans_point_2d (HomMat2D2, Rx, Ry, col, row)
* 那么相機中心是 
row_center := 1024
col_center := 1224
* 距離中心的偏移量
datarow := row_center - row 
detacol := col_center - col
* 計算標志位在圖像中心時機械應該的坐標
affine_trans_point_2d (HomMat2D1, col_center, row_center, Qx1, Qy1)

在這里插入圖片描述
注意:機械位置僅僅是相機看到的位置,實際并非在機械夾爪下方,需要計算相機和機械夾爪的相對位置,再次移動補償值,才是最終夾爪可以夾取的位置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++11】列表初始化、右值引用、完美轉發、lambda表達式

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🌐 C 語言 上篇文章:unordered_map、unordered_set底層編寫 下篇文章:C11:新的類功能、模板的可…

Pandas取代Excel?

有人在知乎上提問:為什么大公司不用pandas取代excel? 而且列出了幾個理由:Pandas功能比Excel強大,運行速度更快,Excel除了簡單和可視化界面外,沒有其他更多的優勢。 有個可怕的現實是,對比Exce…

Vue 3 中將 ref 創建的響應式對象數據轉換為普通(非響應式)的數據

Vue 3 中使用 ref 創建的響應式對象數據轉換為普通(非響應式)的數據,有以下幾種方法: 1. 訪問 .value 屬性: 這是最直接、最常見的方法。 由于 ref 對象的值存儲在其 .value 屬性中,直接訪問該屬性即可獲得普通數據。…

四月下旬系列

CUHKSZ 校賽 期中考試 DAY -1。 省流&#xff1a;前 1h 切 6 題&#xff0c;后 3h 過 1 題&#xff0c;讀錯一個本來很【】的題&#xff0c;被大模擬構造創【】了。 本地除了 VSCode 沒有 Extensions&#xff0c;別的和省選差不多。使用 DEVC。 前 6 題難度 < 綠&#x…

下采樣(Downsampling)

目錄 1. 下采樣的定義與作用?? ??2. 常見下采樣方法?? ??(1) 池化&#xff08;Pooling&#xff09;?? ??(2) 跨步卷積&#xff08;Strided Convolution&#xff09;?? ??(3) 空間金字塔池化&#xff08;SPP&#xff09;?? ??3. PyTorch 實現示例?? …

lottie深入玩法

A、json文件和圖片資源分開 delete 是json資源名字 /res/lottie/delete_anim_images是圖片資源文件夾路徑 JSON 中引用的圖片名&#xff0c;必須與實際圖片文件名一致 B、json文件和圖片資源分開&#xff0c;并且圖片加載不固定 比如我有7張圖片&#xff0c;分別命名1~7&…

高精度算法(加、減、乘、除、階乘和)?

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 唯有主動付出&#xff0c;才有豐富的果…

探索大語言模型(LLM):馬爾可夫鏈——從詩歌分析到人工智能的數學工具

提出背景與靈感起源 馬爾可夫鏈由俄國數學家安德雷馬爾可夫于1906年提出&#xff0c;最初是為了挑戰當時概率論中“獨立性假設”的局限性。他希望通過研究相依變量序列&#xff0c;證明即使隨機變量之間存在依賴關系&#xff0c;大數定律和中心極限定理仍然成立。 靈感來源&am…

【web服務_負載均衡Nginx】三、Nginx 實踐應用與高級配置技巧

一、Nginx 在 Web 服務器場景中的深度應用? 1.1 靜態網站部署與優化? 在 CentOS 7 系統中&#xff0c;使用 Nginx 部署靜態網站是最基礎也最常見的應用場景。首先&#xff0c;準備網站文件&#xff0c;在/var/www/html目錄下創建index.html文件&#xff1a; sudo mkdir -p…

C語言格式化輸入輸出總結 (printf和scanf)

一、printf格式化輸出 1. 整數格式化 (%d, %i, %u, %o, %x) c復制代碼 int num 42; // 以下為不同格式輸出示例 printf("%d", num); // 42 (十進制) printf("%i", num); // 42 (同%d) printf("%u", num); // 42 (無符號十進制…

哈夫曼編碼和哈夫曼樹

哈夫曼編碼&#xff08;Huffman Coding&#xff09; 是一種基于字符出現頻率的無損數據壓縮算法&#xff0c;通過構建哈夫曼樹&#xff08;Huffman Tree&#xff09; 來生成最優前綴編碼&#xff0c;使得高頻字符用短編碼&#xff0c;低頻字符用長編碼&#xff0c;從而實現高效…

Jetson Orin NX 部署YOLOv12筆記

步驟一.創建虛擬環境 conda create -n yolov12 python3.8.20 注意&#xff1a;YOLOv12/YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7a/YOLOv5 環境通用 步驟二.激活虛擬環境 conda activate yolov12 #激活環境 步驟三.查詢Jetpack出廠版本 Jetson系列平臺各型號支持的最高Jetp…

Linux指令篇 (2)

指令篇&#xff08;2&#xff09; Linux基本指令&#xff08;2&#xff09;(1) mkdir指令&#xff08;重要&#xff09;&#xff08;2&#xff09;rmdir指令&&rm指令(重要)&#xff08;3&#xff09;man指令(重要)&#xff08;4&#xff09;cp指令&#xff08;重要&…

致遠OA——自定義開發rest接口

文章目錄 :apple: 業務流程 &#x1f34e; 業務流程 代碼案例&#xff1a; https://pan.quark.cn/s/57fa808c823f 官方文檔&#xff1a; https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登錄系統 —— 后臺管理 —— 切換系…

區塊鏈如何成為智能城市的底層引擎?從數據透明到自動化治理

區塊鏈如何成為智能城市的底層引擎&#xff1f;從數據透明到自動化治理 引言&#xff1a;智能城市真的智能嗎&#xff1f; 在數字化時代&#xff0c;智能城市&#xff08;Smart City&#xff09;逐步成為各國推動城市創新的重要方向。城市管理者希望借助物聯網&#xff08;IoT…

洛谷P1177【模板】排序:十種排序算法全解(1)

扯談 之前我已經把十大排序算法全講了一遍&#xff08;具體詳見專欄C排序算法&#xff09;,今天我們來用一道簡單的題目總結實戰一下。 算法實現 一、桶排序&#xff08;Bucket Sort&#xff09; ?適用場景?&#xff1a;數據范圍已知且較小&#xff08;需根據測試數據調整…

SuperMap iClient3D for WebGL 如何加載WMTS服務

在 SuperMap iClient3D for WebGL 中加載WMTS服務時&#xff0c;參數配置很關鍵&#xff01;下面我們詳細介紹如何正確填寫參數&#xff0c;確保影像服務完美加載。 一、數據制作 對于上述視頻中的地圖制作&#xff0c;此處不做講述&#xff0c;如有需要可訪問&#xff1a;Onl…

再讀bert(Bidirectional Encoder Representations from Transformers)

再讀 BERT&#xff0c;仿佛在數字叢林中邂逅一位古老而智慧的先知。初次相見時&#xff0c;驚嘆于它以 Transformer 架構為羅盤&#xff0c;在預訓練與微調的星河中精準導航&#xff0c;打破 NLP 領域長久以來的迷霧。而如今&#xff0c;書頁間躍動的不再僅是 Attention 機制精…

從零開始 保姆級教程 Ubuntu20.04系統安裝MySQL8、服務器配置MySQL主從復制、本地navicat遠程連接服務器數據庫

從零開始&#xff1a;Ubuntu 20.04 系統安裝 MySQL 8、服務器配置 MySQL 主從復制、本地 Navicat 遠程連接服務器數據庫 初始化服務器1. 更新本地軟件包列表2. 安裝 MySQL 服務器3. 查看 MySQL 安裝版本4. 登錄 MySQL 管理終端5. 設置 root 用戶密碼&#xff08;推薦使用 nativ…

java怎么完善注冊,如果郵箱中途更換,能否判斷

解析在下面 附贈代碼 private static class CodeInfo {String code;long timestamp;CodeInfo(String code, long timestamp) {this.code code;this.timestamp timestamp;}}// 存儲驗證碼&#xff08;郵箱 -> 驗證碼信息&#xff09;(保證線程安全) 以免中途更改郵箱pri…