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

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

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

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

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

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

未來(lái)的工作
在項(xiàng)目的第二部分,我們將
- 改進(jìn)命令同步
- 內(nèi)部計(jì)算深度圖
- 允許選擇不同的分辨率
- 實(shí)施簡(jiǎn)單的預(yù)覽模式以正確對(duì)齊相機(jī)。
?
- 立體視覺(jué)系統(tǒng)的設(shè)計(jì)方案
- 邊緣AI套件上的立體視覺(jué)深度感知
- 面向雙目立體視覺(jué)的迭代式局部顏色校正方法 5次下載
- 雙目立體計(jì)算機(jī)視覺(jué)的立體匹配研究綜述 3次下載
- 如何使用FPGA實(shí)現(xiàn)微型實(shí)時(shí)多目立體視覺(jué)機(jī)的設(shè)計(jì) 21次下載
- 如何使用FPGA實(shí)現(xiàn)三目立體視覺(jué)外極線校正的方法 12次下載
- 使用雙目立體視覺(jué)實(shí)現(xiàn)CCD測(cè)距系統(tǒng)設(shè)計(jì)的資料說(shuō)明 6次下載
- 基于雙目立體視覺(jué)的橋梁裂縫測(cè)量 0次下載
- 三維立體視覺(jué)技術(shù)的應(yīng)用及其三維恢復(fù)方法介紹 5次下載
- 微型實(shí)時(shí)多目立體視覺(jué)機(jī)設(shè)計(jì)與實(shí)現(xiàn) 2次下載
- 立體視覺(jué)技術(shù)分析
- 雙目立體視覺(jué)在光電子器件自動(dòng)對(duì)接系統(tǒng)中的應(yīng)用 63次下載
- 雙目立體視覺(jué)傳感器精度分析與參數(shù)設(shè)計(jì) 75次下載
- 基于HALCON的雙目立體視覺(jué)系統(tǒng)實(shí)現(xiàn) 130次下載
- 基于預(yù)測(cè)的立體視覺(jué)_力反饋研究
- 三維視覺(jué)測(cè)量技術(shù):被動(dòng)視覺(jué)測(cè)量和主動(dòng)視覺(jué)測(cè)量 898次閱讀
- 雙目立體視覺(jué)是什么樣的技術(shù)? 1173次閱讀
- 計(jì)算機(jī)視覺(jué)中的立體視覺(jué)和深度感知Python示例實(shí)現(xiàn) 681次閱讀
- middlebury數(shù)據(jù)集是什么 2263次閱讀
- 如何通過(guò)立體視覺(jué)構(gòu)建小巧輕便的深度感知系統(tǒng) 723次閱讀
- 采用視覺(jué)與超聲測(cè)量相結(jié)合實(shí)現(xiàn)機(jī)器人抓取功能設(shè)計(jì) 3720次閱讀
- 基于仿人機(jī)器人BHR-1的視覺(jué)跟蹤和運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì) 2932次閱讀
- 計(jì)算機(jī)視覺(jué)教學(xué)的內(nèi)容有哪些? 3686次閱讀
- 什么是“Blockdrop”?立體視覺(jué)應(yīng)用的神經(jīng)形態(tài)技術(shù) 5000次閱讀
- 雙目立體視覺(jué)攝像頭模塊開(kāi)發(fā)設(shè)計(jì) 3095次閱讀
- 雙目立體視覺(jué)三維測(cè)量原理 2.4w次閱讀
- 雙目視覺(jué)技術(shù)的原理、結(jié)構(gòu)、特點(diǎn)、發(fā)展現(xiàn)狀和發(fā)展方向分析 5.1w次閱讀
- 3D雙目立體視覺(jué)在機(jī)器人視覺(jué)的應(yīng)用 1.5w次閱讀
- 圖像處理基本算法-立體視覺(jué) 5547次閱讀
- 立體成像技術(shù)詳解與4D影院的普及 4810次閱讀
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 2世平基于靈動(dòng)微 SPIN560C 的低壓無(wú)刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 3電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電流檢測(cè)芯片F(xiàn)P135應(yīng)用說(shuō)明
- 1.24 MB | 3次下載 | 免費(fèi)
- 6全面解讀被動(dòng)式與主動(dòng)式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7HC88L051F4低功耗芯片規(guī)格書(shū)
- 4.76 MB | 1次下載 | 免費(fèi)
- 8CIU32D655x5數(shù)據(jù)手冊(cè)
- 2.14 MB | 1次下載 | 免費(fèi)
本月
- 1常用電子元器件使用手冊(cè)
- 2.40 MB | 52次下載 | 免費(fèi)
- 2高功率密度碳化硅MOSFET軟開(kāi)關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 3PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 4世平基于靈動(dòng)微 SPIN560C 的低壓無(wú)刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 5電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 6USB拓展塢PCB圖資料
- 0.57 MB | 11次下載 | 免費(fèi)
- 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊(cè)
- 4.51 MB | 9次下載 | 免費(fèi)
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊(cè)
- 0.70 MB | 9次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






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