常州紡織服裝職業(yè)技術學院 張茹
在圖片、短視頻充斥互聯(lián)網的時代,人們對于高質量圖片有著很大需求。由多張圖片拼合而成的全景圖片往往具有不規(guī)則的邊界,而人們往往會通過截取或者圖片補全獲得矩形邊界,但如此操作可能會失去很多必要的內容,失去一種寬闊的視場效果,或者會有一些可能無法合成語義的內容[1]。在這個研究背景下,提出了一種內容可識別的圖像編輯方法。
基于如何在縮放圖片(長寬比一般與原圖有較大差異)的同時減少內容的丟失,這個問題也被叫做Image Retargeting,最早的Seam Carving提出了內容可識別(Content-aware)的方法。由于人們對于圖片的不同內容有著不一樣的敏感度,所以通過一些不容易被發(fā)現(xiàn)的操作就能產生人們視覺上所能接受的圖片。這個方法已經被商業(yè)軟件Adobe Photoshop所引入(內容識別填充)。而Retargeting的研究主要是基于變形/扭曲算法(Warping Algorithm),這些研究的貢獻主要集中在如何保存圖片內容的一些特征,如形狀和直線,用最小的扭曲來保證圖片的完整性[2]。在本文中,擬將對更多的圖片操作問題進行關于內容可識別方向的研究,涉及全景圖像邊界規(guī)范化(Rectangling Panoramic Images)的操作。
隨著圖像對齊和拼接技術的推進,創(chuàng)建全景化圖像早已經變成一個日益流行的應用程序。由于對齊拼接圖像所需要的形變映射(例如,圓柱形映射、球形映射或透視映射)以及相機的隨意移動,全景圖像縫合呈現(xiàn)不規(guī)則邊界幾乎是不可避免的,很多網民都會青睞發(fā)布,共享和打印有矩形邊界的照片[3]。例如,在Flickr(flickr.com)上標簽為“全景”的照片有99%以上是具有矩形邊界的。
如何將不規(guī)則的矩形邊界的全景圖像邊界進行規(guī)范化的操作?一個簡單的解決方案是用矩形裁剪全景圖像。但裁剪可能失去很多必要的內容,并失去一種寬闊的視場效果。另一個解決方案是在邊框部分中,使用圖像補全技術合成缺少的區(qū)域。雖然這些技術適合擴展的紋理或簡單的結構(如直線),但大部分情況下會有一些可能無法合成語義的內容。有研究,是將裁剪和圖像補全結合起來以解決這個問題[4]。
在這項工作中,擬建議采用基于圖像識別來規(guī)范全景圖像的邊界。變形是一個有吸引力的策略,眾所周知,全景/廣角圖像難免出現(xiàn)失真的情況。廣泛的網民已經習慣了這種失真,例如,在Flickr、photosynth.net、360cities.net等圖像分享網站上,有數(shù)以百萬計的這樣的全景照片。攝影師和一些藝術家們似乎很喜歡以輕微的扭曲失真為代價來獲得令人印象深刻的寬闊視角的照片。根據(jù)觀察,不難發(fā)現(xiàn),由一個設計適當?shù)倪吔缫?guī)范化算法額外引入的失真不僅是可以被接受,而且是視覺上無法察覺的。
設計這樣的變形方法最大的挑戰(zhàn)來自于不規(guī)則的邊界。不正確的拉伸邊界矩形可能會帶來意想不到的失真,所以內容可識別的方法是極其必要的。但現(xiàn)有大多數(shù)基于內容可識別的扭曲技術,或是用于投影映射操作、圖像重定向(Image Retargeting),或是視頻穩(wěn)定化,都是基于網格并假定輸入圖像是矩形的。形狀變形方法需要預定義的網格和用戶指定的控制點作為輸入/輸出的限制。基于插值的變形方法則需要用戶指定的多邊形作為輸入/輸出而且不是內容可識別的[4]。
本文中擬提出一種全新的內容可識別的全景圖像邊界規(guī)范化的扭曲方法。其關鍵思想是兩個步驟的方法,首先局部的扭曲原圖使得它的邊界規(guī)范化,然后再全局的鋪上網格并再次從全局的角度扭曲原圖使其邊界規(guī)范。
第一步,修改Seam Carving算法,把一個不規(guī)則邊界的圖形擴大到矩形。把Seam Carving方法當作是扭曲方法的一種,是因為它替代了邊界上該Seam的所有像素。
第二步,將網格鋪在Seam Carving所輸出的矩形圖像上。有了第一步的移位表,就可以把網格扭曲回到原來不規(guī)則邊界的圖。然后,整體地優(yōu)化網格使得它可以在保留包括形狀和直線在內的圖的感知屬性扭曲到一個矩形。此方法是全自動的——基于內容且不要求事先有任何映射的信息。
設計的扭曲算法包含兩步:運用廣義Seam Carving算法的局部扭曲(Local Warping)和基于網格的整體扭曲(Global Warping)。
(1)局部扭曲(Local Warping)是提供了一個初始的矩形化的(全景)圖片。它的主要目的是要在原始的輸入全景圖上鋪一個不規(guī)則的網格。
(2)整體扭曲(Global Warping)是在優(yōu)化所鋪的網格,使得可以保持圖片內容的一些特征,如形狀和直線。
局部扭曲是Seam Carving算法的一種廣義形式。原始的Seam Carving算法是插入一條貫穿圖像的水平方向或豎直方向的Seam,以至于圖片會從水平方向或豎直方向拓展一個像素。如果允許一個Seam不是貫穿于圖像的,那么就能改變圖像的邊界形狀并讓它規(guī)范化(Rectangling)。已經有很多文獻提出可以用Seam Carving把一個規(guī)則邊界的圖形裁剪成一些特定的形狀(比如圓或橢圓)[5]。
Seam Carving中,看起來很像一個和本文研究的問題完全相反的任務(假設輸入圖像的不規(guī)則邊界是目標邊界)。定義“邊界條”為一系列在目標規(guī)則邊界圖像一側(上、下、左、右)連通的缺少的像素序列,每次選擇最長的一個邊界條,然后插入一個Seam。對于邊界條在右邊的情況,插入一條豎直方向的非貫穿的Seam,這條Seam的起始點和終止點和所選到的邊界條的起始點和終止點分享同樣的y方向坐標,然后再把所有的在這條Seam右邊的像素點往右移一個像素,而邊界條在左邊、上邊、下邊的情況也可以類似的處理,重復用這種方法插入Seam直到矩形邊界沒有任何缺少的像素[5]。
為了找到這樣非貫穿的Seam,運行Seam Carving算法去尋找一條在“子圖”(Sub-image)中貫穿圖像的Seam。例如,某一“子圖”有著和邊界條的起始點和終止點同樣的y方向坐標,然后在這個“子圖”上應用Seam Carving算法(在設計實現(xiàn)中,采用的是Improved Seam Carving),因為這個“子圖”會包含缺少的像素,給這些像素分配無限大的代價來避免Seam走過這些像素,從填充未知區(qū)域這個角度來說,插入一條Seam會減少圖像中缺少的像素的個數(shù)(該個數(shù)等于Seam上的像素個數(shù)),從扭曲這個角度來說,插入一條Seam相當于重新計算了一個位移表( Shift Map )u (x),用x = (x,y)去定義一個輸出像素的坐標,用 u = ( ux, uy )去定義位移的值,像素的值可以通過扭曲輸入圖得到如式(1)所示:
這里Iin和Iout代表輸入圖像和當前的輸出圖像。
為了生成矩形邊界圖像的同時可以保持如直線和形狀這些高層次的屬性,則需要優(yōu)化一個基于網格的全局能量函數(shù)。
首先,在不規(guī)則邊界的輸入圖上生成網格,先要在局部變形的矩形邊界的結果圖上鋪上標準的網格。在本文的實驗中,選擇400個格子的網格,然后再利用局部變形的位移表,把標準的網格的頂點轉換到原圖中,這樣就可以得到一個鋪好網格的輸入全景圖了,全局變形就是基于這組網格。接著,設計可以對規(guī)范邊界圖中的形狀和直線有約束作用的能量函數(shù)。這里將用相對更加簡潔、參數(shù)更加少的能量函數(shù)。
引入?yún)?shù)V記錄網格頂點 Vi= (xi,yi)T的集合,即V = {vi}。定義輸入圖中的網格為V,希望優(yōu)化關于輸入圖中的網格V的能量函數(shù)。
在這里,形狀保持的能量[項E]s鼓勵每個單元格的變換是相似變換(Similarity Transformation)。希望每一個具體如式(2)所示:
其中,N表示單元格的個數(shù),q是單元格的索引。I是單位矩陣。Aq和Vq分別是8×4的矩陣與8×1的向量,其表達式如式(3)所示:
這里,用(x0,y0),…, (x3,y3) 定義變換后單元格四個格點的坐標,并用(),…, ()表示讀入時四個格點坐標。SE是關于V的二次函數(shù)。
沒有向保持形狀項介入任何顯著性權值(Saliency Weight)。因為全景圖中經常涵蓋了多樣的內容、也不存在特別顯著的物體。
2.2.2 保持直線(Line Preservation)
保持直線項鼓勵直線經過變換后還是直線,平行線還保持平行。接下來,用網格將這些直線分割開成若干線段,每一條線段都僅在一個格內。將角度區(qū)間[-π,π)均勻的分成M=50組,量化出每個線段的方向。為了保持直線的屬性和平行性,鼓勵所有被分為同一組的線段,它們的旋轉角度θ將會一致。保持直線這個能量項LE包含所有的這樣的角度=1。
給定一條線段,可以用兩個端點的差向量計算出它的方向向量e和大小。如果把一條線段的兩個端點表示成四個格點qV的雙線性插值,發(fā)現(xiàn)e可以用qV線性表示。定義該線段的輸入方向向量為?e。給定一個目標旋轉角度,想要最小化給直線的扭曲函數(shù),如式(4)所示。R是一個旋轉矩陣,s是該線段的放大量。關于s的最小化量為:s = (-1eTRTe 。把它帶入上述扭曲函數(shù),就可以得到一個關于e的二次方程 ||Ce||2,這里矩陣C是因為e是一個關于Vq的線性函數(shù),所以,上述扭曲函數(shù)也可以寫為關于Vq的線性函數(shù)。
保持直線項LE定義為所有直線段扭曲函數(shù)的平均值,如式(5)所示:
其中LN是直線段的個數(shù)。第k條直線段在第個單元格中。而矩陣)函數(shù)EL是關于V的二次函數(shù)。
2.2.3 保證邊界(Boundary Preservation)
要把處在網格邊緣的格點限制在長方型邊框上。設計能量函數(shù)如式(6)所示:
其中,w,h分別是輸出圖像的寬和高。這里注意到僅限制邊界上的頂點兩個方向坐標中的一個,如在上邊界的頂點是可以左右隨意動的。
要優(yōu)化的能量函數(shù)如式(7)所示:
其中,λB= 108來保證圖片內容完整性。其余兩個參數(shù),經過試驗,發(fā)現(xiàn)保持直線項的權Lλ是主要決定性的參數(shù)。發(fā)現(xiàn)當充分大的時候,該算法就會運行的很好,比如使用這意味著保持直線的重要性要大于保持形狀的重要性。同時說明人眼對于彎曲的直線比扭曲的形狀更敏感,所以絕對定為λL=λB= 100。
使用調整法來最小化能量函數(shù) E (V ,{ θm})。初始化由局部扭曲的結果,跑迭代10次下面這個算法:
(1)固定{θm}:此時E是關于V的一個二次函數(shù),于是可以通過解線性方程來最優(yōu)化E。因為V僅僅包含幾百個未知數(shù),所以這一步花費時間是很少的。
(2)固定:因為{θm}是彼此獨立的,所以可以分別優(yōu)化每個mθ。此時最小化的式子可以簡化為如式(8)所示:
這個式子可以被優(yōu)化地通過迭代的牛頓法解決。然而,采取一種啟發(fā)式的更為簡單的非迭代式算法。因為可以發(fā)現(xiàn)所有的在第m組的線段都分享這個公共的旋轉角度mθ,以至于mθ會越來越接近于所有組內直線的角度和的相對的角。所以每次可以簡單的計算每個組內直線的角度ke和的相對旋轉角度,然后取個平均作為mθ。發(fā)現(xiàn)這個是最小化上述式子的很好地解決策略。
已假設了目標的邊界是矩形,但是如果這個矩形不是一個適當?shù)拈L寬比例,輸出的圖像會顯得被拉伸過。這個問題在透視映射(Perspective Projection)的情況下尤其明顯。為了減少這種拉伸,需要在全局變形后再更新目標的矩形信息。對于每一個單元格,可簡單地計算它的X方向的放大系數(shù) SX= (Xmax- Xmin)/(-)。Y 方向上也使用類似的方法計算得到。再用更新的目標矩形比例再次運行全局變形這一步,這一步降低了拉伸所帶來的失真。
因為變形的位移表大多數(shù)都是平滑的,故可以在小比例的圖上計算。首先將輸入圖縮小到一個固定的大小(實驗中用的是100萬像素)。讓局部變形和全局變形都在這張圖上運行,然后再通過雙線性插值位移表來放大結果的矩形邊界圖像。
在實現(xiàn)中,算法處理的是一個千萬級像素的圖片、在配置CPU為Intel Core i7 2.9GHz 和8GB內存的個人電腦上,1.5s內就得到了結果,這個運行時間主要由最后的插值高像素圖所導致。而這樣的圖用Photoshop中的“內容識別填充”填補缺少的部分(占18%的像素)要用19.1s。
在各種各樣的實例中展現(xiàn)了設計的結果,該方法成功在沒有引入明顯的失真而保持了原圖的內容,在360°全景圖中非常實用,相信扭曲變形方法在這樣的實例中是備受青睞的。
我們還把實驗結果和Photoshop中“內容識別填充”這種補全方法做了對比,可以看到補全技術在缺少相應語義內容的時候具有很大的局限性,會把一些語義內容當作紋理處理,還能看到裁剪后的結果,都嚴重影響了視角的范圍。
本文提出了一種新的內容識別扭曲方法可適用于將全景圖像邊界規(guī)范化。對于全景圖像邊界規(guī)范化的問題,扭曲策略在各種各樣的情況下能起到很好的效果,特別是當不規(guī)則的邊界是由隨意的相機運動造成的。
引用
[1]CHEN J M,CHEN L P,SHABAZ M.Image Fusion Algorithm at Pixel Level Based on Edge Detection[J].Journal of Healthcare Engin eering,2021,2021(Pt.7):5760660.
[2]XIAO J X,EHINGER K A,OLIVA A,et al.Recognizing Scene Viewpoint Using Panoramic Place Representation[C]//Computer Vision and Pattern Recognition (CVPR),2012 IEEE Conference on, 2012:2695-2702.
[3]QI S Y,HO J.Seam Segment Carving:Retargeting Images to Irregularly-Shaped Image Domains[C]//European Conference on Computer Vision.Springer,Berlin,Heidelberg,2012.
[4]HE K,JIAN S.Statistics of Patch Offsets for Image Completion[C]// European Conference on Computer Vision.Springer,Berlin,Heidelberg, 2012.
[5]DARABI S,SHECHTMAN E,BARNES C,et al.Image Melding: Combining Inconsistent Images Using Patch-based Synthesis[C]//ACM Transactions on Graphics,2012(4CD):1-10.