資料介紹
描述
立體視覺一直是提取 3D 信息的最復(fù)雜和資源密集的過程之一。Netduino 3 以太網(wǎng)板配備 Cortex-M4 168 Mhz 微處理器,能夠?qū)ι倭繄D像數(shù)據(jù)進行密集執(zhí)行。
該板還帶有 4 個可供使用的 UART 端口,非常適合串行通信相機。
我們能夠支持 OV528 協(xié)議與兩個串行相機進行通信并獲取兩張靜止物體的連續(xù)照片。在不久的將來,我們將應(yīng)用其中一種立體視覺算法從獲取的圖像中提取 3D 信息。
該系統(tǒng)分為兩部分:項目的第一部分將管理硬件并按需獲取立體圖像,然后項目的第二部分將在內(nèi)部計算所捕捉對象的 3D 坐標(biāo)。
成分

電腦立體視覺系統(tǒng)
立體視覺系統(tǒng)由一對已知水平位移和對稱對齊的數(shù)碼相機組成。這些數(shù)碼相機同時獲取圖像并計算 3D 空間信息。
我們將兩個攝像頭連接到木尺上,以測試攝像頭之間的不同水平位移以及它如何影響 3D 計算測量值。目前我們所做的唯一檢查是將相機與它們的焦軸(鏡頭中心)分開 3 英寸。
該系統(tǒng)由兩個能夠捕捉高達 640x480 圖像的串行相機組成。我們選擇選擇 320x240 的分辨率,以便更輕松地處理數(shù)據(jù)。尺寸越小,所需的處理資源就越少。

目前,錄制過程是順序的:設(shè)置攝像頭進行捕獲,發(fā)送快照命令,最后將圖像緩沖區(qū)讀取到應(yīng)用程序。對攝像機 1 完成此過程,然后對攝像機 2 重復(fù)此過程。
圖像數(shù)據(jù)保存在 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);
}
請注意,我們的目標(biāo)不是實時 3D 計算和顯示,而是更多用于 3D 掃描的對象建模。
UART通信
Netduino 3 最多支持 4 個 UART 通道。我們使用 UART COM1 和 UART COM2 連接相機。

.NET MicroFramework 通過定義一個事件回調(diào)函數(shù)來支持 UART 設(shè)備,當(dāng)系統(tǒng)通過一個活動端口接收到信息時將觸發(fā)該回調(diào)函數(shù)。
//Set event callback function
Camera2.DataReceived += SerialDataReceived;
Camera1.DataReceived += SerialDataReceived;
事件函數(shù)定義如下。兩個攝像頭調(diào)用相同的事件函數(shù)并在內(nèi)部檢查以查看哪個實例進行了調(diào)用。
接收到的數(shù)據(jù)存儲在本地內(nèi)存數(shù)組中,然后移動到全局變量中,以便我們可以訪問它。接收到的數(shù)據(jù)量也被保存到一個全局變量中。
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;
}
}
}
發(fā)送命令并等待響應(yīng)后的事件同步仍然是我們尚未克服的挑戰(zhàn)。我們將研究信號量或臨界區(qū)。復(fù)雜性是由于董事會實現(xiàn)了一個循環(huán)調(diào)度程序,該調(diào)度程序在等待變量更改狀態(tài)時添加了無限循環(huán)。這可能會使進程死鎖并將事件進程設(shè)置為饑餓模式。我們將在了解如何同步事件后立即報告項目的第二部分。
與此同時,我們通過蠻力解決同步問題。換句話說,如果我們沒有收到我們期望的確認流,那么我們會再次發(fā)送命令,直到收到正確的響應(yīng)。您可以在下面的代碼中看到它。
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;
}
}
}
請注意,我們使用的是無限循環(huán)。發(fā)送初始化命令,檢查是否收到了確認響應(yīng),如果不是預(yù)期的響應(yīng),則再次重復(fù)該過程。
相機在處理完命令后會清除命令緩沖區(qū),因此相機在處理完前一個命令后就準(zhǔn)備好接受新命令。
這種方法最終會奏效,但它可能會更快。
相機協(xié)議OV528
下表顯示了可用于使用 OV528協(xié)議對串行攝像頭進行編程的命令。該協(xié)議基于以六字節(jié)字節(jié)指定的命令。根據(jù)發(fā)送的命令,發(fā)送回相同大小或雙倍的確認。
命令通過 UART 端口發(fā)送并同步以接收確認。

我們的配置將相機設(shè)置為獲取 320x240 8 位顏色的分辨率。該協(xié)議非常簡單明了。
實驗
我們使用了距攝像機中心視野 3 英寸的單個水平位移。使用兩個靜止物體來獲取立體圖像,系統(tǒng)設(shè)置如下圖所示。

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

未來的工作
在項目的第二部分,我們將
- 改進命令同步
- 內(nèi)部計算深度圖
- 允許選擇不同的分辨率
- 實施簡單的預(yù)覽模式以正確對齊相機。
?
- 立體視覺系統(tǒng)的設(shè)計方案
- 邊緣AI套件上的立體視覺深度感知
- 面向雙目立體視覺的迭代式局部顏色校正方法 5次下載
- 雙目立體計算機視覺的立體匹配研究綜述 3次下載
- 如何使用FPGA實現(xiàn)微型實時多目立體視覺機的設(shè)計 21次下載
- 如何使用FPGA實現(xiàn)三目立體視覺外極線校正的方法 12次下載
- 使用雙目立體視覺實現(xiàn)CCD測距系統(tǒng)設(shè)計的資料說明 6次下載
- 基于雙目立體視覺的橋梁裂縫測量 0次下載
- 三維立體視覺技術(shù)的應(yīng)用及其三維恢復(fù)方法介紹 5次下載
- 微型實時多目立體視覺機設(shè)計與實現(xiàn) 2次下載
- 立體視覺技術(shù)分析
- 雙目立體視覺在光電子器件自動對接系統(tǒng)中的應(yīng)用 63次下載
- 雙目立體視覺傳感器精度分析與參數(shù)設(shè)計 75次下載
- 基于HALCON的雙目立體視覺系統(tǒng)實現(xiàn) 130次下載
- 基于預(yù)測的立體視覺_力反饋研究
- 基于SD3589高精度雙目立體視覺相機:助力三維感知與智能化應(yīng)用 71次閱讀
- 三維視覺測量技術(shù):被動視覺測量和主動視覺測量 2.1k次閱讀
- 雙目立體視覺是什么樣的技術(shù)? 3k次閱讀
- 計算機視覺中的立體視覺和深度感知Python示例實現(xiàn) 1.5k次閱讀
- middlebury數(shù)據(jù)集是什么 3.2k次閱讀
- 如何通過立體視覺構(gòu)建小巧輕便的深度感知系統(tǒng) 1.2k次閱讀
- 采用視覺與超聲測量相結(jié)合實現(xiàn)機器人抓取功能設(shè)計 4.3k次閱讀
- 基于仿人機器人BHR-1的視覺跟蹤和運動控制系統(tǒng)的設(shè)計 4k次閱讀
- 什么是“Blockdrop”?立體視覺應(yīng)用的神經(jīng)形態(tài)技術(shù) 5.6k次閱讀
- 雙目立體視覺攝像頭模塊開發(fā)設(shè)計 3.6k次閱讀
- 雙目立體視覺三維測量原理 2.5w次閱讀
- 雙目視覺技術(shù)的原理、結(jié)構(gòu)、特點、發(fā)展現(xiàn)狀和發(fā)展方向分析 5.4w次閱讀
- 3D雙目立體視覺在機器人視覺的應(yīng)用 1.8w次閱讀
- 圖像處理基本算法-立體視覺 6k次閱讀
- 立體成像技術(shù)詳解與4D影院的普及 5.4k次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
- 2.33 MB | 次下載 | 免費
- 4MDD品牌三極管S9012數(shù)據(jù)手冊
- 2.62 MB | 次下載 | 免費
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴音機 AVR-1507手冊
- 2.50 MB | 次下載 | 免費
- 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
- 0.60 MB | 次下載 | 免費
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費
- 2PC5502負載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 23次下載 | 免費
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
- 1.81 MB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論