Open3d学习计划—高级篇 8(网格变形)
Open3D是一個開源庫,支持快速開發和處理3D數據。Open3D在c++和Python中公開了一組精心選擇的數據結構和算法。后端是高度優化的,并且是為并行化而設置的。
本系列學習計劃有Blue同學作為發起人,主要以Open3D官方網站的教程為主進行翻譯與實踐的學習計劃。點云PCL公眾號作為免費的3D視覺,點云交流社區,期待有使用Open3D或者感興趣的小伙伴能夠加入我們的翻譯計劃,貢獻免費交流社區,為使用Open3D提供中文的使用教程。
網格變形
如果我們想使用少量的約束使得三角網格變形,得使用相應的網格變形算法。Open3d實現了[SorkineAndAlexa2007]?中的盡可能嚴格的算法,以優化下面的能量函數:
這里的Ri表示 我們要優化的旋轉矩陣,pi和pj分別表示優化前后的頂點位置。N(i)表示頂點i的鄰域集合。權重wij表示余切權重(cot weights)。
Open3d實現的算法的接口是deform_as_rigid_as_possible。這個算法的第一個參數是一組constraint_ids,他是引用的三角網格的頂點。第二個參數constrint_pos定義了這些頂點優化后的位置。因為這個優化過程是一個迭代的過程,所以我們也能通過max_iter定義迭代次數。
mesh = o3dtut.get_armadillo_mesh()vertices = np.asarray(mesh.vertices)
static_ids = [idx for idx in np.where(vertices[:, 1] < -30)[0]]
static_pos = []
for id in static_ids:static_pos.append(vertices[id])
handle_ids = [2490]
handle_pos = [vertices[2490] + np.array((-40, -40, -40))]
constraint_ids = o3d.utility.IntVector(static_ids + handle_ids)
constraint_pos = o3d.utility.Vector3dVector(static_pos + handle_pos)with o3d.utility.VerbosityContextManager(o3d.utility.VerbosityLevel.Debug) as cm:mesh_prime = mesh.deform_as_rigid_as_possible(constraint_ids, constraint_pos, max_iter=50)
print('Original Mesh')
R = mesh.get_rotation_matrix_from_xyz((0,np.pi,0))
o3d.visualization.draw_geometries([mesh.rotate(R, center=mesh.get_center())])
print('Deformed Mesh')
mesh_prime.compute_vertex_normals()
o3d.visualization.draw_geometries([mesh_prime.rotate(R, center=mesh_prime.get_center())])
Original Mesh
Deformed Mesh
Smoothed ARAP
Open3d實現了ARAP目標的平滑版本,定義為:
這懲罰相鄰旋轉矩陣的偏差,α 是正則項的權衡參數,A是表面積。
通過將參數energy和Smoothed一起使用,可以在deform_as_rigid_as_possible中使用這個平滑目標。
資源
三維點云論文及相關應用分享
【點云論文速讀】基于激光雷達的里程計及3D點云地圖中的定位方法
3D目標檢測:MV3D-Net
三維點云分割綜述(上)
3D-MiniNet: 從點云中學習2D表示以實現快速有效的3D LIDAR語義分割(2020)
win下使用QT添加VTK插件實現點云可視化GUI
JSNet:3D點云的聯合實例和語義分割
大場景三維點云的語義分割綜述
PCL中outofcore模塊---基于核外八叉樹的大規模點云的顯示
基于局部凹凸性進行目標分割
基于三維卷積神經網絡的點云標記
點云的超體素(SuperVoxel)
基于超點圖的大規模點云分割
更多文章可查看:點云學習歷史文章大匯總
SLAM及AR相關分享
【開源方案共享】ORB-SLAM3開源啦!
【論文速讀】AVP-SLAM:自動泊車系統中的語義SLAM
【點云論文速讀】StructSLAM:結構化線特征SLAM
SLAM和AR綜述
常用的3D深度相機
AR設備單目視覺慣導SLAM算法綜述與評價
SLAM綜述(4)激光與視覺融合SLAM
Kimera實時重建的語義SLAM系統
SLAM綜述(3)-視覺與慣導,視覺與深度學習SLAM
易擴展的SLAM框架-OpenVSLAM
高翔:非結構化道路激光SLAM中的挑戰
SLAM綜述之Lidar SLAM
基于魚眼相機的SLAM方法介紹
往期線上分享錄播匯總
第一期B站錄播之三維模型檢索技術
第二期B站錄播之深度學習在3D場景中的應用
第三期B站錄播之CMake進階學習
第四期B站錄播之點云物體及六自由度姿態估計
第五期B站錄播之點云深度學習語義分割拓展
第六期B站錄播之Pointnetlk解讀
[線上分享錄播]點云配準概述及其在激光SLAM中的應用
[線上分享錄播]cloudcompare插件開發
[線上分享錄播]基于點云數據的?Mesh重建與處理
[線上分享錄播]機器人力反饋遙操作技術及機器人視覺分享
[線上分享錄播]地面點云配準與機載點云航帶平差
點云PCL更多活動請查看:點云PCL活動之應屆生校招群
掃描下方微信視頻號二維碼可查看最新研究成果及相關開源方案的演示:
如果你對Open3D感興趣,或者正在使用該開源方案,就請加入我們,一起翻譯,一起學習,貢獻自己的力量,目前階段主要以微信群為主,有意者發送“Open3D學習計劃”到公眾號后臺,和更多熱愛分享的小伙伴一起交流吧!如果翻譯的有什么問題或者您有更好的意見,請評論交流!!!!
以上內容如有錯誤請留言評論,歡迎指正交流。如有侵權,請聯系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關注我們
讓我們一起分享一起學習吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關的領域。
分享及合作:微信“920177957”(需要按要求備注) 聯系郵箱:dianyunpcl@163.com,歡迎企業來聯系公眾號展開合作。
點一下“在看”你會更好看耶
總結
以上是生活随笔為你收集整理的Open3d学习计划—高级篇 8(网格变形)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于消失点的相机自标定(2)
- 下一篇: PL-VINS:实时基于点线的单目惯导S