本發(fā)明涉及圖像處理領(lǐng)域,特別涉及一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法。
背景技術(shù):
近年來(lái),裸眼3d畫(huà)以其特殊的藝術(shù)表現(xiàn)、超強(qiáng)的視覺(jué)震撼力以及極具趣味的互動(dòng)性受到越來(lái)越多的關(guān)注與追捧,覆蓋了裝修,廣告,展會(huì),家居等多個(gè)領(lǐng)域,具有廣闊的發(fā)展前景。3d畫(huà)藝術(shù)可以分成墻畫(huà)、地畫(huà)、墻地畫(huà)、凹?jí)钱?huà)等。其中3d地畫(huà)以地面做為創(chuàng)作的載體,利用平面透視的原理在二維平面上制造出三維虛擬立體效果。3d地畫(huà)繪制時(shí)需要遵循反透視“近小遠(yuǎn)大”這種視錯(cuò)覺(jué)技術(shù)將不同距離的圖像在人眼視網(wǎng)膜中重疊在一個(gè)平面中,從而產(chǎn)生立體的錯(cuò)覺(jué)。因此裸眼3d立體畫(huà)要求觀賞者必須站在特定的角度才能達(dá)到最佳的視覺(jué)效果,若從其他角度觀看便體會(huì)不到對(duì)比強(qiáng)烈的視覺(jué)震撼效果。然而3d畫(huà)的施工圖設(shè)計(jì)是非常費(fèi)時(shí)費(fèi)力的,對(duì)畫(huà)家的經(jīng)驗(yàn)和水平也有著一定的要求。在傳統(tǒng)模式下,畫(huà)家需要熟練運(yùn)用繪畫(huà)中的各種透視關(guān)系,在地上或墻上畫(huà)出網(wǎng)格,在指定位置和視角上進(jìn)行模擬透視,標(biāo)記處關(guān)鍵點(diǎn)在網(wǎng)格上的位置,需要非常強(qiáng)的空間感才能繪制出一副好的3d畫(huà)。這種手工設(shè)計(jì)施工圖方式效率低下、技術(shù)門(mén)檻高、大大提高了創(chuàng)作成本。一些較低成本的新人畫(huà)師也因?yàn)槿狈?jīng)驗(yàn)無(wú)法獨(dú)立設(shè)計(jì)3d畫(huà),成為3d畫(huà)繪制行業(yè)的一個(gè)痛點(diǎn)。如何快速的基于用戶(hù)所需要的位置和視角以及可用的施工范圍設(shè)計(jì)出3d畫(huà)施工圖是目前急需解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法,所述方法能夠針對(duì)一幅3d畫(huà)效果圖一鍵生成對(duì)應(yīng)的施工圖,與傳統(tǒng)方法相比具有省時(shí)省力,節(jié)約設(shè)計(jì)時(shí)間和用戶(hù)成本等優(yōu)點(diǎn),提高了市場(chǎng)效率。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法,包括:
步驟1,接收用戶(hù)輸入的待處理3d畫(huà)圖像src、用戶(hù)選擇的3d畫(huà)種類(lèi)和所需參數(shù);所述3d畫(huà)種類(lèi)包括地畫(huà)、墻地畫(huà)和墻角畫(huà),所需參數(shù)包括可繪制場(chǎng)地的范圍、最佳觀測(cè)距離d和最佳觀測(cè)高度b;所述可繪制場(chǎng)地的范圍指各個(gè)方向的平面s的長(zhǎng)h和寬w;
步驟2,基于預(yù)設(shè)的三種3d畫(huà)示意圖在三維空間中的任一標(biāo)準(zhǔn)頂點(diǎn)坐標(biāo)(x0,y0,z0)、其所在平面s的長(zhǎng)h和寬w,計(jì)算得到用戶(hù)繪制場(chǎng)地的對(duì)應(yīng)點(diǎn)實(shí)際坐標(biāo)(x,y,z);計(jì)算完所有的頂點(diǎn)后,將結(jié)果存入集合t1;
步驟3,遍歷頂點(diǎn)坐標(biāo)集t1中y軸上值最小的點(diǎn),結(jié)合最佳觀測(cè)距離d和最佳觀測(cè)高度b,確定觀賞者視點(diǎn)的三維坐標(biāo)以及視覺(jué)感知平面p;
步驟4,計(jì)算坐標(biāo)集t1中的各頂點(diǎn)在視覺(jué)感知平面p上的投影坐標(biāo)集t2;
步驟5,將t2中的點(diǎn)變換成二維平面坐標(biāo)點(diǎn),得到集合t3,對(duì)t3進(jìn)行歸一化處理獲得新的坐標(biāo)點(diǎn)構(gòu)成集合t4;
步驟6,對(duì)輸入的3d畫(huà)圖像src進(jìn)行剪裁得到裁剪效果圖e,并將t4中的點(diǎn)的范圍映射到圖像e的像素坐標(biāo)范圍,處理完成后將所得到的點(diǎn)存入集合t5;
步驟7,根據(jù)所述3d畫(huà)種類(lèi)創(chuàng)建用于容納處理后的圖像的空白圖像集合dst;
步驟8,以面為單位,將t5中點(diǎn)的坐標(biāo)和dst中對(duì)應(yīng)的空白圖像的四個(gè)頂點(diǎn)的坐標(biāo)代入透視變換方程,求解得到變換矩陣a;
步驟9,將用戶(hù)輸入的待處理3d畫(huà)圖像src與繪制場(chǎng)地各方向平面s對(duì)應(yīng)的變換矩陣a相乘,得到映射到空白圖片dst[s]的坐標(biāo),將dst[s]的像素值設(shè)置為圖像e對(duì)應(yīng)點(diǎn)的像素值,將集合dst內(nèi)的所有圖像作為3d施工圖輸出。
基于預(yù)設(shè)的三種3d畫(huà)示意圖在三維空間中的任一標(biāo)準(zhǔn)頂點(diǎn)坐標(biāo)(x0,y0,z0)、其所在平面s的長(zhǎng)h和寬w,計(jì)算得到用戶(hù)繪制場(chǎng)地的對(duì)應(yīng)點(diǎn)實(shí)際坐標(biāo)(x,y,z),其計(jì)算方式如下:
1)平面s是墻地畫(huà)類(lèi)型中的墻畫(huà)時(shí),計(jì)算方式如下:
x=wx0
y=y(tǒng)0
z=hz0
2)平面s是墻角畫(huà)類(lèi)型中的墻畫(huà)時(shí),計(jì)算方式如下:
x=wx0
y=wy0
z=hz0
3)平面s是地畫(huà)、墻地畫(huà)或墻角畫(huà)類(lèi)型中的地畫(huà)時(shí),計(jì)算方式如下:
x=wx0
y=hy0
z=z0。
所述步驟3包括:
遍歷頂點(diǎn)坐標(biāo)集t1中y軸上值最小的點(diǎn)記為p1(x1,y1,z1),進(jìn)而得到觀賞者視點(diǎn)的坐標(biāo)值為p2(x1+d,y1,z1+b);
沿p1p2連線(xiàn)上任一點(diǎn)作平行于由x軸z軸和原點(diǎn)o確定的xoz平面,作為視覺(jué)感知平面p。
所述計(jì)算坐標(biāo)集t1中的各頂點(diǎn)在視覺(jué)感知平面p上的投影坐標(biāo)集t2,包括:
根據(jù)透視原理,t1中的頂點(diǎn)坐標(biāo)(x,y,z)與投影到p上的坐標(biāo)(xp,yp,zp)存在著相似三角形的關(guān)系,用
所述步驟5包括:
將y軸坐標(biāo)值舍去,令yp=zp,得到(xp,yp)集合t3;
對(duì)t3進(jìn)行最大最小歸一化,找到坐標(biāo)值的最大值和最小值xmax,xmin,ymax,ymin,使用如下公式歸一化:
新的坐標(biāo)點(diǎn)
所述對(duì)輸入的3d畫(huà)圖像src進(jìn)行剪裁得到裁剪效果圖e,包括:
設(shè)輸入圖像src的高和寬分別為k和l,計(jì)算
計(jì)算
比較t1和t2,如果t1>t2,則將對(duì)輸入的3d畫(huà)圖像src的兩邊各裁去
所述將t4中的點(diǎn)的范圍映射到圖像e的像素坐標(biāo)范圍,處理完成后將所得到的點(diǎn)存入集合t5,包括:
將t4中各點(diǎn)的坐標(biāo)值
其中,k′和l′分別表示剪裁后的圖片的寬和高,處理完成后將所得到的的點(diǎn)
所述根據(jù)所述3d畫(huà)種類(lèi)創(chuàng)建用于容納處理后的圖像的空白圖像集合dst,包括:
按照用戶(hù)輸入的3d畫(huà)種類(lèi)創(chuàng)建圖像的個(gè)數(shù);若選擇的是地畫(huà),創(chuàng)建一個(gè)空白圖像,若選擇的是墻地畫(huà),創(chuàng)建兩個(gè)空白圖像,若選擇的是墻角畫(huà),創(chuàng)建三個(gè)空白圖像;
令圖像的比例和用戶(hù)輸入的對(duì)應(yīng)面的高寬比例相同,短邊設(shè)置為500像素,如果短邊為高,則長(zhǎng)邊為
所述步驟8包括:
以面為單位,將t5中的點(diǎn)的坐標(biāo)和dst中對(duì)應(yīng)的空白圖像的四個(gè)頂點(diǎn)的坐標(biāo)代入透視變換方程,求解得到所需的變換矩陣;
對(duì)于點(diǎn)(u,v)的透視變換如下所示:
其中,
由上述變換公式得到:
令變換所需的4組對(duì)應(yīng)點(diǎn)表示為:(0,0)→(x0,y0),(1,0)→(x1,y1),(1,1)→(x2,y2),(0,1)→(x3,y3);則根據(jù)變換公式可以得到:
a31=x0
a11+a31-a13x1=x1
a11+a21+a31-a13x2-a23x2=x2
a21+a31-a23x3=x3
a32=y(tǒng)0
a12+a32-a13y1=y(tǒng)1
a12+a22+a32-a23y2-a23y2=y(tǒng)2
a22+a32-a23y3=y(tǒng)3
由此可以得到:
a11=x1-x0+a12x1
a21=x3-x0+a12x2
a31=x0
a12=y(tǒng)1-y0+a13y1
a22=y(tǒng)3-y0+a23y3
a32=y(tǒng)0
由此得到變換矩陣a。
所述步驟9包括:
用dst[s]表示在集合dst中平面s所對(duì)應(yīng)的圖片;對(duì)于所需處理的每一個(gè)平面s應(yīng)用對(duì)應(yīng)的變換矩陣a,將s與變換矩陣a相乘,得到映射到步驟7所建立的對(duì)應(yīng)的空白圖片dst[s]的坐標(biāo);將dst[s]的像素值設(shè)置為圖像e對(duì)應(yīng)點(diǎn)的像素值,得到集合dst內(nèi)的所有圖像作為最終的施工圖輸出。
本發(fā)明具有如下有益效果:
(1)本發(fā)明提出一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法,包括對(duì)3d畫(huà)各種類(lèi)型進(jìn)行建模,對(duì)3d畫(huà)模型進(jìn)行透視變換,對(duì)輸入的3d畫(huà)效果圖進(jìn)行裁剪,根據(jù)模型透視投影結(jié)果和繪制場(chǎng)地信息求變換矩陣;對(duì)裁剪后的3d畫(huà)效果圖使用變換矩陣進(jìn)行透視變換,最后輸出基于場(chǎng)地信息的3d畫(huà)施工圖;
(2)本發(fā)明方法適應(yīng)于地畫(huà)、墻地畫(huà)、墻角畫(huà)等各種類(lèi)型的3d畫(huà)藝術(shù)形式;
(3)本發(fā)明方法使用方便,可以批量處理和自動(dòng)生成,緩解了傳統(tǒng)彩繪創(chuàng)作和施工中設(shè)計(jì)周期長(zhǎng)的行業(yè)痛點(diǎn),同時(shí)可以讓經(jīng)驗(yàn)較少的畫(huà)師快速掌握3d畫(huà)的設(shè)計(jì)技巧,從而促進(jìn)彩繪制作行業(yè)的繁榮。
以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明,但本發(fā)明的一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法不局限于實(shí)施例。
附圖說(shuō)明
圖1為本發(fā)明方法的流程圖;
圖2為本發(fā)明方法的三種不同類(lèi)型3d畫(huà)示意圖一;
圖3為本發(fā)明方法的三種不同類(lèi)型3d畫(huà)示意圖二;
圖4為本發(fā)明方法的墻地畫(huà)的坐標(biāo)設(shè)置圖;
圖5為本發(fā)明方法的墻地畫(huà)的坐標(biāo)設(shè)置圖;
圖6為本發(fā)明方法的地畫(huà)的坐標(biāo)設(shè)置圖;
圖7為本發(fā)明方法的透視原理圖一;
圖8為本發(fā)明方法的透視原理圖二;
圖9為本發(fā)明方法的坐標(biāo)集t1中的各頂點(diǎn)在視覺(jué)感知平面p上的投影坐標(biāo)圖;
圖10為本發(fā)明方法的以地面為例的透視投影圖。
具體實(shí)施方式
如圖1所示,本發(fā)明一種基于透視變換的3d畫(huà)施工圖自動(dòng)生成方法,包括如下步驟:
步驟101,接收用戶(hù)輸入的待處理3d畫(huà)圖像src、用戶(hù)選擇的3d畫(huà)種類(lèi)和所需參數(shù)。
本方法需要用戶(hù)輸入待處理的3d畫(huà)效果圖、選擇對(duì)應(yīng)的3d畫(huà)種類(lèi)以及所需參數(shù)。令用戶(hù)輸入的3d畫(huà)效果圖記為src,可選的3d畫(huà)類(lèi)型包括地畫(huà),墻地畫(huà),墻角畫(huà);可繪制場(chǎng)地的范圍即各個(gè)方向的平面s的長(zhǎng)h和寬w;最佳觀測(cè)距離d;最佳觀測(cè)高度b。
步驟102,計(jì)算繪制場(chǎng)地的空間三維坐標(biāo)(x,y,z)。
如圖2-6所示,本實(shí)施例首先預(yù)設(shè)了三種不同類(lèi)型3d畫(huà)示意圖,其中圖2和3是不同視角的3d畫(huà)示意圖,圖4-6是示意圖的坐標(biāo)設(shè)置。
圖4-6中,3d畫(huà)示意圖在三維空間中的頂點(diǎn)坐標(biāo)分別為:
地畫(huà):
地面:(-0.5,0,0),(0.5,0,0),(0.5,1,0),(-0.5,1,0);
墻地畫(huà):
地面:(-0.5,0,0),(0.5,0,0),(0.5,1,0),(-0.5,1,0)
墻面:(-0.5,1,0),(0.5,1,0),(0.5,1,1),(-0.5,1,1)
墻角畫(huà):
地面:(0,0.7071,0),(0.7071,0,0),(0,-0.7071,0),(-0.7071,0,0)
墻面1:(-0.7071,0,0),(0,0.7071,0),(0,0.7071,1),(-0.7071,0,1)
墻面2:(0,0.7071,0),(0.7071,0,0),(0.7071,0,1),(0,0.7071,1)
基于上述任一標(biāo)準(zhǔn)頂點(diǎn)坐標(biāo)(x0,y0,z0)可以計(jì)算得到用戶(hù)繪制場(chǎng)地的對(duì)應(yīng)點(diǎn)實(shí)際坐標(biāo)(x,y,z)。不同類(lèi)型的頂點(diǎn)計(jì)算公式不同,分別如下:
1)畫(huà)面s是墻地畫(huà)類(lèi)型中的墻畫(huà)時(shí),
x=wx0
y=y(tǒng)0
z=hz0
2)畫(huà)面s是墻角畫(huà)類(lèi)型中的墻畫(huà)時(shí),
x=wx0
y=wy0
z=hz0
3)平面s是地畫(huà)、墻地畫(huà)或墻角畫(huà)類(lèi)型中的地畫(huà)時(shí),
x=wx0
y=hy0
z=z0
計(jì)算完所有的點(diǎn)后,將這些結(jié)果存入集合t1。
步驟103,確定觀賞者視點(diǎn)的三維坐標(biāo)以及視覺(jué)感知平面p。
觀賞者視點(diǎn)由用戶(hù)輸入的最佳觀測(cè)距離d和最佳觀測(cè)高度b確定。該點(diǎn)的三維坐標(biāo),以及視覺(jué)感知平面p確定如下:首先遍歷頂點(diǎn)坐標(biāo)集t1中y軸值最小的點(diǎn)(即位置上最向外的點(diǎn))記為p1(x1,y1,z1),進(jìn)而得到觀賞者視點(diǎn)的坐標(biāo)值為p2(x1+d,y1,z1+b)。把p1p2連線(xiàn)上任一點(diǎn)(假設(shè)距視點(diǎn)p2的長(zhǎng)度為n)作平行于由x軸z軸和原點(diǎn)o確定的xoz平面,即確定了視覺(jué)感知平面p。
步驟104,計(jì)算坐標(biāo)集t1中的各頂點(diǎn)在視覺(jué)感知平面p上的投影坐標(biāo)。
如圖7-10所示,根據(jù)透視原理,t1中的頂點(diǎn)坐標(biāo)(x,y,z)與投影到p上的坐標(biāo)(xp,yp,zp)存在著相似三角形的關(guān)系,即存在
步驟105,將t2中的點(diǎn)變換成二維平面坐標(biāo)點(diǎn),并歸一化處理。
由于t2中的所有的點(diǎn)都處于視覺(jué)感知平面p上,并且該平面平行于xoz平面,所以t2中所有點(diǎn)的y坐標(biāo)值都相等。于是將y軸坐標(biāo)值舍去,并讓yp=zp,得到(xp,yp)集合t3,然后對(duì)t3進(jìn)行最大最小歸一化,即找到坐標(biāo)值的最大值和最小值(xmax,xmin,ymax,ymin),并使用如下公式歸一化,
新的坐標(biāo)點(diǎn)
步驟106,對(duì)輸入圖像src進(jìn)行剪裁得到裁剪效果圖e,并對(duì)t4中的點(diǎn)進(jìn)行變換處理。
設(shè)輸入圖像src的高和寬分別為k和l,計(jì)算
k′和l′為剪裁后的圖片的寬和高。處理完成后將所得到的的點(diǎn)
步驟107,創(chuàng)建用于容納處理后的圖像的空白圖像集合dst。
這里創(chuàng)建圖像的個(gè)數(shù)需按照用戶(hù)選擇的3d畫(huà)類(lèi)型來(lái)定:若選擇的是地畫(huà),創(chuàng)建一個(gè)空白圖像;選擇的是墻地畫(huà),創(chuàng)建兩個(gè)空白圖像;選擇的是墻角畫(huà),創(chuàng)建三個(gè)空白圖像。圖像的比例和用戶(hù)輸入的對(duì)應(yīng)面的高寬比例相同,短邊設(shè)置為500像素,如果短邊為高,則長(zhǎng)邊為
步驟108,求解所需的變換矩陣。
以面為單位,使用t5中的點(diǎn)的坐標(biāo)和dst中對(duì)應(yīng)的空白圖像的四個(gè)頂點(diǎn)的坐標(biāo)代入透視變換方程,求解得到所需的變換矩陣。
對(duì)于點(diǎn)(u,v)的透視變換如下所示,:
式中u,v對(duì)應(yīng)的是裁剪圖像e中的像素點(diǎn)的坐標(biāo)
假設(shè)變換所需的4組對(duì)應(yīng)點(diǎn)可以表示為:(0,0)→(x0,y0),(1,0)→(x1,y1),(1,1)→(x2,y2),(0,1)→(x3,y3)
則根據(jù)變換公式可以得到:
a31=x0
a11+a31-a13x1=x1
a11+a21+a31-a13x2-a23x2=x2
a21+a31-a23x3=x3
a32=y(tǒng)0
a12+a32-a13y1=y(tǒng)1
a12+a22+a32-a23y2-a23y2=y(tǒng)2
a22+a32-a23y3=y(tǒng)3
由此可以得到:
a11=x1-x0+a12x1
a21=x3-x0+a12x2
a31=x0
a12=y(tǒng)1-y0+a13y1
a22=y(tǒng)3-y0+a23y3
a32=y(tǒng)0
以上是變換矩陣a每個(gè)元素的求解公式,由此得到變換矩陣a。
步驟109,輸出施工圖dst。
本實(shí)施例中用dst[s]表示在集合dst中面s所對(duì)應(yīng)的圖片。對(duì)于所需處理的每一個(gè)面s應(yīng)用對(duì)應(yīng)的變換矩陣a,即s與變換矩陣a相乘,得到映射到步驟107所建立的對(duì)應(yīng)的空白圖片dst[s]的坐標(biāo)。將dst[s]的像素值設(shè)置為步驟106處理得到的圖像e對(duì)應(yīng)點(diǎn)的像素值即可,則集合dst內(nèi)的所有圖像就是最終想要的施工圖。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。