日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

TOF深度相机数据到点云转换(一)

發(fā)布時(shí)間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TOF深度相机数据到点云转换(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、深度圖的概念

1.深度圖像的像素值反映場(chǎng)景中物體到相機(jī)的傳感器平面的距離,獲取深度圖像的方法=被動(dòng)測(cè)距傳感+主動(dòng)深度傳感。
2.深度圖像是物體的三維表示形式,一般通過立體照相機(jī)或者TOF照相機(jī)獲取。如果具備照相機(jī)的內(nèi)標(biāo)定參數(shù),可將深度圖像轉(zhuǎn)換為點(diǎn)云。
3.深度圖像的獲取方法有激光雷達(dá)深度成像法、計(jì)算機(jī)立體視覺成像、坐標(biāo)測(cè)量機(jī)法、莫爾條紋法、結(jié)構(gòu)光法等。
4.深度圖往往以灰度形式或者偽彩色形式表現(xiàn),但它和傳統(tǒng)相機(jī)的到灰度圖以及RGB圖有本質(zhì)的區(qū)別。

二、深度圖和點(diǎn)云的數(shù)據(jù)存儲(chǔ)

1.3D相機(jī)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)形式,存儲(chǔ)次序往往和傳感器的像素排列一致

2.點(diǎn)云的數(shù)據(jù)存儲(chǔ)形式,每行對(duì)應(yīng)一個(gè)點(diǎn)的X/Y/Z坐標(biāo)

三、TOF 3D相機(jī)數(shù)據(jù)中距離Z的計(jì)算關(guān)系

1.相機(jī)和光源位置重合


2.相機(jī)和光源位置不重合


對(duì)于原始的TOF相機(jī)數(shù)據(jù),距離值指光源經(jīng)過物體反射到達(dá)相機(jī)的距離L,光源和相機(jī)位置不重合時(shí),按上面的方式計(jì)算物體的Z坐標(biāo)。

四、 深度圖和點(diǎn)云的轉(zhuǎn)換代碼示例(考慮光源位置的情況)

五、點(diǎn)云重投影到深度圖

? 地面“調(diào)平”——通過點(diǎn)云數(shù)據(jù)調(diào)整,修正相機(jī)鏡頭和地面不平行
? 識(shí)別圖像的視角歸一化
? RGBD融合

1.使用點(diǎn)云重投影的運(yùn)算過程
(1)原始深度圖>>>點(diǎn)云
(2)點(diǎn)云通過坐標(biāo)變換重投影到深度圖
2.注意問題
(1)遮擋問題
由于遮擋,映射到相同像素坐標(biāo)的物體在深度圖中只保留最近物體
(1)透射問題
點(diǎn)云稀疏出發(fā)生“透射”現(xiàn)象,造成錯(cuò)誤結(jié)果

3.解決方法

# !/usr/bin/python3 # coding=utf-8import numpy as npCAM_WID, CAM_HGT = 640, 480 # 重投影到的深度圖尺寸 CAM_FX, CAM_FY = 795.209, 793.957 # fx/fy CAM_CX, CAM_CY = 332.031, 231.308 # cx/cyEPS = 1.0e-16# 加載點(diǎn)云數(shù)據(jù) pc = np.genfromtxt('pc_rot.csv', delimiter=',').astype(np.float32)# 濾除鏡頭后方的點(diǎn) valid = pc[:, 2] > EPS z = pc[valid, 2]# 點(diǎn)云反向映射到像素坐標(biāo)位置 u = np.round(pc[valid, 0] * CAM_FX / z + CAM_CX).astype(int) v = np.round(pc[valid, 1] * CAM_FY / z + CAM_CY).astype(int)# 濾除超出圖像尺寸的無效像素 valid = np.bitwise_and(np.bitwise_and((u >= 0), (u < CAM_WID)),np.bitwise_and((v >= 0), (v < CAM_HGT))) u, v, z = u[valid], v[valid], z[valid]# 按距離填充生成深度圖,近距離覆蓋遠(yuǎn)距離 img_z = np.full((CAM_HGT, CAM_WID), np.inf) for ui, vi, zi in zip(u, v, z):img_z[vi, ui] = min(img_z[vi, ui], zi) # 近距離像素屏蔽遠(yuǎn)距離像素# 小洞和“透射”消除 img_z_shift = np.array([img_z, \np.roll(img_z, 1, axis=0), \np.roll(img_z, -1, axis=0), \np.roll(img_z, 1, axis=1), \np.roll(img_z, -1, axis=1)]) img_z = np.min(img_z_shift, axis=0)# 保存重新投影生成的深度圖dep_rot np.savetxt('dep_rot.csv', img_z, fmt='%.12f', delimiter=',', newline='\n')# 加載剛保存的深度圖dep_rot并顯示 import matplotlib.pyplot as pltimg = np.genfromtxt('dep_rot.csv', delimiter=',').astype(np.float32) plt.imshow(img, cmap='jet') plt.show()

總結(jié)

以上是生活随笔為你收集整理的TOF深度相机数据到点云转换(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。