本發(fā)明涉及數(shù)碼照片的后期處理,更具體地,涉及用于執(zhí)行數(shù)碼相片的后期處理的方法、數(shù)碼存儲(chǔ)持有軟件、集成電路和帶有相機(jī)的手持設(shè)備。
背景技術(shù):
透視畸變
攝影提供了3d世界的2d表達(dá)。這種3d到2d的轉(zhuǎn)換是通過(guò)用鏡頭將3d場(chǎng)景投影到2d傳感器上來(lái)實(shí)現(xiàn)的。
距離很遠(yuǎn)時(shí)且若相機(jī)的光軸垂直于物體的延長(zhǎng)線,透視投影提供“符合人們期望”的悅目照片。但是,如果到該物體的最近部分的距離與到該物體的最遠(yuǎn)部分的距離之間的比值非常大,近距離部分將以與較遠(yuǎn)部分不同的放大率呈現(xiàn),而且這種放大率差異會(huì)導(dǎo)致在該物體的照片中的透視畸變。
有許多為人熟知的透視畸變效應(yīng)。當(dāng)較大物體的延長(zhǎng)線不與光軸正交時(shí),由于最近端會(huì)比遠(yuǎn)端放大得更多,該物體中的平行線在照片中是不平行的。例如,當(dāng)以低角度拍攝摩天大樓時(shí)就是這種情形。另一個(gè)經(jīng)常遇到的效應(yīng)是,當(dāng)相機(jī)和照片中的物體之間的距離與該物體的拓?fù)浣Y(jié)構(gòu)(topology)的深度在同一數(shù)量級(jí)上時(shí),近距離部分會(huì)顯得與遠(yuǎn)距離部分不成比例。例如自拍照(由主體的手持相機(jī)拍出的自畫像)就是這種情形,在自拍照中,相機(jī)與主體頭部間的臂長(zhǎng)距離(30至50cm)和鼻子與耳朵間的距離是大約相同的距離數(shù)量級(jí),從而使得鼻子顯得不自然的大。
因此,透視畸變會(huì)影響其中物體或場(chǎng)景涉及高放大率差異的任何照片。
透視校正
透視校正的問(wèn)題已經(jīng)在一些特定應(yīng)用場(chǎng)合被部分解決了,大多數(shù)時(shí)候使用需要用戶交互的工具部分解決透視校正問(wèn)題。現(xiàn)有工具允許校正以低和高角度拍攝的照片,但這些校正是基于相機(jī)位置與方向的了解或基于場(chǎng)景的假設(shè)幾何結(jié)構(gòu)(例如建筑物中的平行線)的整體校正。
大多數(shù)目前可用的校正方案僅提供對(duì)由相機(jī)光學(xué)器件引起的光學(xué)畸變的校正,例如魚眼狀、筒形或枕形畸變校正。在這些情況下,對(duì)光學(xué)畸變進(jìn)行建模,且應(yīng)用整體校正。
dxoviewpoint2(http://www.dxo.com/intl/photography/dxo-viewpoint/wide-angle-lens-software)代表了透視畸變校正方面的目前技術(shù)現(xiàn)狀。dxoviewpoint應(yīng)用程序允許對(duì)在使用廣角鏡頭時(shí)由相機(jī)光學(xué)器件引起的透視畸變進(jìn)行校正。該應(yīng)用程序也允許通過(guò)執(zhí)行不同的投影來(lái)對(duì)沒(méi)影直線(vanishingline)進(jìn)行校正,但是這種校正與相機(jī)和物體或場(chǎng)景間的距離無(wú)關(guān),且不能同時(shí)校正近距離和遠(yuǎn)距離的失真。所施加的校正是整體的,且與照片中的場(chǎng)景或物體的拓?fù)浣Y(jié)構(gòu)無(wú)關(guān)地施加這種校正。
整體校正基于由有關(guān)相機(jī)外部參數(shù)和相機(jī)內(nèi)部參數(shù)和/或有關(guān)“先驗(yàn)(priori)”數(shù)據(jù)或用戶定義數(shù)據(jù)的少數(shù)參數(shù)確定的平滑標(biāo)準(zhǔn)函數(shù)。例如,圖1a至圖1d示出了dxoviewpoint作出的圖像校正,在照片和棋盤格圖案上應(yīng)用了同樣的校正技術(shù)。圖1a示出了原始照片和圖案,在圖1b中應(yīng)用了透鏡畸變校正,在圖1c中應(yīng)用了透視校正(自然模式(naturalmode)),在圖1d中應(yīng)用了透視校正(完全模式(completemode))。整體校正技術(shù)、例如dxoviewpoint中的那些校正技術(shù)的問(wèn)題是,這些校正技術(shù)被應(yīng)用在整個(gè)圖像上,而不關(guān)注主體。通過(guò)用戶交互可將校正調(diào)整到給定地點(diǎn)處的給定平面內(nèi)的給定物體,但如果場(chǎng)景包括一些與相機(jī)距離不等的物體,則校正不會(huì)對(duì)所有物體都是令人滿意的。
有一些諸如skinneepix和facetune這樣的智能手機(jī)應(yīng)用允許用戶改善自拍照的外貌。skinneepix對(duì)照片進(jìn)行簡(jiǎn)單的幾何扭曲,依賴于僅包含位于照片中央的一張臉的照片,即意味著已知的幾何結(jié)構(gòu)。facetune允許形狀上的局部變化,但其在本質(zhì)上是一種專門用于臉部照片的使用戶可以控制局部扭曲的簡(jiǎn)化了的photoshop工具。facetune不是透視校正工具,且不依賴于圖像深度信息。
目前存在從多相機(jī)(例:rgb+tof相機(jī)、立體相機(jī)或諸如microsoftkinect的投影光系統(tǒng))中創(chuàng)建3d模型的軟件。另一個(gè)例子是由沙瑪·曼西(sharmamansi)等人所著的論文“kinect-varietyfusion:anovelhybridapproachforartifacts-free3dtvcontentgeneration”,該論文描述了通過(guò)結(jié)合多個(gè)傳感器來(lái)提取深度信息,及使用microsoftkinect相機(jī)和投影光結(jié)構(gòu)技術(shù)來(lái)改善深度圖提取的方法。該論文的第二部分(sectionb,第2277頁(yè))涉及3dtv的內(nèi)容生成,在相機(jī)相對(duì)于場(chǎng)景運(yùn)動(dòng)時(shí),利用由這些相機(jī)捕獲的場(chǎng)景的多張圖像而生成場(chǎng)景的新視圖。這些立體視覺(jué)技術(shù)并未提供自動(dòng)校正單張照片中的透視畸變的方法。諸如opengl的3dgfx庫(kù)也未提供利用深度信息進(jìn)行透視校正的方法。
時(shí)至今日,用于透視校正的可用工具不是整體校正就是局部校正,所述整體校正意味著物體的某些幾何結(jié)構(gòu)(直線、位于中央的臉)、記錄狀態(tài)(低角度、近距離),所述局部校正需要用戶交互以及他/她對(duì)自然或想要的場(chǎng)景或物體的外觀的了解(通常稱為photoshop修圖)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供通過(guò)利用照片的深度信息執(zhí)行透視校正來(lái)消除或補(bǔ)償整張照片的局部放大率差異的方法、數(shù)碼存儲(chǔ)持有軟件、集成電路和帶有相機(jī)的手持設(shè)備。另一個(gè)目的是自動(dòng)地執(zhí)行這種透視校正,不需要與照片中的場(chǎng)景或物體的自然外觀或拓?fù)浣Y(jié)構(gòu)或者相機(jī)的位置或方向有關(guān)的先驗(yàn)知識(shí)或用戶輸入。
為了執(zhí)行本發(fā)明的透視校正,僅有照片是不夠的。需要相機(jī)與照片中每個(gè)像素的場(chǎng)景之間的距離,即深度圖。一旦得到了照片和深度圖,利用圖像和適當(dāng)?shù)奶幚砭湍軌蛑貥?gòu)由虛擬相機(jī)從保持同一視野的不同視角、即不同角度、更遠(yuǎn)距離拍攝的照片,于是消除或補(bǔ)償了任何透視畸變。不使用對(duì)于整個(gè)圖像使用的整體轉(zhuǎn)換,而是根據(jù)距相關(guān)深度圖的像素距離執(zhí)行對(duì)每個(gè)像素的局部校正。
因此,在第一方面中,本發(fā)明提供了用于在相機(jī)記錄的場(chǎng)景的數(shù)碼照片中執(zhí)行透視校正的方法,該方法包括以下步驟:
·對(duì)于像素(x,y)的陣列,提供由像素值p(x,y)代表的場(chǎng)景的數(shù)碼照片,所述照片涉及透視畸變效應(yīng);
·提供與該照片有關(guān)且包括深度d(x,y)的深度圖,對(duì)于該像素陣列中的每個(gè)像素,該深度d(x,y)是指由該像素代表的場(chǎng)景的一部分與獲得照片時(shí)相機(jī)的獲得位置之間的距離;和
·使用該場(chǎng)景的照片及其相關(guān)的深度圖執(zhí)行透視校正,該照片中的任何像素或區(qū)域的校正取決于該像素的深度或該區(qū)域中的像素的深度。
在這種情況下,校正將被理解為做出某些改變以解決問(wèn)題或產(chǎn)生預(yù)期效果的過(guò)程,不局限于按照標(biāo)準(zhǔn)使某物精確或正確而作出的改變。因此,透視校正從在照片中實(shí)現(xiàn)特定效果的角度來(lái)說(shuō),也可以是修正。而且,最初獲得的照片或存在透視畸變的一些照片、即原始照片或源照片通常被稱為“獲取的照片”。已被執(zhí)行過(guò)透視校正的最終照片、即最終照片或目標(biāo)照片通常被稱為“處理過(guò)的照片”。在更詳細(xì)的定義中,深度是物體到相機(jī)鏡頭的物主平面(objectprincipalplane)之間的距離。對(duì)于移動(dòng)電話來(lái)說(shuō),物主平面非??拷苿?dòng)電話中的相機(jī)的保護(hù)窗。應(yīng)該注意的是,深度圖可能具有與照片不同(且通常較低)的分辨率。在這種情況下,深度圖可能會(huì)被提升等級(jí),從而使其具有相同分辨率,且對(duì)于每個(gè)像素值都可獲得有效深度信息。
本發(fā)明的透視校正優(yōu)點(diǎn)在于可以在沒(méi)有用戶交互的情況下執(zhí)行,所以其可以作為提供即時(shí)改善的照片的全自動(dòng)校正來(lái)實(shí)施。本發(fā)明的透視校正的另一個(gè)優(yōu)點(diǎn)是局部的,因而可以校正照片中每個(gè)像素或區(qū)域的局部透視畸變。因此,該校正可以同時(shí)和獨(dú)立地校正照片的場(chǎng)景中的具有不同深度的不同部分的透視畸變。
在優(yōu)選實(shí)施例中,執(zhí)行透視校正的步驟包括:使用照片及其相關(guān)深度圖來(lái)執(zhí)行對(duì)照片的場(chǎng)景的透視校正,即對(duì)于照片中的每個(gè)像素(x,y),至少根據(jù)該像素在獲取位置的圖像平面中的深度dacq(x,y)、其位置dacq(x,y)以及虛擬相機(jī)位置和獲取位置之間的位移c,確定虛擬相機(jī)位置在圖像平面中的新位置dproc。優(yōu)選的是,計(jì)算新位置來(lái)保持在深度圖的選定平面中的放大率。
在此種關(guān)系下,該位移是最終和原始位置(在x、y、z方向上移動(dòng))及方向(繞x、y、z軸旋轉(zhuǎn))之間的差值,在此即為獲取照片時(shí)的相機(jī)位置和虛擬相機(jī)位置之間的差值。而且,放大率是物體真實(shí)尺寸和照片中物體尺寸之間的比率,對(duì)于每個(gè)像素,該放大率等于該像素的深度與有效焦距之間的比率。
在替換的方案中,使用至少一張場(chǎng)景的照片及其相關(guān)的深度圖來(lái)執(zhí)行透視校正的步驟優(yōu)選地包括以下步驟:
·使用照片中的每個(gè)像素(x,y)的深度來(lái)計(jì)算該像素的放大率。
·使用所計(jì)算的放大率來(lái)計(jì)算照片中的每個(gè)像素的新位置(x’,y’),以使所有新位置具有相同的放大率。
在另一實(shí)施例中,執(zhí)行透視校正的步驟包括如下地確定新位置:
而且,執(zhí)行透視校正的步驟可進(jìn)一步包括還使用被選擇用來(lái)保持在深度圖的選定平面內(nèi)的放大率的參考平面的深度dacq_ref來(lái)調(diào)節(jié)新位置的放大率??赏ㄟ^(guò)如下地確定新位置來(lái)實(shí)施此實(shí)施例:
如果已確定了新位置,則執(zhí)行透視校正的步驟優(yōu)選地進(jìn)一步包括:使用像素值p(x,y)和新位置(x’,y’)來(lái)為像素(i,j)的陣列確定新像素值p(i,j);通過(guò)將相應(yīng)的像素值p(x,y)與新位置周圍的像素(i,j)的新像素值p(i,j)相加,為每個(gè)新位置(x’,y’)描繪校正后的照片,其中使用作為新位置(x’,y’)和每個(gè)像素(i,j)的相對(duì)位置的函數(shù)的權(quán)重因數(shù)對(duì)像素值p(x,y)進(jìn)行加權(quán)。
如果由所獲照片中的一個(gè)或多個(gè)像素值的加權(quán)值的相加生成了新像素值,則透視校正優(yōu)選地進(jìn)一步包括后續(xù)步驟:即用各新像素值p(i,j)除以歸一化因數(shù)。在其中照片被“拉伸”的區(qū)域中,某些新像素可能不靠近任何新位置,于是可能不具有分配給它們的任何像素值。因此,該方法優(yōu)選地進(jìn)一步包括后續(xù)步驟:對(duì)于具有未確定值p(i,j)的新像素,根據(jù)校正后的照片中的具有確定值p(i,j)的周圍像素計(jì)算內(nèi)插像素值。
在優(yōu)選實(shí)施中,虛擬相機(jī)位置和獲取位置之間的位移是沿著相機(jī)光軸的線性位移。還可以優(yōu)選的是,該位移距虛擬相機(jī)位置無(wú)窮遠(yuǎn),從而使得所有放大率的變化相等。
可通過(guò)多相機(jī)設(shè)置或單相機(jī)設(shè)置來(lái)生成深度圖。在優(yōu)選實(shí)施例中,提供照片和提供與該照片有關(guān)的深度圖的步驟僅涉及具有單獲取位置的單相機(jī)。該單相機(jī)優(yōu)選地具有可調(diào)透鏡或具有可調(diào)光學(xué)放大率的任何其他光學(xué)元件。
提供深度圖的步驟可涉及使用例如對(duì)焦測(cè)距(又稱作shapefromfocus)或散焦測(cè)距這樣的基于焦距的深度圖估值來(lái)生成深度圖。按照定義,dff(對(duì)焦測(cè)距)或dfd(散焦測(cè)距)提供了與同一相機(jī)在同一位置拍攝的照片完全一致的深度圖,因此提供了降低處理的復(fù)雜度和消除照片與深度圖之間的任何校準(zhǔn)的優(yōu)點(diǎn)。
在替換的實(shí)施例中,提供照片和提供深度圖的步驟涉及使用多相機(jī),例如:
·使用單獨(dú)的圖像相機(jī)和深度圖相機(jī);
·使用立體或陣列相機(jī)來(lái)生成圖像和深度圖;或
·使用多相機(jī)且從不同視角生成圖像和深度圖。
由于不是所有照片都透視畸變到了需要或優(yōu)選是要進(jìn)行透視校正的程度,且由于透視校正需要一些處理能力,所以選擇需要進(jìn)行透視校正的照片會(huì)是優(yōu)選的。因此,在優(yōu)選實(shí)施例中,提供照片和提供深度圖的步驟可包括:提供一系列照片及其相關(guān)的深度圖,其中該方法進(jìn)一步包括檢測(cè)和評(píng)估照片中的透視畸變的步驟,以選擇將從透視校正中受益的照片。透視畸變的評(píng)估可例如基于場(chǎng)景中最近物體的距離和/或基于對(duì)沒(méi)影直線的分析。
在進(jìn)一步的實(shí)施例中,可應(yīng)用用來(lái)校正照片中的透視畸變的相同轉(zhuǎn)換來(lái)轉(zhuǎn)換深度圖本身,以生成與校正后照片相關(guān)的深度圖。在此,第一方面的方法進(jìn)一步包括也對(duì)深度圖執(zhí)行透視校正,即對(duì)于深度圖中的每一像素(x,y),通過(guò)至少根據(jù)該像素在獲取位置的圖像平面中的深度dacq(x,y)及其位置dacq(x,y)以及虛擬相機(jī)位置和獲取位置之間的位移c,確定虛擬相機(jī)位置在該圖像平面中的新位置dproc,來(lái)也對(duì)深度圖執(zhí)行透視校正。在這方面,深度圖僅為單通道圖像(所有像素值均為深度),而彩色照片通常為三通道圖像(像素值在三種顏色的通道之一中,例如紅綠藍(lán))。該處理是等同的,唯一的區(qū)別是僅需要深度圖本身,因?yàn)槊總€(gè)像素的深度是固有的。優(yōu)選地,將位移c添加到校正后的深度圖的每個(gè)深度(像素值)中。
根據(jù)本發(fā)明的第一方面的透視校正可立即在相機(jī)中執(zhí)行、或在相機(jī)的后期處理中或在其他設(shè)備中執(zhí)行。
本發(fā)明可通過(guò)硬件、軟件、固件或這些的任何組合來(lái)實(shí)施。因此在第二方面中,本發(fā)明提供數(shù)字存儲(chǔ)持有軟件,該軟件在由一或多個(gè)數(shù)字處理器運(yùn)行時(shí),執(zhí)行第一方面的方法。數(shù)字存儲(chǔ)器可以是任意一個(gè)或多個(gè)可存儲(chǔ)數(shù)字代碼的可讀介質(zhì),例如磁盤、硬盤驅(qū)動(dòng)器、ram、rom等,該軟件可以在單一介質(zhì)上(例如,帶有相機(jī)的設(shè)備的存儲(chǔ)器)或分散在數(shù)個(gè)介質(zhì)上,例如通過(guò)網(wǎng)絡(luò)連接的不同硬盤驅(qū)動(dòng)器服務(wù)器,或其他類型的電子存儲(chǔ)器。
在第三方面中,本發(fā)明提供集成電路,被配置用于執(zhí)行第一方面的方法。
相似地,在第四方面中,本發(fā)明提供一種帶有相機(jī)的手持或便攜式設(shè)備,這種帶有相機(jī)的手持或便攜式設(shè)備包括第二方面的數(shù)據(jù)存儲(chǔ)器或第三方面的集成電路。
附圖說(shuō)明
將參照有關(guān)附圖更詳細(xì)地描述本發(fā)明。附圖示出了實(shí)施本發(fā)明的一種方式,且附圖不用于限制所附權(quán)利要求書范圍內(nèi)的其他可能的實(shí)施例。
圖1a-d示出了dxoviewpoint2應(yīng)用的圖像校正,施加在照片和棋盤格圖案上的校正相同。
圖2和圖3示出了根據(jù)本發(fā)明的具體實(shí)施方式的用于解釋適用的代數(shù)推導(dǎo)的設(shè)置。
圖4示出了新像素值的計(jì)算方式。
圖5a-c示出了用于為具有未確定像素值的像素內(nèi)插像素值的自適應(yīng)內(nèi)核的用法。
圖6是示出了本發(fā)明所述方法的實(shí)施例以及代表本發(fā)明所述計(jì)算機(jī)程序產(chǎn)品的操作概要的原理系統(tǒng)圖表。
具體實(shí)施方式
以下說(shuō)明中所述的主要重點(diǎn)是在相機(jī)與場(chǎng)景最近部分的距離和相機(jī)與場(chǎng)景最遠(yuǎn)部分的距離之間的比值很高并產(chǎn)生嚴(yán)重的形變時(shí)出現(xiàn)的透視畸變上。這主要發(fā)生在近距離或低角度攝影中。然而,本發(fā)明中的透視校正可應(yīng)用在任何場(chǎng)景拓?fù)浣Y(jié)構(gòu)中。
本發(fā)明中透視校正的方法,將照片從獲取時(shí)的相機(jī)視角(pov)轉(zhuǎn)換至處理過(guò)的照片中的虛擬pov,在該處理過(guò)的照片中,透視畸變效應(yīng)得到弱化、變得微不足道或并未呈現(xiàn)。還有一個(gè)目的是,在保持相同物體尺寸的同時(shí),轉(zhuǎn)化至新的pov(很遠(yuǎn)或無(wú)限距)。
所以,對(duì)于所獲照片中的各像素(x,y),使用者需要計(jì)算出處理過(guò)的照片中相關(guān)像素值p(x,y)的新位置(x’,y’)。計(jì)算出的新位置是所獲照片中像素位置(x,y)以及相機(jī)與該像素中的場(chǎng)景的該部分之間的距離d(x,y)的函數(shù)。
下文描述了實(shí)施例,其中獲取照片時(shí)的相機(jī)位置(也稱原始相機(jī)位置)與虛擬pov中的相機(jī)位置之間的位移是沿相機(jī)光軸(此處為z軸)的線性位移??蓱?yīng)用更復(fù)雜的位移(其他方向上的位移:x/y和旋度),但是用于此種位移的代數(shù)雖然容易獲得,卻相當(dāng)廣泛。
圖2示出了物體、相機(jī)的獲取照片位置和虛擬相機(jī)位置的設(shè)置,相機(jī)具有鏡頭,該鏡頭焦距為f。
下述符號(hào)將被用在說(shuō)明中,且在圖2和3中示出:
d:像素的深度
d:距傳感器中心或光軸的像素距離
c:獲取照片位置和虛擬位置之間沿z-軸的位移;+:遠(yuǎn)離場(chǎng)景;-:靠近場(chǎng)景
下標(biāo)“acq”:指的是獲取的照片
下標(biāo)“proc”:指的是來(lái)自虛擬相機(jī)位置的處理過(guò)的照片
坐標(biāo)/索引(x,y):獲取的照片中像素的整數(shù)位置
p:像素值,例:rgb或其他色彩空間
坐標(biāo)/索引(x’,y’):轉(zhuǎn)換后像素(x,y)的像素值的新(十進(jìn)制)位置
坐標(biāo)/索引(i,j):處理過(guò)的照片中像素的整數(shù)位置
可以從圖2中得到下述幾何關(guān)系:
dacq/d=f/dacq
dproc/d=f/dproc
dproc=dacq+c
=>dproc/dacq=dacq/dproc
=>dproc=dacq*dacq/dproc
=>dproc=dacq*dacq/(dacq+c)(1)
如前所述,放大率是物體的真實(shí)尺寸與物體在照片中的尺寸之間的比率,聯(lián)系圖2,放大率在所獲照片中可表示為d/dacq=f/dacq,在處理過(guò)的照片中可表示為d/dproc=f/dproc=f/(dacq+c)。
轉(zhuǎn)換(1)引起了整張圖片的放大。如果我們想選擇其中放大因數(shù)為一的參考平面,我們就需要為這個(gè)距離計(jì)算放大因數(shù)。圖3示出了這一過(guò)程。優(yōu)選地在朝向相機(jī)的方向上靠近物體中心選擇參考平面。例如:面部,可將面部(頭發(fā)/耳朵)輪廓的平面選為參考平面,從而維持頭部尺寸且解決鼻子的畸變。
參考平面上的放大率是:
dproc_ref/dacq_ref=(dacq_ref)/(dacq_ref+c)(2)
將參考放大率(2)代入轉(zhuǎn)換(1)后,可以得到:
dproc=dacq*dacq*(dacq_ref+c)/((dacq_ref)*(dacq+c))(3)
如果c是無(wú)窮遠(yuǎn)(對(duì)所有物體的放大率相同),我們就得到了:
dproc=dacq*dacq/(dacq_ref)(4)
因?yàn)閐在光軸(z-軸)周圍具有軸對(duì)稱,(3)中所表達(dá)的轉(zhuǎn)換位于極坐標(biāo)內(nèi),d是徑向坐標(biāo),角坐標(biāo)
轉(zhuǎn)換(3)可用于計(jì)算具有像素值p(x,y)的像素的位置(x’,y’),如果照片是在虛擬位置處用相機(jī)拍下的,像素會(huì)位于該位置(x’,y’)??蓮?3)中推斷,新位置是像素深度d(x,y)、位置d和虛擬相機(jī)位置與獲取照片位置之間的位移c的函數(shù)。通過(guò)將(2)中的參考放大率代入(3)中,新位置維持了深度圖的選定平面的放大率。
在優(yōu)選實(shí)施例中,轉(zhuǎn)換(3)被用作正向轉(zhuǎn)換;從原始像素位置(x,y)計(jì)算像素值p(x,y)的新位置(x’,y’)。正向轉(zhuǎn)換涉及一些復(fù)雜情況,處理過(guò)的照片中的多個(gè)像素會(huì)作用于(contributeto)單個(gè)像素,但處理過(guò)的照片中的某些像素可能完全不會(huì)受到該作用。也可以使用逆向轉(zhuǎn)換,但對(duì)于透視校正來(lái)說(shuō),計(jì)算的要求更高,因此實(shí)施正向映射是優(yōu)選的。
在正向轉(zhuǎn)換中,所獲照片經(jīng)過(guò)掃描,且為每一點(diǎn)都計(jì)算出了新坐標(biāo)。然而,為了將轉(zhuǎn)換后的照片用尺寸相同且每個(gè)像素在某色彩空間中都具有單一值的像素的規(guī)則陣列以標(biāo)準(zhǔn)數(shù)字格式表示,轉(zhuǎn)換后的照片需要得到更多的處理。僅將各像素(x,y)重新定位到其新位置(x’,y’),會(huì)創(chuàng)造出具有更多重疊像素(多源像素)的點(diǎn)和具有無(wú)像素的黑點(diǎn)(洞)的圖片。
對(duì)于x和y為整數(shù)值的每個(gè)源像素p(x,y),在處理過(guò)的照片中的坐標(biāo):x’和y’為十進(jìn)制值。這些坐標(biāo)可被表示為整數(shù)值(i,j)加上小數(shù)部分(δxδy)。
x’=i+δx
y’=j(luò)+δy
首先,像素值p(x,y)被分配給處理過(guò)的照片中像素陣列內(nèi)的像素,這在有關(guān)圖4的內(nèi)容中得到說(shuō)明。p(x,y)’s是目標(biāo)照片中的像素值,x’s是處理過(guò)的照片中具有像素值p(i,j)的像素(i,j)的中心。對(duì)于每個(gè)計(jì)算出的新位置,相應(yīng)的像素值會(huì)作用于處理過(guò)的照片中附近像素的像素值。在優(yōu)選實(shí)施方式中,其如下實(shí)現(xiàn)。
對(duì)于所獲照片中的每個(gè)像素,通過(guò)將相應(yīng)像素值p(x,y)與校正后的照片中距新位置最近的四個(gè)像素的新像素值p(i,j)相加,來(lái)確定新像素值。相加時(shí),像素值p(x,y)被權(quán)重因數(shù)加權(quán),該權(quán)重因數(shù)是新位置(x’,y’)和像素(i,j)的相對(duì)位置的函數(shù),從而得到雙線性插值,如圖4所示:
p(i,j)→p(i,j)+p(x,y)*(1-δx)*(1-δy)
p(i+1,j)→p(i+1,j)+p(x,y)*δx*(1-δy)
p(i,j+1)→p(i,j+1)+p(x,y)*(1-δx)*δy
p(i+1,j+1)→p(i+1,j+1)+p(x,y)*δx*δy
因此,在處理過(guò)的照片中,原始像素值的加權(quán)值在各像素中累積。為了使處理過(guò)的照片中的新像素值歸一化,每個(gè)像素值后續(xù)需除以歸一化因數(shù)。
在實(shí)際應(yīng)用中,創(chuàng)造出了“照片累積緩沖區(qū)(photoaccumulatedbuffer)”。首先,其由0’s填充,且每次當(dāng)像素值p(x,y)在處理過(guò)的照片中作用于像素p(i,j)時(shí),就在該緩沖區(qū)內(nèi)計(jì)算p(x,y)的加權(quán)值的總和。同時(shí),在“加權(quán)緩沖區(qū)”內(nèi)計(jì)算加權(quán)因數(shù)(例:(1-δx)*(1-δy))的總和。一旦完成了正向映射,每個(gè)來(lái)自照片累積緩沖區(qū)的像素都除以加權(quán)緩沖區(qū)的加權(quán)因數(shù),以生成“加權(quán)后透視校正過(guò)的照片”。這解決了處理過(guò)的照片中的某些像素會(huì)通過(guò)正向映射從所獲照片中的多個(gè)像素中得到信息的問(wèn)題。
在上述內(nèi)容中,在周圍像素中累積所獲像素值使用的是雙線性內(nèi)插和加權(quán)因數(shù)δx*δy。然而,分配所獲照片的像素值的其他方法、因而其他加權(quán)因數(shù)是可行的,且也可以使用其他諸如雙三次或樣條插值的內(nèi)插法。
加權(quán)后透視校正過(guò)的照片可能包括“洞(holes)”,即所獲照片中沒(méi)有像素作用于此像素值,因此該像素值是未確定的。為了填補(bǔ)洞,基于校正后的照片中的周圍像素,為具有未確定值p(i,j)的像素計(jì)算具有確定值p(i,j)的內(nèi)插像素值。在優(yōu)選實(shí)施例中,掃描了加權(quán)后透視校正過(guò)的照片,每次找到洞,就根據(jù)來(lái)自該有效像素的反距離加權(quán)法(idw)來(lái)計(jì)算該像素的內(nèi)插值。更多有關(guān)idw的信息可見(jiàn)如http://en.wikipedia.org/wiki/inverse_distance_weighting的網(wǎng)頁(yè)。
因?yàn)槎吹某叽缡俏粗?,所以距最近的確定像素值的距離也是未知的。為了保證快速處理且避免未填充的洞,可使用自適應(yīng)內(nèi)核尺寸,如圖5a-c所示:在圖5a和5b中,使用了3x3的內(nèi)核,在圖5a中,可從周圍6個(gè)具有確定像素值的像素中用idw計(jì)算得出有源像素的值,即洞的值。然而在圖5b中,周圍像素不為idw提供數(shù)據(jù),因此得不到有源像素/洞的確定值,且必須增加內(nèi)核尺寸,例如增加到圖5c中的5x5內(nèi)核。這里,有源像素/洞的值可從周圍10個(gè)具有確定值的像素中用idw計(jì)算得出。
如果洞對(duì)于像素內(nèi)插來(lái)說(shuō)太大了,填補(bǔ)洞也可通過(guò)紋理映射來(lái)完成。例如,對(duì)于自拍照,鼻子的側(cè)面可成一種區(qū)域,在距離增大時(shí)在該區(qū)域中得到缺失的多邊形,在此種情況下,可使用皮膚紋理映射。
圖6示出了透視校正方法的全過(guò)程。
正如前面提到的,深度圖自身為單通道圖像,其全部像素值都是深度,該深度圖也可通過(guò)與場(chǎng)景照片相同的轉(zhuǎn)換過(guò)程和步驟來(lái)得到校正。實(shí)際和虛擬相機(jī)位置之間的位移c可在轉(zhuǎn)換后被增加到各深度/像素值中。校正后的深度圖與校正后的照片相關(guān),將場(chǎng)景不同部分的距離提供給虛擬相機(jī)位置的圖片平面。
自拍照應(yīng)用
本發(fā)明的優(yōu)選實(shí)施例涉及自拍照中的透視校正。自拍照,就其本質(zhì)而言,是以近距離拍攝的照片,例如使用手機(jī)(最遠(yuǎn)距離通常是臂長(zhǎng))或筆記本電腦或平板電腦的內(nèi)置相機(jī)或攝像頭拍攝的照片。這些近距離照片最經(jīng)常出現(xiàn)透視畸變——面部靠近相機(jī),且相機(jī)與最近部分(鼻子)的距離和相機(jī)與最遠(yuǎn)部分(耳朵)的距離之間的比值很大。
因此自拍照典型適合自動(dòng)透視校正技術(shù),且為了挑選可從前述透視校正技術(shù)中受益的照片,透視畸變的自動(dòng)檢測(cè)與評(píng)估可與模式識(shí)別相結(jié)合,以檢測(cè)發(fā)生在人臉上的施加于深度圖的深度差異。
而且,在自拍照中,背景(拍攝自拍照的人身后的部分場(chǎng)景)可用深度圖信息來(lái)確定。因此,在優(yōu)選實(shí)施例中,本發(fā)明所述的方法涉及通過(guò)分析深度圖來(lái)對(duì)照片中的一個(gè)或多個(gè)前景物體和背景進(jìn)行檢測(cè),從而識(shí)別在深度上變化很快的范圍和至少部分輪廓被此種范圍勾勒出的區(qū)域,具有較小平均深度的區(qū)域被識(shí)別為前景物體,具有較大平均深度的區(qū)域被識(shí)別為背景。在可選擇的實(shí)施方式中,該方法可涉及通過(guò)分析深度圖來(lái)對(duì)照片中一個(gè)或多個(gè)前景物體和背景進(jìn)行檢測(cè),從而將深度小于300cm(例如小于200cm、150cm或100cm)的區(qū)域識(shí)別為前景物體,并且將具有較大深度的區(qū)域識(shí)別定義為背景。
檢測(cè)過(guò)照片的背景和前景部分后,可在保留前景物體的情況下,用其他圖像內(nèi)容(照片、繪畫、圖形或其中的任何組合)來(lái)替換背景。
技術(shù)實(shí)施方式
本發(fā)明可通過(guò)硬件、軟件、固件或其中任何組合來(lái)實(shí)施。本發(fā)明或其某些特點(diǎn)也可實(shí)施為運(yùn)行于一個(gè)或多個(gè)數(shù)據(jù)處理器和/或數(shù)字信號(hào)處理器中的軟件。也可將圖6視為描繪了本發(fā)明第二方面所述的計(jì)算機(jī)程序產(chǎn)品的實(shí)施例的操作概述的系統(tǒng)原理框圖。本發(fā)明硬件實(shí)施例的單個(gè)元素可物理地、函數(shù)地和邏輯地以任何適當(dāng)方式實(shí)施,例如在單個(gè)單元中、在多個(gè)單元中或作為獨(dú)立功能單元的一部分實(shí)施。本發(fā)明可在單個(gè)單元中實(shí)施,或物里地且函數(shù)地分散在不同單元和處理器中。
本發(fā)明的第三方面所述的集成電路可以是一般的在系統(tǒng)編程(isp)、微處理器或特定用途集成電路(asic)或其中的某部分。這可能是有利的,尤其是對(duì)于本發(fā)明的第四方面所述的帶有相機(jī)的手持或便攜式設(shè)備來(lái)說(shuō),對(duì)于這些設(shè)備,較低的成本、功耗、重量、體積、熱生成量等非常重要。帶有相機(jī)的手持設(shè)備包括數(shù)碼相機(jī)、移動(dòng)電話、平板電腦、mp3播放器等。帶有相機(jī)的便攜式設(shè)備包括例如筆記本電腦。
雖然本發(fā)明聯(lián)系具體實(shí)施例得到說(shuō)明,但本發(fā)明不應(yīng)理解為以任何方式局限于所呈現(xiàn)的示例。本發(fā)明的范圍將按照所附權(quán)利要求書來(lái)解讀。在權(quán)利要求書的語(yǔ)境中,術(shù)語(yǔ)“包括”或“包含”不排除其他可能的要素或步驟。而且,提到諸如“一(a)”或“一(an)”等用語(yǔ)不應(yīng)被理解為排除復(fù)數(shù)形式。在權(quán)利要求書中使用與附圖所示元素有關(guān)的附圖標(biāo)記,不應(yīng)被理解為限制本發(fā)明的范圍。此外,不同權(quán)利要求中提到的個(gè)體特點(diǎn),可得到有利的結(jié)合,且在不同的權(quán)利要求中提到這些特點(diǎn),不會(huì)排除這些特點(diǎn)的結(jié)合體的可能性和有利性。