本發(fā)明涉及計算機(jī)圖形學(xué)及圖像處理技術(shù)領(lǐng)域,特別是涉及一種基于擴(kuò)散曲線的RGBD圖像矢量化方法。
背景技術(shù):
圖像矢量化方法為傳統(tǒng)位圖提供了另一種無損表達(dá)方式,為藝術(shù)家提供了對普通位圖做藝術(shù)創(chuàng)作的便利工具。
當(dāng)藝術(shù)家想對一張位圖中的物體進(jìn)行后期創(chuàng)作時,他們需要獲得該物體的大體輪廓和內(nèi)部細(xì)節(jié)。梯度網(wǎng)格(Gradient Mesh)是一種基于網(wǎng)格的矢量化圖元,它可以渲染光滑的顏色過渡,并支持無極縮放等傳統(tǒng)矢量圖的特點(diǎn),參見Sun J,Liang L,Wen F,et al.Image vectorization using optimized gradient meshes ACM Transactions on Graphics(TOG).ACM,2007,26(3):11.然而這種方法不方便進(jìn)行后期處理,因?yàn)椴僮骶W(wǎng)格的過程非常繁瑣,并且不直觀。
擴(kuò)散曲線(Diffusion Curves)是一種非常便利的矢量化圖元,擴(kuò)散曲線利用曲線向外擴(kuò)散顏色,以達(dá)到光滑的顏色混合效果,參見Diffusion Curves:A Vector Representation for Smooth-Shaded Images,Alexandrina Orzan,Adrien Bousseau,Holger Winnemoller,Pascal Barla,Joelle Thollot,David Salesin.擴(kuò)散曲線對于藝術(shù)家來說非常易于學(xué)習(xí)和掌握,只要繪制其邊緣并添加顏色控制點(diǎn)。Alexandrina Orzan等人在其論文中提出一種針對RGB圖像的矢量化方法,其能有效重建一些包含簡單物體的真實(shí)照片和漫畫。還有一些研究人員在拉普拉斯域上進(jìn)行邊緣提取,再進(jìn)行矢量化工作,參見Xie G,Sun X,Tong X,et al.Hierarchical diffusion curves for accurate automatic image vectorization[J].ACM Transactions on Graphics(TOG),2014,33(6):230。該方法能有效重建包含復(fù)雜物體的真實(shí)照片矢量化。然而以上方法均是基于RGB圖像的矢量化方法,存在諸多結(jié)構(gòu)上的缺陷,會導(dǎo)致提取的邊界特征不夠清晰。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明的目的在于提供一種基于擴(kuò)散曲線的RGBD圖像矢量化方法。該方法利用顏色信息和額外的深度信息,有效提取物體輪廓,解決了傳統(tǒng)基于RGB擴(kuò)散曲線矢量化方法邊界不清晰的問題,為藝術(shù)家提供了一種方便后期創(chuàng)作的矢量化結(jié)果。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于該方法包括以下步驟:
1)輸入RGB彩色圖像和對應(yīng)的深度圖D,等待處理;
2)將步驟1)中等待處理的RGB彩色圖像進(jìn)行多尺度Canny邊緣提取,得到多尺度二值邊緣圖像;
3)對步驟2)中的多尺度二值邊緣圖像采用著色算法,得到彩色邊緣圖像;
4)將步驟1)中的深度圖D進(jìn)行深度修復(fù),得到修復(fù)后的深度圖D';
5)對步驟4)中修復(fù)后的深度圖D'采用深度邊緣提取算法,得到深度邊緣圖像;
6)將步驟3)中的彩色邊緣圖像和步驟5)中的深度邊緣圖像進(jìn)行相減,得到細(xì)節(jié)邊緣圖像;
7)對步驟5)的深度邊緣圖像和步驟6)中的細(xì)節(jié)邊緣圖像進(jìn)行像素鏈跟蹤合并,得到一組折線段;
8)對步驟7)中的折線段進(jìn)行顏色采樣和貝塞爾曲線擬合,得到一組擴(kuò)散曲線;
9)通過求解以步驟8)中擴(kuò)散曲線上的顏色為約束的泊松方程,平滑地將顏色擴(kuò)散并填滿整個圖像空間,得到矢量化結(jié)果。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟2)中所述的多尺度Canny邊緣提取方法如下:對于一張RGB彩色圖像,先對其在不同尺度上進(jìn)行高斯模糊處理,生成對應(yīng)的尺度空間,再對于尺度空間中的每一張圖像先進(jìn)行Canny邊緣提取,生成與該尺度空間相對應(yīng)的邊緣圖像棧,然后將不同尺度上的邊緣圖像合并成一張多尺度二值邊緣圖像。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟3)中的對多尺度二值邊緣圖像的著色算法如下:
步驟3-1,利用Sobel算子計算輸入RGB彩色圖像中每個像素的梯度;
步驟3-2,接著對多尺度二值邊緣圖像中的每一條像素鏈,實(shí)施如下算法:
步驟3-2-1,對當(dāng)前像素鏈設(shè)置唯一的顏色C,找到其一個端點(diǎn),從該端點(diǎn)像素開始遍歷像素鏈;
步驟3-2-2,比較當(dāng)前像素和八鄰域像素的梯度,在八鄰域像素中找到與當(dāng)前像素的梯度最接近的像素,且八鄰域像素與當(dāng)前像素的夾角小于45度,則將這兩個像素設(shè)置成相同的顏色C;八鄰域像素范圍內(nèi)沒有可選像素,則將選擇域擴(kuò)大至24像素,在擴(kuò)大的鄰域范圍內(nèi)尋找與當(dāng)前像素的梯度最接近的像素,將當(dāng)前像素和梯度最為接近像素以及兩者中間的像素,設(shè)置成一樣的顏色C;
步驟3-2-3,將當(dāng)前像素指向步驟3-2-2中找到的像素;
步驟3-2-4,重復(fù)步驟3-2-2和3-2-3直到到達(dá)像素鏈的另一個端點(diǎn)像素。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟4)中的深度修復(fù)方法如下:首先,對深度信息丟失區(qū)域進(jìn)行膨脹以消除不穩(wěn)定的深度值,其次通過如下三邊濾波公式來計算像素x處的深度值Dx:
其中G(·)是高斯函數(shù),W是歸一化因子,F(xiàn)(x)是像素x的鄰居像素集合,Gλ(x-y)是像素x和鄰居像素y的空間距離,Dx'是像素x鄰居像素的深度平均值,Dy是鄰居y像素的深度值,Gξ(Dx'-Dy)是兩者的深度差值,Ix,Iy分別為像素x和y處的顏色值,Gμ(Ix-Iy)是兩者的顏色差值。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟5)中的深度邊緣提取算法如下:首先根據(jù)圖像的二階導(dǎo)進(jìn)行非極大值抑制;其次,連接那些極大值點(diǎn)以獲得深度圖的邊緣結(jié)構(gòu)。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟6)的對兩個邊緣圖像的相減方法如下:對于深度邊緣圖像中每一個邊緣像素,在彩色邊緣圖像中找到位置與之對應(yīng)的像素,若彩色邊緣圖像中的對應(yīng)像素及其八鄰域中存在邊緣像素,則將其存在的邊緣像素消去,得到細(xì)節(jié)邊緣圖像。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟7)中的像素鏈跟蹤合并方法如下:
步驟7-1,對于細(xì)節(jié)邊緣圖和深度邊緣圖中的每一條像素鏈,實(shí)施如下算法得到折線段:
步驟7-1-1,找到像素鏈的其中一個端點(diǎn)x,在x的上、下、左、右四個優(yōu)先方向?qū)ふ铱蛇B接像素,若優(yōu)先方向存在像素,就認(rèn)定為可連接像素,若優(yōu)先方向上不存在可連接像素,則在左上,左下、右上、右下次優(yōu)方向上尋找可連接像素,若存在多個可連接像素,則選取能與當(dāng)前像素組成最長線段的方向作為可連接方向,在可連接方向上找到該方向上的拐點(diǎn)像素,將其位置記錄下;
步驟7-1-2,將x指向步驟7-1-1中找到的拐點(diǎn)像素;
步驟7-1-3,重步驟7-1-1和步驟7-1-2,直到x指向該像素鏈的另一個端點(diǎn)y;
步驟7-2,將細(xì)節(jié)邊緣圖生成的折線段集合和深度邊緣圖生成的折線段集合進(jìn)行合并;
步驟7-3,為了增強(qiáng)邊緣的連續(xù)性,將2個像素的距離且端點(diǎn)處的顏色偏差值小于一定閾值的折線段相連接,形成更長的折線段,其顏色偏差值計算函數(shù)如下:
其中a和b為像素端點(diǎn),Ra,Ga,Ba分別表示a處的紅色通道、綠色通道和藍(lán)色通道的值,Rb,Gb,Bb分別表示b處的紅色通道,綠色通道和藍(lán)色通道的值。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟8)中的顏色采樣方法如下:對于一條折線段上的每個像素,在RGB彩色圖像中沿著其在像素鏈上的法線方向的正方向偏移3個像素的3*3像素區(qū)域內(nèi)采樣得到其眾數(shù)顏色,完成采樣后,對折線進(jìn)行過濾,過濾原則為若某像素前后各5個像素內(nèi)相似顏色個數(shù)少于閾值則將該像素刪除,沿著折線段上的每個像素法向方向的負(fù)方向進(jìn)行相同的顏色采樣步驟,閾值為3個像素。
所述的基于擴(kuò)散曲線的RGBD圖像矢量化方法,其特征在于步驟8)中的貝塞爾曲線擬合方法如下:利用折線兩端切線方向作為中間控制點(diǎn)所在方向,通過最小二乘方法計算中間控制點(diǎn)位置,使貝塞爾曲線與折線段的偏差值最小,若貝塞爾曲線與折線段的最大偏差值大于閾值,則在該拐點(diǎn)處將折線段拆分,對拆分的折線段添加輔助點(diǎn)以保持貝塞爾曲線連續(xù)性,再分別進(jìn)行擬合,直到最大偏差值小于閾值,
三次貝塞爾曲線B(t)的表達(dá)式為
B(t)=(1-t)3P0+3(1-t)2P1+3(1-t)2P2+t3P3
其中t為三次塞爾曲線的參數(shù),0≤t≤1,P0、P1、P2、P3表示4個控制點(diǎn)。
通過采用上述技術(shù),與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果如下:
本發(fā)明針對現(xiàn)有的基于擴(kuò)散曲線的RGB圖像矢量化的缺點(diǎn),采用了RGBD圖像來獲得其物體輪廓,利用顏色信息和額外的深度信息,更好的還原了物體的真實(shí)輪廓,解決了傳統(tǒng)基于RGB擴(kuò)散曲線矢量化方法邊界不清晰的問題,同時也解決了某些顏色環(huán)境下多尺度Canny失效的情況,其算法明確,結(jié)果魯棒,特別適用于RGBD圖像的矢量化,為藝術(shù)家提供了一種方便后期創(chuàng)作的矢量化結(jié)果。
附圖說明
圖1是本發(fā)明方法的流程圖。
具體實(shí)施方式
下面結(jié)合說明書附圖對本發(fā)明的一種基于擴(kuò)散曲線的RGBD圖像矢量化方法通過實(shí)施方式進(jìn)行詳細(xì)說明。
如圖1所示,本發(fā)明的一種基于擴(kuò)散曲線的RGBD圖像矢量化方法,包括輸入待處理的原始RGB彩色圖像和深度圖像D,對RGB圖像進(jìn)行多尺度Canny邊緣提取,對獲得的多尺度二值邊緣圖像著色生成彩色邊緣圖像,修復(fù)深度圖像,對修復(fù)后的深度圖D’進(jìn)行深度邊緣提取生成深度邊緣圖像,將兩個邊緣圖像相減得到細(xì)節(jié)邊緣圖像,對細(xì)節(jié)邊緣圖像和深度邊緣圖像進(jìn)行追蹤合并生成一組折線段,對折線段進(jìn)行顏色采樣和貝塞爾曲線擬合得到一組擴(kuò)散曲線,以曲線上的顏色為約束求解泊松方程得到矢量化結(jié)果九個步驟。具體如下:
步驟1,輸入待處理的RGB圖像和深度圖D,深度圖是灰度圖。
步驟2,對步驟(1)中的RGB圖像進(jìn)行多尺度的Canny邊緣檢測,得到多尺度Canny邊緣圖像,獲得詳盡的二值邊緣圖像。
首先,利用高斯模糊將原始RGB圖像進(jìn)行模糊處理,應(yīng)用不同的權(quán)值參數(shù),獲得一個逐漸模糊的圖像棧。然后,對圖像棧中的每一個圖像進(jìn)行Canny邊緣檢測,得到對應(yīng)的邊緣圖像棧。最后,將所有的邊緣圖像合并到一張邊緣圖像上。
為了避免合并過程中產(chǎn)生冗余的邊緣信息,將一定距離閾值內(nèi)的邊緣進(jìn)行合并。
步驟3,對獲得的多尺度二值邊緣采用著色算法,獲得彩色邊緣圖像;
步驟3-1,利用Sobel算子計算輸入RGB彩色圖像中每個像素的梯度;
步驟3-2,接著對多尺度二值邊緣圖像中的每一條像素鏈,實(shí)施如下算法:
步驟3-2-1,對當(dāng)前像素鏈設(shè)置唯一的顏色C,找到其一個端點(diǎn),從該端點(diǎn)像素開始遍歷像素鏈;
步驟3-2-2,比較當(dāng)前像素和八鄰域像素的梯度,在八鄰域像素中找到與當(dāng)前像素的梯度最接近的像素,且其與當(dāng)前像素的夾角小于45度,則將這兩個像素設(shè)置成相同的顏色C。若八領(lǐng)域范圍內(nèi)沒有可選像素,則將選擇域擴(kuò)大至24像素(2像素寬的環(huán)形區(qū)域),在擴(kuò)大的鄰域范圍內(nèi)尋找與當(dāng)前像素的梯度最接近的像素,此時45度條件不再使用。將當(dāng)前像素和梯度最為接近像素以及兩者中間的像素(若存在),設(shè)置成一樣的顏色C;
步驟3-2-3,將當(dāng)前像素指向步驟3-2-2中找到的像素;
步驟3-2-4,重復(fù)步驟3-2-2和3-2-3直到到達(dá)像素鏈的另一個端點(diǎn)像素。
步驟4,如圖1所示,采用濾波技術(shù),將原始深度圖D進(jìn)行修復(fù),得到修復(fù)后的深度圖D’;
首先,對深度信息丟失區(qū)域進(jìn)行膨脹以消除不穩(wěn)定的深度值。其次,根據(jù)深度丟失像素x與鄰居像素的深度,空間距離和顏色差值的三邊濾波來計算像素x處的深度值Dx:
其中G(·)是高斯函數(shù),W是歸一化因子,F(xiàn)(x)是像素x的鄰居像素集合,Gλ(x-y)是像素x和鄰居像素y的空間距離,Dx'是像素x鄰居像素的深度平均值,Dy是鄰居y像素的深度值,Gξ(Dx'-Dy)是兩者的深度差值,Ix,Iy分別為像素x和y處的顏色值,Gμ(Ix-Iy)是兩者的顏色差值。
步驟5,對修復(fù)的深度圖像進(jìn)行深度邊緣提?。?/p>
首先根據(jù)圖像的二階導(dǎo)進(jìn)行非極大值抑制。其次,連接那些極大值點(diǎn)以獲得深度圖的邊緣結(jié)構(gòu);
步驟6,將步驟(3)和步驟(5)的邊緣結(jié)果進(jìn)行相減,得到細(xì)節(jié)邊緣圖像;
對于深度邊緣圖像中每一個邊緣像素,在彩色邊緣圖像中找到位置與之對應(yīng)的像素,若彩色邊緣圖像中的對應(yīng)像素及其八鄰域中存在邊緣像素,則將其存在的邊緣像素消去,得到細(xì)節(jié)邊緣圖像。
步驟7,對步驟(5)和步驟(6)對邊緣圖像進(jìn)行追蹤合并,獲得一組折線段;
步驟7-1,對于細(xì)節(jié)邊緣圖和深度邊緣圖中的每一條像素鏈,實(shí)施如下算法得到折線段:
步驟7-1-1,找到像素鏈的其中一個端點(diǎn)x,在x的上、下、左、右四個優(yōu)先方向?qū)ふ铱蛇B接像素,若這四個方向上存在像素,就被認(rèn)定為可連接像素,若優(yōu)先方向上不存在可連接像素,則在次優(yōu)方向上(左上,左下、右上、右下)尋找可連接像素。若存在多個可連接像素,則選取能與當(dāng)前像素組成最長線段的方向作為可連接方向。在可連接方向上找到該方向上的拐點(diǎn)像素,將其位置記錄下。
步驟7-1-2,將x指向步驟7-1-1中找到的拐點(diǎn)像素,
步驟7-1-3,重復(fù)以上步驟,直到x指向該像素鏈的另一個端點(diǎn)y。
步驟7-2,將細(xì)節(jié)邊緣圖生成的折線段集合和深度邊緣圖生成的折線段集合進(jìn)行合并
步驟7-3,為了增強(qiáng)邊緣的連續(xù)性,我們將2個像素的距離范圍內(nèi)且端點(diǎn)處的顏色偏差值小于一定閾值的折線段相連接,形成更長的折線段,其顏色偏差值計算函數(shù)如下:
其中a和b為像素端點(diǎn),Ra,Ga,Ba分別表示a處的紅色通道、綠色通道和藍(lán)色通道的值,Rb,Gb,Bb分別表示b處的紅色通道,綠色通道和藍(lán)色通道的值。
步驟8,對步驟(7)中的跟蹤結(jié)果進(jìn)行顏色采樣和貝塞爾曲線擬合,得到一組折線段;
其顏色采樣方法如下:對于一條折線段上的每個像素,沿著其在像素鏈上的法線方向的正方向一定偏移量的3*3像素區(qū)域內(nèi)采樣得到其眾數(shù)顏色,一定偏移量是指3個像素,完成采樣后,對折線進(jìn)行過濾,過濾原則為若某像素前后各5個像素內(nèi)相似顏色個數(shù)少于閾值(閾值為3個像素)則將該像素刪除。同理沿著折線段上的每個像素法向方向的負(fù)方向進(jìn)行相同的顏色采樣步驟。
其曲線擬合方法如下:所述貝塞爾曲線擬合方法如下:利用折線兩端切線方向作為中間控制點(diǎn)所在方向,通過最小二乘方法計算中間控制點(diǎn)位置,使貝塞爾曲線與折線段的偏差值最小。若貝塞爾曲線與折線段的最大偏差值大于閾值,則在該拐點(diǎn)處將折線段拆分,對拆分的折線段添加輔助點(diǎn)以保持貝塞爾曲線連續(xù)性,再分別進(jìn)行擬合,直到最大偏差值小于閾值。
三次貝塞爾曲線的表達(dá)式為:
B(t)=(1-t)3P0+3(1-t)2P1+3(1-t)2P2+t3P3
其中t為三次塞爾曲線的參數(shù),0≤t≤1,P0、P1、P2、P3表示4個控制點(diǎn);
步驟9,通過求解以步驟(8)中擴(kuò)散曲線上的顏色為約束的泊松方程,平滑地將顏色擴(kuò)散并填滿整個圖像空間,得到矢量化結(jié)果。