擠壓模型穿過二維場景的系統、方法和計算機程序產品的制作方法
【專利摘要】提供用于擠壓對象穿過二維場景的系統、方法和計算機程序產品。在使用中,在二維場景內標識二維對象。此外,確定與二維對象相對應的三維模型。進一步地,擠壓三維模型穿過二維場景以創建三維對象。
【專利說明】擠壓模型穿過二維場景的系統、方法和計算機程序產品
【技術領域】
[0001]本發明涉及圖像處理,并且,更具體地,涉及圖像改變。
【背景技術】
[0002]二維圖形內容在現代社會中非常流行。例如,二維圖形內容可以包括在諸如電影、視頻游戲、圖像等的介質中。然而,當前用于改變這類二維圖形內容的技術一直與各種限制相關聯。
[0003]例如,當前用于將二維圖形內容轉換為三維內容的技術是復雜并且費時的。此外,這類技術的結果一般是粗糙和不準確的。因此需要解決與現有技術相關聯的這些和/或其他問題。
【發明內容】
[0004]系統、方法和計算機程序產品被提供用于擠壓對象穿過二維場景。在使用中,在二維場景內標識二維對象。此外,確定與二維對象相對應的三維模型。進一步地,擠壓三維模型穿過二維場景以創建三維對象。
【專利附圖】
【附圖說明】
[0005]圖1示出了根據一個實施例的、用于從二維場景擠壓對象的方法。
[0006]圖2示出了根據另一個實施例的、用于將二維對象擠壓到三維空間中的方法。
[0007]圖3示出了根據另一個實施例的擠壓過程。
[0008]圖4示出了在其中可以實現各先前實施例的各種架構和/或功能性的示例性系統。
【具體實施方式】
[0009]圖1示出了根據一個實施例的、用于擠壓模型穿過二維場景的方法100。如在操作102中所示的,在二維場景內標識二維對象。在一個實施例中,二維場景可以包括圖像。例如,二維場景可以包括數字圖像,諸如經掃描的照片、視頻的屏幕截圖、視頻幀等。
[0010]此外,在一個實施例中,二維對象可以包括二維場景內的任何對象。例如,二維對象可以包括個體的圖像、物理對象的圖像等。在另一個實施例中,可以在二維場景內顯示多個二維對象。
[0011]進一步地,在一個實施例中,可以在二維場景內手動地標識二維對象。例如,用戶可以利用通過其顯示二維場景的圖形用戶界面(⑶I)來手動地選擇二維對象。在另一個實施例中,可以自動地標識二維對象。例如,一個或多個應用可以分析二維場景并且可以自動地/動態地檢測二維場景內的二維對象(例如通過利用形狀識別、圖像處理等)。
[0012]又進一步地,如在操作104中所示的,確定與二維對象相對應的三維模型。在一個實施例中,三維模型可以包括可與二維場景聯合顯示的線框模型。在另一個實施例中,三維模型可以包括可與二維場景聯合顯示的透明或半透明模型。然而,當然三維模型可以包括使用三個維度表示的任何模型。
[0013]另外,在一個實施例中,可以手動確定三維模型。例如,在手動標識二維場景內的二維對象之后,用戶可以分配一個或多個標識符(例如通過采用標識符來標記對象等)給二維對象。在另一個實施例中,標識符可以指示二維對象的類型、二維對象的類別、二維對象的完整或部分描述、與二維對象相關聯的關鍵字等。
[0014]此外,在一個實施例中,由用戶分配給二維對象的一個或多個標識符可以用來確定相應的三維模型。例如,數據庫可以包含多個三維模型的描述符,并且由用戶分配給二維對象的一個或多個標識符可以與數據庫中的描述符相比較。在另一個示例中,可以確定其描述符最密切匹配由用戶分配給二維對象的一個或多個標識符的三維模型以與二維對象相對應。
[0015]此外,在一個實施例中,可以自動確定三維模型。例如,在自動標識二維場景內的二維對象之后,可以自動分析二維對象以確定二維對象的類型。在另一個示例中,可以標識并分析二維對象的一個或多個子對象(例如特征等)以確定對象的類型。在另一個實施例中,可以將對象的類型與三維模型類型的數據庫相比較,并且可以確定三維模型類型和對象類型之間的匹配。
[0016]又進一步地,如在操作106中所示的,擠壓三維模型穿過二維場景以創建三維對象。在一個實施例中,擠壓三維模型穿過二維場景可以包括在第三維度中移動三維模型穿過二維場景,使得三維模型被迫穿過二維場景以產生三維對象。例如,可以利用二維X-Y軸在二維平面上表示二維場景,并且可以在垂直于場景平面的Z軸上將三維模型放置在該平面的后面(例如使得場景平面疊加在三維模型之上)。在另一個示例中,可以之后移動三維模型經由垂直的Z軸穿過場景平面(例如使得三維模型被推動經由Z軸穿過二維場景)。
[0017]另外,在一個實施例中,擠壓三維模型穿過二維場景可以包括響應于三維模型在第三維度中穿過二維場景的移動而調整(例如彎曲等)二維場景。例如,隨著三維模型沿著垂直于場景的軸被移動穿過場景平面,可以彎曲二維場景,使得二維場景的一部分(例如二維對象等)可以覆蓋(例如包裹(wrap)等)正在被移動穿過場景平面的三維模型。
[0018]此外,在一個實施例中,二維對象的二維表示可以被彎曲,使得隨著三維模型被移動穿過場景,二維對象包裹圍繞并且被映射到三維模型上。例如,二維對象的二維表示可以用作紋理貼圖以創建已經在垂直于場景平面的軸上穿過該平面的三維模型的表面。在另一個示例中,可以調整二維對象的二維表示以跟隨三維模型的三維輪廓,使得產生的二維對象的表示是三維的。以此方式,三維模型可以采用來自二維對象的內容作為紋理。
[0019]進一步地,在一個實施例中,擠壓三維模型穿過二維場景可以包括將二維對象與三維模型對齊。在另一個實施例中,可以手動地將二維對象與三維模型對齊。例如,用戶可以使用圖形用戶界面(GUI)來操縱(例如移動、調整大小、再成形等)三維模型,使得三維模型的位置、大小和形狀沿著垂直于場景的軸與二維對象的位置、大小和形狀對齊。在另一個示例中,用戶可以在三維模型已經移動穿過場景平面之前或之后操縱三維模型。
[0020]又進一步地,在一個實施例中,可以自動地將二維對象與三維模型對齊。例如,可以手動標識或自動標識(例如利用圖像處理等)二維對象的一個或多個子對象(例如特征等),并且可以確定二維對象內的這類子對象的方向。在另一個示例中,可以基于二維對象內的子對象的方向確定二維場景內的二維對象的方向。
[0021 ] 在又一個示例中,可以使用經確定的二維場景內的二維對象的方向來自動確定對三維模型的調整,使得三維模型沿垂直于場景的軸與二維對象對齊。在另一個實施例中,一個或多個特性(例如形狀、能力、移動限制、可用位置、功能等)可以與三維模型相關聯,并且可以使用這類特性來改善二維對象與三維模型的自動對齊。
[0022]另外,在一個實施例中,可以調整三維模型被擠壓穿過二維場景的程度。例如,可以手動或自動調整三維模型在垂直于二維場景的軸上穿過該場景的二維平面的距離。在另一個實施例中,對三維模型的一個或多個附加調整(例如對齊、大小等)可以在三維模型已經移動穿過二維場景之后手動或自動進行(例如微調二維對象對三維模型的覆蓋范圍等)。以此方式,已知對象的三維模型可以適合于匹配二維對象的大小和特性,并且可以使用二維對象的相應三維模型數據作為擠壓的基礎來擠壓該二維對象。
[0023]此外,在一個實施例中,擠壓三維模型穿過二維場景可以包括利用三維模型將二維對象轉換為三維對象。例如,可以將所擠壓的三維模型轉換為具有三維模型的形狀和所彎曲的二維對象的外觀的三維對象。在另一個實施例中,擠壓三維模型穿過二維場景可以包括將二維對象轉換為立體對象。例如,可以將所擠壓的二維對象轉換為具有三維模型的形狀和所彎曲的二維對象的外觀的立體對象。在另一個示例中,三維模型可以提供可以慮及準確的立體深度的深度數據。
[0024]在又一個實施例中,二維對象可以包括一個或多個二維子對象。例如,面部的二維表示可以包括子對象,子對象包括眼睛、鼻子、嘴等。在又一個實施例中,二維對象可以細分,并且可以為二維對象內的每個二維子對象確定三維模型。在又一個實施例中,可以利用三維模型從二維場景擠壓二維子對象中的每一個。
[0025]此外,在一個實施例中,通過從二維場景擠壓二維對象所創建的三維對象可以用來實施圖像識別。例如,可以在場景分析期間使用三維對象來確定場景中的任何三維對象是否匹配所創建的三維對象。在另一個實施例中,可以使通過從二維場景擠壓二維對象所創建的三維對象動作。例如,可以操縱三維對象,使得三維對象的一個或多個部分(例如被映射到三維對象上的子對象)移動。
[0026]現在將關于各可選架構和特征來闡述更多示例性的信息,根據用戶的期望可以采用所述架構和特征來實現或不實現前述的框架。應該強烈注意下面的信息出于示例性的目的而闡述并且其不應該被認為是以任何方式進行限制。下面特征中的任何一個可以可選地合并,排除或無需排除所述的其他特征。
[0027]圖2示出了根據另一個實施例的、用于將二維對象擠壓到三維空間中的方法200。作為選擇,方法200可以在圖1的功能性的上下文中實行。然而,當然方法200可以在任何期望的環境中實現。還應該注意前述定義可以在本描述期間應用。
[0028]如在操作202中所示的,標識二維(2D)場景。在一個實施例中,二維場景可以包括數字圖像。例如,用戶可以掃描靜止的照片,其可以在掃描期間轉換為二維數字圖像。在另一個實施例中,二維場景可以包括來自視頻的場景。在又一個實施例中,可以標識多個二維場景。例如,可以標識包括兩個二維圖像且每一個描繪另一個的細微改變版本的立體圖像,或者多個圖像從相同的一個或多個對象的不同視角獲取。
[0029]此外,如在操作204中所示的,在二維場景內標識二維對象。在一個實施例中,二維對象可以包括二維場景中所示的個體(例如人體等)、二維場景內所顯示的對象(例如房子、椅子等)等。在另一個實施例中,二維對象可以包括組件對象。例如,二維對象可以包括二維場景中的個體的面部、手或另一部分、房子的門口等。在又一個實施例中,二維對象可以包括二維場景內的元素的組合(例如一群人、帶有家具的臥室等)。
[0030]進一步地,在一個實施例中,可以由用戶標識二維對象。例如,用戶可以利用⑶I通過選擇二維場景內的對象來選擇二維對象。在另一個實施例中,在標識二維對象之后,可以突出二維對象的形狀。例如,可以使用圖像分析來突出(例如加粗、更改為不同的顏色等)描繪所選擇的二維對象輪廓的具體周界。
[0031]又進一步地,如在操作206中所示的,確定與二維對象相對應的虛擬三維模型。在一個實施例中,用戶可以采用對象的一個或多個標識符來標記二維對象,并且可以使用標記來確定與二維對象相對應的三維模型。在另一個實施例中,可以使用圖像處理來自動標識二維對象并確定相應的三維模型。在又一個實施例中,可以從多個模型(例如預設計的模型等)中選擇虛擬三維模型。
[0032]另外,如在操作208中所示的,將虛擬三維模型疊加到二維場景內的二維對象上。如在操作210中所示的,調整虛擬三維模型以匹配二維場景內的二維對象的方向和大小。在一個實施例中,用戶可以手動縮放、傾斜和以其他方式調整三維模型,使得三維模型的周界與二維場景內的二維對象的周界對齊。
[0033]在另一個實施例中,可以使用圖像處理來自動分析二維對象的方向和/或特征。此外,可以使用這類分析來調整三維模型。在另一個實施例中,可以自動地調整或由用戶調整三維模型的深度。例如,可以在Z空間中向后或向前移動三維模型以調整三維模型對于二維場景的深度。
[0034]進一步地,如在操作212中所示的,擠壓三維模型穿過二維場景,從而創建三維對象。在一個實施例中,可以響應于來自用戶的命令而實施擠壓。在另一個實施例中,從場景擠壓二維對象可以包括采用包含在二維對象中的像素來包裹三維模型以及擠壓經包裹的三維模型。
[0035]又進一步地,在一個實施例中,用戶可以觀察正被用于擠壓的三維模型并且可以在擠壓期間通過手動地使模型變形來調整模型以適合二維對象的形狀和位置。在另一個實施例中,三維模型可以被視為線框模型,透明模型、半透明模型等。以此方式,用戶可以調整模型以更好地匹配被擠壓的對象。在另一個實施例中,用戶可以指定將要實施的擠壓的數量。
[0036]另外,在一個實施例中,擠壓三維模型穿過場景可以包括將三維模型與場景中的二維對象相匹配。例如,用戶可以采用對象的一個或多個標識符來標記二維對象,并且可以使用標記來實施二維對象內的子對象的進一步檢測。例如,如果二維對象被用戶標記為人,則可以在二維對象內檢測子對象,諸如面部、手、眼睛、鼻子和嘴。
[0037]此外,在一個實施例中,可以使用二維對象的所檢測到的子對象來對二維對象內的子對象和三維模型的輪廓進行曲線擬合,使得這類子對象的細節匹配二維對象中所示的那些細節。在另一個實施例中,可以對三維模型實施諸如縮放、平移和旋轉的一個或多個變形以在擠壓期間調整模型。這可以基于圖像處理而手動地或自動地進行。
[0038]此外,在一個實施例中,擠壓三維模型穿過場景可以包括一旦三維模型已經與場景中的二維對象相匹配,就將三維模型從相片后面向前推動。以此方式,三維模型可以對二維對象賦予深度并且可以使用用于二維場景內的二維對象的紋理和細節。
[0039]又進一步地,在一個實施例中,被擠壓穿過二維場景的三維模型可以被保存為立體圖像或三維對象。在另一個實施例中,可以使用三維對象來實施圖像識別。例如,可以在分析場景的過程中使用三維對象,其中可以確定三維對象是否匹配場景內的一個或多個三維對象。在又一個實施例中,可以使三維對象動作。例如,可以使描繪人的頭部的三維對象動作,使得頭部轉動、頭部的眼睛眨動、頭部的嘴移動等。
[0040]另外,在一個實施例中,可以利用來自多個二維場景的多個二維對象來創建三維對象。例如,可以從二維立體圖像對(例如左和右眼視圖等)內標識二維對象的匹配對,并且這類二維對象可以被紋理映射到三維模型上。此外,在擠壓期間可以將與來自左視圖立體圖像的對象相關聯的紋理添加到三維模型的左側,并且可以將與來自右視圖立體圖像的對象相關聯的紋理添加到三維模型的右側。以此方式,可以使用擠壓來將立體場景內的對象轉換為真實的三維對象。
[0041]以此方式,可以為三維對象獲得準確的三維深度。此外,通過基于所標識的二維對象產生三維模型,可以加速三維轉換過程。進一步地,可以構建全面詳細的三維模型數據庫,并且可以容易地并自動地、非常準確和詳細地檢測和擠壓二維對象。
[0042]圖3示出了根據另一個實施例的擠壓過程300。作為選擇,可以在圖1-2的功能性的上下文中實行示例性的擠壓過程300。然而,當然可以在任何期望的環境下實現示例性的擠壓過程300。還應該注意前述定義可以在本描述期間應用。
[0043]如所示的,在二維圖像302內標識二維對象304。此外,從數據庫中檢索與二維對象304匹配的三維模型306。進一步地,(手動地或自動地)調整三維模型306的大小并將其與二維圖像302內的二維對象304對齊。又進一步地,推動三維模型306穿過二維圖像302,其中二維圖像302內的特征被彎曲以匹配經修改的三維模型308的形狀并用來為經修改的三維模型308貼紋理。這導致二維對象304的擠壓以創建包括來自二維對象304的所有特征的三維對象310。
[0044]圖4示出了在其中可以實現各先前實施例的各種架構和/或功能性的示例性系統400。如所示的,提供系統400,包括至少一個主處理器401,其連接到通信總線402。系統400還包括主存儲器404。控制邏輯(軟件)和數據存儲在主存儲器404中,主存儲器404可以采取隨機存取存儲器(RAM)的形式。
[0045]系統400還包括圖形處理器406和顯示器408,即計算機監視器。在一個實施例中,圖形處理器406可以包括多個著色器模塊、柵格化模塊等。前述模塊中的每一個甚至可以布置于單個半導體平臺上以形成圖形處理單元(GPU)。
[0046]在本描述中,單個半導體平臺可以指單獨一個的基于半導體的集成電路或芯片。應該注意術語單個半導體平臺還可以指具有增強連通性的多芯片模塊,其仿真片上操作,并且通過利用常規的中央處理單元(CPU)和總線實現方案來做出實質的改進。當然,各模塊還可以根據用戶的期望分開地或以半導體平臺的各種組合來布置。
[0047]系統400還可以包括二級存儲410。二級存儲410包括例如硬盤驅動器和/或表示軟盤驅動器、磁帶驅動器、光盤驅動器等的可移動存儲驅動器。可移動存儲驅動器以眾所周知的方式讀取自和/或寫入到可移動存儲單元。[0048]計算機程序或計算機控制邏輯算法可以存儲在主存儲器404和/或二級存儲410中。這類計算機程序當執行時使得系統400能夠實施各種功能。存儲器404、存儲410和/或任何其他存儲是計算機可讀介質的可能示例。
[0049]在一個實施例中,各先前圖片的架構和/或功能性可以在主處理器401、圖形處理器406、能夠是主處理器401和圖形處理器406這二者的至少部分能力的集成電路(未示出)、芯片集(即設計為作為用于實施相關功能的單元來工作和出售的集成電路組等)、和/或用于該問題的任何其他集成電路的上下文中實現。
[0050]還有就是,各先前圖片的架構和/或功能性可以在通用計算機系統、電路板系統、專用于娛樂目的的游戲控制器系統、特定于應用的系統、和/或任何其他期望系統的上下文中實現。例如,系統400可以采取桌面計算機、膝上型計算機和/或任何其他類型的邏輯的形式。還有就是,系統400可以采取各種其他設備的形式,包括但不限于個人數字助理(PDA)設備、移動電話設備、電視機等。
[0051]進一步地,雖然未示出,但是系統400可以耦連到網絡(例如電信網絡、局域網(LAN)、無線網絡、諸如因特網的廣域網(WAN)、點對點網絡、電纜網絡等)用于通信的目的。在一個實施例中,當計算正發生在駐留在云中的更強大的計算機上時,可以在諸如手持電話或平板的移動設備上實施UI。
[0052]雖然以上已經描述了各實施例,但是應該理解它們通過僅示例而非限制的方式加以呈現。因此,優選實施例的寬度和范圍不應該被上述示例性實施例中的任何一個所限制,而應該僅根據下面的權利要求及其等同物所定義。
【權利要求】
1.一種方法,包括: 標識二維場景內的二維對象; 確定與所述二維對象相對應的三維模型;以及 擠壓所述三維模型穿過所述二維場景以創建三維對象。
2.如權利要求1所述的方法,其中用戶分配一個或多個標識符給所述二維對象。
3.如權利要求2所述的方法,其中使用由所述用戶分配給所述二維對象的所述一個或多個標識符來確定所述相應的三維模型。
4.如權利要求1所述的方法,其中自動分析所述二維對象以確定所述二維對象的類 型。
5.如權利要求1所述的方法,其中擠壓所述三維模型穿過所述二維場景包括在第三維度中移動所述三維模型穿過所述二維場景。
6.如權利要求5所述的方法,其中擠壓所述三維模型穿過所述二維場景包括響應于所述三維模型在所述第三維度中穿過所述二維場景的所述移動而調整所述二維場景。
7.如權利要求6所述的方法,其中隨著移動所述三維模型穿過所述場景,彎曲所述二維對象的二維表示使得所述二維對象包裹圍繞并映射到所述三維模型上。
8.如權利要求7所述的方法,其中使用所述二維對象的所述二維表示作為紋理貼圖以創建所述三維模型的表面。
9.如權利要求1所述的方法,其中手動地將所述二維對象與所述三維模型對齊。
10.如權利要求1所述的方法,其中手動地或自動地標識所述二維對象的一個或多個子對象,并且確定所述二維對象內的這類子對象的方向。
11.如權利要求10所述的方法,其中所述二維場景內的所述二維對象的方向基于所述對象的邊緣的形狀和所述二維對象內的所述子對象的方向確定。
12.如權利要求11所述的方法,其中使用所述二維場景內的所述二維對象的所確定的方向來確定對所述三維模型的調整,使得所述三維模型與所述二維對象對齊。
13.如權利要求1所述的方法,其中調整從所述二維場景擠壓所述二維對象的程度。
14.如權利要求5所述的方法,其中對所述三維模型的附加調整在已經移動所述三維模型穿過所述二維場景之后手動地或自動地進行。
15.如權利要求1所述的方法,其中從所述二維場景擠壓所述二維對象包括利用所述三維模型將所述二維對象轉換為三維對象。
16.如權利要求1所述的方法,其中從所述二維場景擠壓所述二維對象包括將所述二維對象轉換為立體對象。
17.如權利要求16所述的方法,其中使用通過從所述二維場景擠壓所述二維對象所創建的所述三維對象來實施圖像識別。
18.如權利要求15所述的方法,其中一旦由所述用戶采用給定調整而確認所述三維模型,則新的模型被包括在數據庫中用于隨后使用。
19.一種具體化在計算機可讀介質上的計算機程序產品,包括: 用于標識二維場景內的二維對象的代碼; 用于確定與所述二維對象相對應的三維模型的代碼;以及 用于擠壓所述三維模型穿過所述二維場景以創建三維對象的代碼。
20.—種系統,包括: 處理器,用于標識二維場景內的二維對象,確定與所述二維對象相對應的三維模型,以及擠壓所述三維模型穿過所述二維場景以創建三維對象。
21.如權利要求20所述的`系統,其中所述處理器經由總線耦連到存儲器。
【文檔編號】G06T17/00GK103632391SQ201310369624
【公開日】2014年3月12日 申請日期:2013年8月22日 優先權日:2012年8月22日
【發明者】大衛·R·庫克 申請人:輝達公司