官术网_书友最值得收藏!

2.6 SDK編程應(yīng)用舉例

1.DF_CameraViewer(C++)

DF_CameraViewer示例是一個簡單的C++控制臺應(yīng)用程序,主要展示獲取和渲染彩色、深度圖像流。

這個實例可用于快速檢測某些SDK接口。

DF_CameraViewer [-load <module name>] [-sdname<device name>]
[-csize<resolution>] [-dsize<resolution>] [-file <Output Filename>] [-listio] [-record] [-help]

-load 加載指定模塊。

-csize 指定彩色數(shù)據(jù)流的分辨率和幀速率。例如使用640×480指定分辨率,或用640×480×30指定分辨率和幀速率。

-dsize 指定深度數(shù)據(jù)流的分辨率和幀速率。例如使用640×480指定分辨率,或用640×480×30指定分辨率和幀速率。

-sdname 指定輸入設(shè)備名稱。

-nframes 指定記錄的最大幀數(shù)。

-listio 列出輸入輸出設(shè)備。

-record 啟用文件記錄。使用文件選項來指定記錄文件名。

-le 指定記錄或播放文件名,SDK將攝像頭數(shù)據(jù)記錄到指定的文件中。如果-record未定義,則該示例將僅回放指定的文件。

SDK的安裝目錄的訪問權(quán)限并不可寫。如需記錄到文件中,指定在一個具有可寫權(quán)限目錄中的文件名。

-help 輸出幫助信息。

2.DF_Projection(C++)

DF_Projection實例演示了如何使用SDK投影功能。投影函數(shù)主要用于在彩色圖像坐標(biāo)系、深度圖像坐標(biāo)系和攝像頭坐標(biāo)系進行坐標(biāo)的映射或投影。本例主窗口如圖2-12所示。

圖2-12 DF_Projection主窗口

菜單欄包含以下標(biāo)簽:

  • 設(shè)備(Device) 選擇成像設(shè)備。
  • 彩色(Color) 選擇彩色分辨率。
  • 深度(Depth) 選擇深度流分辨率。
  • 模式(Mode) 選擇實時(默認)或回放模式。
  • 命令(Command) 啟動或停止流。

圖像面板的彩色、深度和頂點數(shù)據(jù)如圖2-13所示。

圖2-13 圖像面板的彩色、深度和頂點數(shù)據(jù)

如果最初沒有顯示,可以單擊QueryInvUVMap按鈕顯示逆紅外映射。逆紅外映射完成從彩色圖像到深度圖像的坐標(biāo)映射。

如果最初沒有顯示,單擊QueryUVMap按鈕顯示紅外映射。紅外映射完成從深度圖像到彩色圖像的坐標(biāo)映射。

如果最初沒有顯示,單擊QueryVertices按鈕顯示頂點數(shù)據(jù),頂點數(shù)據(jù)位于3D空間。為了渲染簡便,例子中將頂點數(shù)據(jù)投影到2D平面進行可視化展現(xiàn)。當(dāng)移動鼠標(biāo)時,例子應(yīng)用了一些照明效果來展示一個虛擬3D效果。

可以在彩色、深度和頂點3個面板上顯示數(shù)據(jù)流。例子可將某個面板的坐標(biāo)映射到其他面板,并在其上進行相應(yīng)的繪制。對映射和投影方式也進行了標(biāo)注,如圖2-14所示。

圖2-14 不同面板間的坐標(biāo)映射

控制面板包含以下按鈕。

  • CreateDepthImageMappedToColor和CreateColorImageMappedToDepth:分別創(chuàng)建對齊彩色或深度分辨率圖像,如圖2-15所示。
  • 播放彩色流(和深度流)。
  • 暫停流。
  • 停止流。
  • 水平方向鏡像流。
  • 狀態(tài)欄:提供選定的分辨率、剪輯和流狀態(tài)等操作過程中的信息。

圖2-15 對齊的彩色和深度圖像

3.DF_RawStreams(C++,C#)

DF_RawStreams和DF_RawStreams.cs實例展示如何把原始深度和彩色流可視化,以及一些投影功能,其主窗口如圖2-16所示。

圖2-16 DF_RawStreams實例主窗口

從菜單中,可以選擇下列項目。

  • 設(shè)備(Device):從輸入/輸出設(shè)備列表中選擇一個設(shè)備的流。
  • 彩色、深度(紅外)、左、右(Color、Depth、Left、Right):選擇相應(yīng)的數(shù)據(jù)流配置,流的類型與攝像頭有關(guān)。
  • 模式:選擇是否實時進行流直播、錄制或播放。如果選擇播放或錄制模式,則會提示播放或記錄文件名。
  • C/D Sync:在可視化過程中,選擇是否使用同步或異步的彩色流和深度流。前者同步彩色圖像與相應(yīng)深度圖像的播放,而后者按各自的幀速率顯示。
4.FF_IQSampleTool(C#)

FF_IQSampleTool.cs應(yīng)用程序是基于FF_RawStreams.cs實例的。它展示了如何進行攝像頭的圖像質(zhì)量測試。它具備下列特點:

  • 自動標(biāo)記跟蹤
  • XYZ懸停深度輸出流
  • 為紅外圖校準(zhǔn)誤差測試
  • 深度均勻性試驗
  • 絕對深度值的檢驗

此應(yīng)用程序需要使用一個PORT3測試圖。可以自己打印PORT3測試圖,SDK在Assets目錄下已包括Port3 Chart.pdf,如圖2-17所示。

圖2-17 PORT3測試圖

測試步驟如下:

1)獲取圖表。

2)設(shè)置測試區(qū)域。將攝像頭放置在離測試圖50厘米遠處,并確保PORT3圖與攝像頭的平面平行。如果不平行,測試結(jié)果會出現(xiàn)偏差。可以用一個盒子、一個金屬框架或者包含間隔物的測試圖等來做類似的測試。

3)啟動應(yīng)用程序。如果攝像頭加載成功,深度按鈕將變?yōu)榭捎茫贒evice下拉菜單中也能看到這個攝像頭。

4)選擇“彩色”按鈕,單擊“開始流”運行視頻采集。

5)對于標(biāo)志的跟蹤,程序必須知道測試圖的位置。要做到這一點,必須勾勒出測試圖的邊緣。將鼠標(biāo)光標(biāo)從測試圖的一個角拖動到另一個角,完成后單擊“設(shè)置RGB邊界”,如圖2-18所示。

圖2-18 測試圖邊界設(shè)置

6)確保基準(zhǔn)標(biāo)記處于合適位置,可以看到紅色方塊上所畫的黑色圓圈。也可以在黑色圓圈標(biāo)記的中心看到黑十字。在圖2-19中尋找正確的對齊方式(左)和不正確的對齊方式(右)。定位不當(dāng)可能源于不良照明(對于RGB視頻來講)或從邊緣選擇過程中引入的舍入誤差。如果標(biāo)記檢測不正確,需要重復(fù)步驟5),但應(yīng)選擇不同大小的標(biāo)記。

圖2-19 基準(zhǔn)標(biāo)記定位

7)屏幕應(yīng)該如圖2-20所示。

圖2-20 基準(zhǔn)標(biāo)記整體圖

8)選擇“深度”按鈕,視頻將變?yōu)閮H有深度視圖。

9)通過拖動鼠標(biāo)從一個角到另一個角,指定測試圖的邊緣,單擊“設(shè)置深度邊界”,如圖2-21所示。

圖2-21 設(shè)置深度邊界

10)視圖現(xiàn)在應(yīng)該如圖2-22所示。

圖2-22 設(shè)置后的視圖

11)注意基準(zhǔn)標(biāo)記畫在白色方塊上。綠色方塊是ROI(感興趣區(qū)域)的數(shù)組,用于均勻性試驗。檢查所有的基準(zhǔn)標(biāo)記對齊情況,所有的綠色區(qū)域要在深度圖范圍內(nèi)。如果不滿足,需要重復(fù)步驟9)。

12)單擊“運行測試”來分析數(shù)據(jù),測試包括:

  • UV圖映射:校正誤差。UV圖將RGB流和深度流對齊。此測試計算對齊中的錯誤。使用測試圖時,可以看到這種錯誤的一個例子,如圖2-23所示。圖中圓形標(biāo)記不一致,即是紫外圖對齊錯誤。

圖2-23 深度數(shù)據(jù)覆蓋到彩色流上

  • 絕對深度錯誤。這項測試主要測量突出的正方形和攝像頭表面間的深度,然后與記錄在黑色標(biāo)記中心的深度值進行比較。由于突出方塊的規(guī)格為12厘米×12厘米×5厘米,測量出的差異應(yīng)等于5厘米。
  • 一致性檢驗。這個測試將創(chuàng)建一個ROI數(shù)組。每個ROI數(shù)組的深度數(shù)據(jù)被處理后得到平均值和標(biāo)準(zhǔn)方差,然后用于一致性測量。任何傾斜誤差都會在這些結(jié)果中得到顯現(xiàn)。
主站蜘蛛池模板: 新昌县| 丰城市| 美姑县| 吐鲁番市| 汨罗市| 永济市| 政和县| 荔浦县| 富源县| 和静县| 仲巴县| 女性| 凉城县| 依安县| 屏南县| 黄浦区| 昌乐县| 莒南县| 曲阜市| 彭泽县| 东海县| 巴林左旗| 承德市| 开远市| 通城县| 曲靖市| 通化县| 高安市| 兰州市| 巫溪县| 右玉县| 合川市| 九江县| 呼图壁县| 德昌县| 太仓市| 榆林市| 廉江市| 西乌珠穆沁旗| 文化| 高唐县|