3D感知(作業4 5)

2021-10-04 03:03:31 字數 1280 閱讀 2212

作業4是要求實現半徑濾波:

k近鄰尋找:(這裡沒有使用資料結構)

def find_knn(p,pc,k=10):

pc_diff=pc-p.reshape(1,3)

dist=np_lin.norm(pc_diff,axis=1)

idx=np.argsort(dist)[:k]

return idx,dist[idx]

半徑濾波:

for i in range(pc.shape[0]):

idx, dist=find_knn(pc[i],pc,10)

if (dist[-1]>0.005):

pc=np.delete(pc,i,0)

0.005為閾值(k近鄰中 距離最遠的點);

****的是使用flann庫的

if false:

import cv2

# algorithm=1: kd-tree, trees=5:構建5棵樹,加快搜尋(1-16), checks=50: 查詢遞迴次數

flann = cv2.flannbasedmatcher(dict(algorithm=1, trees=16), dict(checks=50))

# knn搜尋

print('knn (opencv)')

matches = flann.knnmatch(pc,pc,k=10)

print('filtering...')

pc_new=np.array([pc[i] for i,m in enumerate(matches) if max([n.distance for n in m])<0.005])

# 用pcl實現knn檢測

else:

import pcl

cloud = pcl.pointcloud(pc.astype(np.float32))

# 構建kdtree用於快速最近鄰搜尋

kdtree = cloud.make_kdtree_flann()

# k近鄰搜尋

print('knn (pcl)')

[idx, dist] = kdtree.nearest_k_search_for_cloud(cloud, 10)

print('filtering...')

pc_new=pc[np.max(dist,axis=1)<0.005**2]

作業5(對給定點雲, 從中檢測出平面和直線的引數)

不要為3d而3d

和以前的幾個朋友聊天,也有做game的。發現大家對3d技術都非常熱衷,但是這種熱衷顯得刻意的 為3d而3d,就有點捨本逐末。1 遊戲最重要的是策劃,需要具體的滿足人心底的某種需求,2 3d需要 好顯示卡的支援,這樣就將一部分使用者排斥在外面了。3 現在3d engine已經 很成熟了,通過這些上面的...

3D遊戲程式設計與設計作業一

所使用的思維導圖繪圖工具為mindmaster。華為應用 的遊戲排行榜前20名如下 9月22日 1王者榮耀 2和平精英 3迷你世界 4我的世界 5開心消消樂 6穿越火線 7貪吃蛇大作戰 8植物大戰殭屍2 9陰陽師 10湯姆貓跑酷 從排行榜可以看出,第1的王者榮耀 第2的和平精英 第6的穿越火線是屬於...

3D遊戲程式設計與設計作業六

按 adapter模式 設計圖修改飛碟遊戲 使它同時支援物理運動與運動學 變換 運動 原專案 3d程式設計與遊戲設計作業五 僅僅對其中的一些類進行改動就能實現。飛碟預設 由於要求支援物理運動,因此飛碟的預設需要在原來的基礎上加上剛體 adapter的實現 adapter是通過不同的狀態選擇不同的介面...