精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Netduino上的立體視覺

Netduino上的立體視覺

2022-11-08 | zip | 3.01 MB | 次下載 | 免費

資料介紹

描述

立體視覺一直是提取 3D 信息的最復雜和資源密集的過程之一。Netduino 3 以太網板配備 Cortex-M4 168 Mhz 微處理器,能夠對少量圖像數據進行密集執行。

該板還帶有 4 個可供使用的 UART 端口,非常適合串行通信相機。

我們能夠支持 OV528 協議與兩個串行相機進行通信并獲取兩張靜止物體的連續照片。在不久的將來,我們將應用其中一種立體視覺算法從獲取的圖像中提取 3D 信息。

該系統分為兩部分:項目的第一部分將管理硬件并按需獲取立體圖像,然后項目的第二部分將在內部計算所捕捉對象的 3D 坐標。

成分

?
?
poYBAGNomOWAXgKGAAK3LZB_8gw267.jpg
?
1 / 3 ? Netduino 3 以太網
?

電腦立體視覺系統

立體視覺系統由一對已知水平位移和對稱對齊的數碼相機組成。這些數碼相機同時獲取圖像并計算 3D 空間信息。

我們將兩個攝像頭連接到木尺上,以測試攝像頭之間的不同水平位移以及它如何影響 3D 計算測量值。目前我們所做的唯一檢查是將相機與它們的焦軸(鏡頭中心)分開 3 英寸。

該系統由兩個能夠捕捉高達 640x480 圖像的串行相機組成。我們選擇選擇 320x240 的分辨率,以便更輕松地處理數據。尺寸越小,所需的處理資源就越少。

?
?
?
?
poYBAGNomOqAZce3AAH325KarcM623.jpg
?
1 / 3 ?幾個攝像頭對齊
?

目前,錄制過程是順序的:設置攝像頭進行捕獲,發送快照命令,最后將圖像緩沖區讀取到應用程序。對攝像機 1 完成此過程,然后對攝像機 2 重復此過程。

圖像數據保存在 Netduino 3 的 SD 卡中。

if (_button.Read())
           {
               //Record image from camera 1
               Set4Capture(Camera1);
               Snap(Camera1);
               GetImage(Camera1);
               //Record image from camera 2
               Set4Capture(Camera2);
               Snap(Camera2);
               GetImage(Camera2);
           }

請注意,我們的目標不是實時 3D 計算和顯示,而是更多用于 3D 掃描的對象建模。

UART通信

Netduino 3 最多支持 4 個 UART 通道。我們使用 UART COM1 和 UART COM2 連接相機。

?
pYYBAGNomO2AAsskAACzZunGlco529.jpg
?

.NET MicroFramework 通過定義一個事件回調函數來支持 UART 設備,當系統通過一個活動端口接收到信息時將觸發該回調函數。

//Set event callback function  
       Camera2.DataReceived += SerialDataReceived;
       Camera1.DataReceived += SerialDataReceived;

事件函數定義如下。兩個攝像頭調用相同的事件函數并在內部檢查以查看哪個實例進行了調用。

接收到的數據存儲在本地內存數組中,然后移動到全局變量中,以便我們可以訪問它。接收到的數據量也被保存到一個全局變量中。

static void SerialDataReceived(object sender, SerialDataReceivedEventArgs e)
   {
       if ((e.EventType == SerialData.Chars) && (sender == Camera1))
       {
           const int BUFFER_SIZE = 1024;
           byte[] buffer = new byte[BUFFER_SIZE];
           int amount = ((SerialPort)sender).Read(buffer, 0, BUFFER_SIZE);
           if (amount > 0)
           {
               for (int index = 0; index < amount; index++)
               {
                   messageFromCam1[index] = buffer[index];
               }
               dataRead1 = true;
               dataSize1 = amount;
           }
       }
       else if ((e.EventType == SerialData.Chars) && (sender == Camera2))
       {
           const int BUFFER_SIZE = 1024;
           byte[] buffer = new byte[BUFFER_SIZE];
           int amount = ((SerialPort)sender).Read(buffer, 0, BUFFER_SIZE);
           if (amount > 0)
           {
               for (int index = 0; index < amount; index++)
               {
                   messageFromCam1[index] = buffer[index];
               }
               dataRead1 = true;
               dataSize1 = amount;
           }
       }
   }

發送命令并等待響應后的事件同步仍然是我們尚未克服的挑戰。我們將研究信號量或臨界區。復雜性是由于董事會實現了一個循環調度程序,該調度程序在等待變量更改狀態時添加了無限循環。這可能會使進程死鎖并將事件進程設置為饑餓模式。我們將在了解如何同步事件后立即報告項目的第二部分。

與此同時,我們通過蠻力解決同步問題。換句話說,如果我們沒有收到我們期望的確認流,那么我們會再次發送命令,直到收到正確的響應。您可以在下面的代碼中看到它。

           while (true)
           {
               clearBuffer(camDevice);
               sendCmd(camDevice, cmd, 6);
               cmdRet = readReply(camDevice, resp, ref dS2R);
               if (!cmdRet && dS2R < 6) continue;
               if (resp[0] == 0xaa && resp[1] == (0x0e | cameraAddr) && resp[2] == 0x0d && resp[4] == 0 && resp[5] == 0)
               {
                   if (dS2R == 12)
                   {
                       if (resp[6] == 0xaa && resp[7] == (0x0d | cameraAddr) && resp[8] == 0 && resp[9] == 0 && resp[10] == 0 && resp[11] == 0)
                           break;
                   }
               }
           }

請注意,我們使用的是無限循環。發送初始化命令,檢查是否收到了確認響應,如果不是預期的響應,則再次重復該過程。

相機在處理完命令后會清除命令緩沖區,因此相機在處理完前一個命令后就準備好接受新命令。

這種方法最終會奏效,但它可能會更快。

相機協議OV528

下表顯示了可用于使用 OV528協議對串行攝像頭進行編程的命令。該協議基于以六字節字節指定的命令。根據發送的命令,發送回相同大小或雙倍的確認。

命令通過 UART 端口發送并同步以接收確認。

?
poYBAGNomO-AeTzCAADpiY-nXjA999.jpg
OV528 協議
?

我們的配置將相機設置為獲取 320x240 8 位顏色的分辨率。該協議非常簡單明了。

實驗

我們使用了距攝像機中心視野 3 英寸的單個水平位移。使用兩個靜止物體來獲取立體圖像,系統設置如下圖所示。

?
poYBAGNomPOARF0-AAJ3udSinQg944.jpg
立體視覺系統在行動
?

從系統獲取的立體圖像并未完全對齊,但這是一個很好的起點,可以測試我們將在項目下一階段實施的可能立體視覺算法的穩健性。

?
?
?
?
poYBAGNomPaAY_NQAAAZtKThlYY115.jpg
?
1 / 2 ?貓形象的立體圖像
?

未來的工作

在項目的第二部分,我們將

  • 改進命令同步
  • 內部計算深度圖
  • 允許選擇不同的分辨率
  • 實施簡單的預覽模式以正確對齊相機。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費