Surface splatting (2D Gaussian splatting)代碼分析

源碼地址

colab.research.google.com/drive/1qoclD7HJ3-o0O1R8cvV3PxLhoDCMsH8W

核心代碼

surface_splatting

def surface_splatting(means3D, scales, quats, colors, opacities, intrins, viewmat, projmat):# Rasterization setupprojmat = torch.zeros(4,4).cuda()projmat[:3,:3] = intrinsprojmat[-1,-2] = 1.0projmat = projmat.T# T 是論文中的 MT, colors, opacities, center, depth, radii = setup(means3D, scales, quats, opacities, colors, viewmat, projmat)# Rasterization# 1. Generate pixelsW, H = (intrins[0,-1] * 2).long(), (intrins[1,-1] * 2).long()W, H = W.item(), H.item()pix = torch.stack(torch.meshgrid(torch.arange(W),torch.arange(H), indexing='xy'), dim=-1).to('cuda')# 2. Compute ray splat intersection # Eq.9 and Eq.10x = pix.reshape(-1,1,2)[..., :1]y = pix.reshape(-1,1,2)[..., 1:]k = -T[None][..., 0] + x * T[None][..., 3] # 這個是 h_u, 因為公式8 h_u = ? · h_x = ? · (?1, 0, 0, 𝑥) = -T_0 + x · T_3l = -T[None][..., 1] + y * T[None][..., 3] # 這個是 h_v# 因為論文中 h_u 和 (𝑢, 𝑣, 1, 1) 點成為0, h_v 和 (𝑢, 𝑣, 1, 1) 點成為0# 所以 h_u 和 h_v  與 (𝑢, 𝑣, 1, 1) 垂直# h_u 和 h_v 的 叉乘是 (𝑢, 𝑣, 1, 1)points = torch.cross(k, l, dim=-1) # 叉乘s = points[..., :2] / points[..., -1:]# 3. add low pass filter # Eq. 11# when a point (2D Gaussian) viewed from a far distance or from a slended angle# the 2D Gaussian will falls between pixels and no fragment is used to rasterize the Gaussian# so we should add a low pass filter to handle such aliasing.dist3d = (s * s).sum(dim=-1)filtersze = np.sqrt(2) / 2dist2d = (1/filtersze)**2 * (torch.cat([x,y], dim=-1) - center[None,:,:2]).norm(dim=-1)**2# min of dist2 is equal to max of Gaussian exp(-0.5 * dist2)dist2 = torch.min(dist3d, dist2d)# dist2 = dist3ddepth_acc = (homogeneous(s) * T[None,..., -1]).sum(dim=-1)# 4. accumulate 2D gaussians through alpha blending # Eq.12image, depthmap = alpha_blending_with_gaussians(dist2, colors, opacities, depth_acc, H, W)return image, depthmap, center, radii, dist2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41343.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

flask使用定時任務flask_apscheduler(APScheduler)

Flask-APScheduler描述: Flask-APScheduler 是一個 Flask 擴展,增加了對 APScheduler 的支持。 APScheduler 有三個內置的調度系統可供您使用: Cron 式調度(可選開始/結束時間) 基于間隔的執行(以偶數間隔運行作業…

c#中的超時終止

在C#中,可以使用CancellationToken和Task的超時機制來實現調用方法時的超時終止。 一 用Task.Delay(int)模擬耗時操作 static async Task Main(string[] args){using (var cts new CancellationTokenSource(1 * 1000)){await doSomething(cts.Token);}Console.Wr…

移動校園(7)ii:uniapp響應攔截器處理token,以及微信小程序報錯當前頁面正在處于跳轉狀態,請稍后再進行跳轉....

依據昨天的寫完,在token過期之后,再次調用接口,會觸發后端攔截,扔進全局錯誤處理中間件 前端說明提示都沒有,只有一個這個,現在優化一下,再寫一個類似全局后置守衛,當狀態碼是401的時…

RAID 冗余磁盤陣列

RAID也是Linux操作系統中管理磁盤的一種方式。 只有Linux操作系統才支持LVM的磁盤管理方式。 而RAID是一種通用的管理磁盤的技術,使用于多種操作系統。 優勢:提升數據的讀寫速度,提升數據的可靠性。具體實現哪什么功能,要看你所…

RGB樹-美團2023筆試(codefun2000)

題目鏈接 RGB樹-美團2023筆試(codefun2000) 題目內容 塔子哥是一位著名的冒險家,他經常在各種森林里探險。今天,他來到了道成林,這是一片美麗而神秘的森林。在探險途中,他遇到了一棵 n 個節點的樹,樹上每個節點都被涂…

LVGL移植與VS模擬器使用

一、移植文件介紹 二、移植部分 第一步:創建LVGL文件夾 第二步: 構造LVGL文件夾:LVGL - GUI - lvgl - 第三步:添加文件 3.1 從examples中添加2個.c文件 3.2 從src中添加文件 draw文件 extra文件 第四步: 三、Ke…

Linux系統安裝軟件包的方法rpm和yum詳解

起因: 本篇文章是記錄學習Centos7的歷程 關于rpm 常見命令 1)查看已經安裝的軟件包 rpm -q 軟件包名 2)查看文件的相關信息 rpm -qi 軟件包名 3)查看軟件包的依賴關系 就是說要想安裝這個軟件包,就必須把一些前…

三級_網絡技術_04_中小型網絡系統總體規劃與設計

1.下列關于路由器技術特征的描述中,正確的是()。 吞吐量是指路由器的路由表容量 背板能力決定了路由器的吞吐量 語音、視頻業務對延時抖動要求較低 突發處理能力是以最小幀間隔值來衡量的 2.下列關于路由器技術特征的描述中,正確的是()。 路由器的…

springboot公寓租賃系統-計算機畢業設計源碼03822

摘要 1 緒論 1.1 研究背景與意義 1.2選題背景 1.3論文結構與章節安排 2 公寓租賃系統系統分析 2.1 可行性分析 2.1.1 技術可行性分析 2.1.2 經濟可行性分析 2.1.3 法律可行性分析 2.2 系統功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系統用例分析 2.4 系…

韋東山嵌入式linux系列-第一個實驗

1 前言 筆者使用的是韋東山STM32MP157 Pro的板子,環境搭建部分按照說明文檔配置完成。配置橋接網卡實現板子、windows、ubuntu的通信,也在開發板掛載 Ubuntu 的NFS目錄 ,這里就不再贅述了。 板子: 192.168.5.9 windows: 192.168.5.10 ubunt…

【linux】服務器創建RAID1

【linux】服務器創建RAID1 文章目錄 【linux】服務器創建RAID1一、配置介紹raid介紹raid類型RAID 0:RAID 1:RAID 5:RAID 6:二、配置RAID硬件RAID:軟件RAID:三、軟件配置RAID1(以linux為例)1.先進入管理員模式2.安裝mdadm工具3.創建raid1數組4.查看RAID數組狀態5.格式化和掛載…

機械鍵盤如何挑選

機械鍵盤的選擇是一個關鍵的決策,因為它直接影響到我們每天的打字體驗。在選擇機械鍵盤時,有幾個關鍵因素需要考慮。首先是鍵盤的鍵軸類型。常見的鍵軸類型包括藍軸、紅軸、茶軸和黑軸等。不同的鍵軸類型具有不同的觸發力、觸發點和聲音。藍軸通常具有明…

神經網絡和安全結合:一種基于神經網絡的智能攻擊檢測與防御系統;構建攻擊行為預測模型

目錄 神經網絡和安全結合 摘要 引言 理論基礎 技術實現與創新點 實驗驗證 結論與展望 一種基于神經網絡的智能攻擊檢測與防御系統 一、系統概述 二、主要功能 三、技術特點 四、應用前景 構建攻擊行為預測模型 一、構建攻擊行為預測模型的步驟 1. 數據收集 2. …

單鏈表的學習與基礎運用p

當我們在實際做項目,或者是自主開發一點小東西的時候,往往會儲存一些數據,有時候我們需要添加這些數據,有時候需要刪除,而有時候,僅僅只需要查找到就行。鏈表中的每一個節點都是一個獨立開辟的空間&#xf…

聚類分析方法(一)

目錄 一、聚類分析原理(一)聚類分析概述(二)聚類的數學定義(三)簇的常見類型(四)聚類框架及性能要求(五)簇的距離 二、劃分聚類算法(一&#xff0…

Java 有什么必看的書?

Java必看經典書有這兩本: 1、Java核心技術速學版(第3版) 經典Java開發基礎書CoreJava速學版本!Java入門優選書籍,更新至Java17,內容皆是精華,讓Java學習更簡單,讓Java知識應用更快速…

【Linux】什么是進程間通信?方式有哪些?本質理解?

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃個人主頁 :阿然成長日記 …

使用 ChronicleMap 擴展高性能內存緩存

1.擴展內存緩存的挑戰 我們用于與各種程序化和需求方平臺 (DSP) 集成的應用程序之一是低延遲、高吞吐量的基于 JVM 的應用程序。這是 付款憑單(DV)付前前驗證解決方案的核心組件。自多年前成功推出此解決方案以來,我們不斷添加多項關鍵功能&…

【ChatGPT】全面解析 ChatGPT:從起源到未來

ChatGPT 是由 OpenAI 開發的一個基于 GPT(Generative Pre-training Transformer)架構的聊天機器人。通過自然語言處理(NLP)技術,ChatGPT 能夠理解和生成語言,與人類進行對話。本文將深入探討其起源、發展、…

SpringSecurity源碼分析-過濾器鏈是如何植入到spring中的

SpringSecurity源碼分析-過濾器鏈是如何植入到spring中的 一切的源頭都是因為在web.xml中配置了這樣一個Filter <!--security--><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.…