本發明涉及3d打印領域,尤其涉及一種改進的面向3d打印自定義模型立體二維碼生成方法及系統。
背景技術:
二維碼(two-dimensionalcode),又稱快速響應碼(quickresponsecode),是在條形碼技術基礎上擴展出的一種具有可讀性的條碼。二維碼利用黑白正方形模塊對大量信息進行編碼,通過設備掃描可快速傳達出其所包含的信息。二維碼以其便捷的獲取信息、網站跳轉、推送廣告、防偽促銷以及手機支付等強大功能的優勢,已經成為信息時代應用最為廣泛的自動識別技術,被廣泛應用于產品溯源、景點門票、運輸管理以及會議服務等各個領域。而已有的二維碼生成技術,大多面向的是數字圖像。
3d打印(3dprinting),又稱增材制造(additivemanufacturing,am),是一種快速成形技術,它以數字化模型為基礎,運用塑料、陶瓷、金屬等可粘合材料,擺脫傳統的減式材料制造模式,通過逐層打印的方式構造物體。由于其在制造工藝方面的創新,被認為是“第三次工業革命的重要生產工具”。隨著3d打印技術的迅速發展,目前已經出現使用兩種顏色的材料打印在平面上的立體二維碼,但主流的消費級3d打印機只能打印單一屬性的材料,即只能提供單一顏色,不滿足二維碼解碼需要高對比度的前景色和背景色兩種顏色的特性,另外,由于空間畸變在任意曲面上表達的立體二維碼識別率較低,因此,使用單一屬性成型材料的3d打印機在任意三維模型上制造立體二維碼的技術還不夠成熟。
目前雖然有面向3d打印的自定義模型立體二維碼生成方法,比如:申請號為cn201710031940.0的專利,該申請通過對自定義三維模型進行幾何與結構分析,在適合打印立體二維碼的目標區域根據透視投影變換的結果進行凹陷操作生成可用單一屬性成型材料的3d打印機制造的立體二維碼。但是,該方法用于生成立體二維碼的目標區域通過幾何與結構分析給出,并非完全由用戶指定,而且這些目標區域往往是曲率變化比較小的區域。而在曲率變化比較大的目標區域,該方法生成的立體二維碼由于黑色和白色模塊之間的顏色對比度不足不容易被解碼器成功解碼。
技術實現要素:
為了解決現有技術的不足,本發明提供了一種改進的面向3d打印自定義模型立體二維碼生成方法,該方法首先采用透視投影變換將二維碼映射到自定義3d模型的目標區域,并根據變換結果進行統一深度的凹陷操作,然后計算立體二維碼每一點的可見性,并根據物理實驗獲得的可見性和灰度值之間的關系模擬出真實的二維碼圖像,隨后根據模擬的結果調整立體二維碼每個黑色模塊的深度,使得二維碼前景色和背景色的對比度增強,從而提高解碼成功率,最后生成可通過單一屬性成型材料的3d打印機制造的包含立體二維碼的三維模型。
本發明的一種改進的面向3d打印自定義模型立體二維碼生成方法,包括:
對自定義3d模型進行網格化和歸一化處理;
采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域;
根據映射結果進行凹陷操作,在自定義3d模型表面生成具有相同凹陷深度的立體二維碼;
物理實驗模擬真實的二維碼圖像,計算出立體二維碼的整體對比度和每個黑色模塊的對比度;
根據模擬結果優化立體二維碼黑色模塊的深度,在自定義3d模型表面生成立體二維碼;
將生成的含有立體二維碼的3d模型輸入至3d打印機,并利用單一材料進行打印,最后輸出帶有立體二維碼的3d實物。
進一步的,在根據映射結果進行凹陷操作之前,還包括:
對自定義3d模型的目標區域的網格進行重新三角化,使得映射到3d模型的目標區域的二維碼網格和用戶給定的3d模型網格融合在一起。
進一步的,對自定義3d模型進行網格化和歸一化處理的具體過程包括:
使用基于lloyd松弛的重采樣算法在自定義3d模型表面求得離散采樣點,通過3ddelaunay三角剖分方法實現對輸入的自定義3d模型的網格化;
使用離差標準化方法,對網格化后自定義三維模型的數據進行線性變換,將3d模型三角網格上每個點的三維坐標分量均映射到[0-1]之間。
其中,使用基于lloyd松弛的重采樣算法在自定義3d模型表面,能夠求得具有各向同性、過渡光滑且視覺效果較好的離散采樣點,這樣能夠提高最后打印的立體二維碼的精度。
進一步的,采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域的具體過程包括:
根據3d打印機的打印精度,得到目標區域的最小面積;
確定透視投影變換的關系,進而獲得視點和視平面所在位置;
將二維碼放置在視平面上,并把其上的每個正方形模塊網格化為兩個三角形,從視點發出一系列射線,射線穿過二維碼網格的頂點投射到三維模型,從而在3d模型表面的目標區域生成二維碼三角網格,將對應于二維碼黑色模塊的3d模型表面的二維碼三角網格標記為黑色,代表這些三角網格需要進行凹陷操作。
進一步的,對自定義3d模型的目標區域的網格進行重新三角化的具體過程為:
將目標區域與射線相交的三角面片全部刪除獲得一個帶洞的三維模型,然后獲得洞的邊界,將洞的邊界與二維碼三角網格的邊界之間的部分采用2ddelaunay三角剖分方法進行重新三角化。
進一步的,物理實驗模擬真實的二維碼圖像之前,還包括計算立體二維碼的每一點的可見性,其具體過程為:
假設只有環境光,相當于將立體二維碼放置在積分球內;
將3d模型進行切片處理,求得立體二維碼上每一點沿著透視投影方向在每一層上交點在每一層輪廓的可見多邊形;
根據girard理論的推論求得立體二維碼上每一點可見球面多邊形的面積;
任一點可見的積分球面積與積分球整體面積之比,得到當前點的可見性。
進一步的,物理實驗模擬真實的二維碼圖像的具體過程為:
將一個預設像素值的二值圖劃分成若干個區域,將該二值圖通過透視投影變換映射到模型表面,再凹陷相應的深度得到與劃分區域數量相等的大小不同的洞;
求得每個洞中心點的可見性并從物理模型照片中獲得相應位置的平均灰度值作為中心點的灰度值,通過對可見性與灰度值擬合曲線獲得它們之間的關系;
將立體二維碼每一點的可見性通過可見性和灰度值之間的關系映射為立體二維碼該點處的灰度值,最終即可獲得模擬出的真實二維碼圖像每個像素的灰度值。
本發明根據物理實驗獲得的可見性和灰度值之間的關系模擬出真實的二維碼圖像,隨后根據模擬的結果調整立體二維碼每個黑色模塊的深度,使得二維碼前景色和背景色的對比度增強,從而提高了解碼成功率。
本發明還提供了一種改進的面向3d打印自定義模型立體二維碼生成系統。
本發明的一種改進的面向3d打印自定義模型立體二維碼生成系統,包括:
網格化和歸一化處理模塊,其用于對自定義3d模型進行網格化和歸一化處理;
映射模塊,其用于采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域;
凹陷模塊,其用于根據映射結果進行凹陷操作,在自定義3d模型表面生成具有相同凹陷深度的立體二維碼;
模擬模塊,其用于物理實驗模擬真實的二維碼圖像,計算出立體二維碼的整體對比度和每個黑色模塊的對比度;
優化模塊,其用于根據模擬結果優化立體二維碼黑色模塊的深度,在自定義3d模型表面生成立體二維碼;
打印模塊,其用于將生成的含有立體二維碼的3d模型輸入至3d打印機,并利用單一材料進行打印,最后輸出帶有立體二維碼的3d實物。
進一步的,該系統還包括:
重新三角化模塊,其用于在根據映射結果進行凹陷操作之前,對自定義3d模型的目標區域的網格進行重新三角化,使得映射到3d模型的目標區域的二維碼網格和用戶給定的3d模型網格融合在一起。
進一步的,所述網格化和歸一化處理模塊包括:
網格化模塊,其用于使用基于lloyd松弛的重采樣算法在自定義3d模型表面求得離散采樣點,通過3ddelaunay三角剖分方法實現對輸入的自定義3d模型的網格化;
線性變換模塊,其用于使用離差標準化方法,對網格化后自定義三維模型的數據進行線性變換,將3d模型三角網格上每個點的三維坐標分量均映射到[0-1]之間。
進一步的,所述映射模塊包括:
目標區域的最小面積計算模塊,其用于根據3d打印機的打印精度,得到目標區域的最小面積;
視點和視平面位置確定模塊,其用于確定透視投影變換的關系,進而獲得視點和視平面所在位置;
二維碼三角網格標記模塊,其用于將二維碼放置在視平面上,并把其上的每個正方形模塊網格化為兩個三角形,從視點發出一系列射線,射線穿過二維碼網格的頂點投射到三維模型,從而在3d模型表面的目標區域生成二維碼三角網格,將對應于二維碼黑色模塊的3d模型表面的二維碼三角網格標記為黑色,代表這些三角網格需要進行凹陷操作。
進一步的,該系統還包括:可見性計算模塊,其用于假設只有環境光,相當于將立體二維碼放置在積分球內;將3d模型進行切片處理,求得立體二維碼上每一點沿著透視投影方向在每一層上交點在每一層輪廓的可見多邊形;根據girard理論的推論求得立體二維碼上每一點可見球面多邊形的面積;任一點可見的積分球面積與積分球整體面積之比,得到當前點的可見性。
進一步的,所述模擬模塊包括:
模型表面洞獲取模塊,其用于將一個預設像素值的二值圖劃分成若干個區域,將該二值圖通過透視投影變換映射到模型表面,再凹陷相應的深度得到與劃分區域數量相等的大小不同的洞;
可見性與灰度值關系計算模塊,其用于求得每個洞中心點的可見性并從物理模型照片中獲得相應位置的平均灰度值作為中心點的灰度值,通過對可見性與灰度值擬合曲線獲得它們之間的關系;
灰度值計算模塊,其用于將立體二維碼每一點的可見性通過可見性和灰度值之間的關系映射為立體二維碼該點處的灰度值,最終即可獲得模擬出的真實二維碼圖像每個像素的灰度值。
與現有技術相比,本發明的有益效果是:
(1)本發明可以由用戶指定任意的目標區域,并且在曲率變化比較大的目標區域仍然可以形成足夠的對比度,提高了在任意三維模型上生成的立體二維碼的解碼成功率,最終生成的立體二維碼明顯優于現有3d技術打印出的二維碼。
(2)本發明首先采用透視投影變換將二維碼映射到自定義3d模型的目標區域,并根據變換結果進行統一深度的凹陷操作,然后計算立體二維碼每一點的可見性,并根據物理實驗獲得的可見性和灰度值之間的關系模擬出真實的二維碼圖像,隨后根據模擬的結果調整立體二維碼每個黑色模塊的深度,使得二維碼前景色和背景色的對比度增強,從而提高解碼成功率,最后生成可通過單一屬性成型材料的3d打印機制造的包含立體二維碼的三維模型。
(3)本發明生成的立體二維碼在每個黑色模塊的凹陷深度均可達到最優,大大減少了3d打印過程中所需的支撐結構。
(4)本發明通過采用不同凹陷深度在用戶指定的任意三維模型的目標區域生成立體二維碼,使得二維碼可很容易地通過單一屬性成型材料的3d打印機制造出來,其產生的吸引力可以帶來一定的商業價值。
附圖說明
構成本申請的一部分的說明書附圖用來提供對本申請的進一步理解,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。
圖1為本發明的改進的面向3d打印自定義模型立體二維碼生成方法流程圖;
圖2為采用透視投影變換將普通二維碼映射到三維模型bunny某一目標區域的結果圖;
圖3為對目標區域網格進行重新三角化使得映射到三維模型目標區域的二維碼網格和用戶給定的三維模型網格融合后的結果圖;
圖4為通過透視投影變換在目標區域生成凹陷統一深度的立體二維碼示意圖;
圖5為包含立體二維碼的三維模型切片后每一層上可見性多邊形求解示意圖;
圖6(a)為立體二維碼上點p′各個切片層經緯度坐標下的可見球面多邊形;
圖6(b)為對點p′處各個切片層經緯度坐標下的可見球面多邊形求交獲得的該點最終的可見球面多邊形;
圖7為采用白色pla材料的打印機獲得的物理實驗模型效果圖;
圖8為可見性與灰度值散點圖及擬合曲線結果圖;
圖9為本發明的改進的面向3d打印自定義模型立體二維碼生成系統的結構示意圖;
圖10為網格化和歸一化處理模塊的結構示意圖;
圖11為映射模塊的結構示意圖;
圖12為模擬模塊的結構示意圖。
具體實施方式
應該指出,以下詳細說明都是例示性的,旨在對本申請提供進一步的說明。除非另有指明,本文使用的所有技術和科學術語具有與本申請所屬技術領域的普通技術人員通常理解的相同含義。
需要注意的是,這里所使用的術語僅是為了描述具體實施方式,而非意圖限制根據本申請的示例性實施方式。如在這里所使用的,除非上下文另外明確指出,否則單數形式也意圖包括復數形式,此外,還應當理解的是,當在本說明書中使用術語“包含”和/或“包括”時,其指明存在特征、步驟、操作、器件、組件和/或它們的組合。
本發明中三角面片是通過三角剖分進行網格化處理之后得到的三角網格的基本單位,由空間中三個不共線的頂點順次連接而成,可以理解為三角形,三角形內部區域為三角面片。
圖1為本發明的改進的面向3d打印自定義模型立體二維碼生成方法流程圖。
如圖1所示,本發明的改進的面向3d打印自定義模型立體二維碼生成方法,至少包括:
步驟(1):對自定義3d模型進行網格化和歸一化處理。
具體地,對自定義3d模型進行網格化和歸一化處理的具體過程包括:
步驟(1-1):使用基于lloyd松弛的重采樣算法在自定義3d模型表面求得離散采樣點,通過3ddelaunay三角剖分方法實現對輸入的自定義3d模型的網格化;
步驟(1-2):使用離差標準化方法,對網格化后自定義三維模型的數據進行線性變換,將3d模型三角網格上每個點的三維坐標分量均映射到[0-1]之間。
其中,使用基于lloyd松弛的重采樣算法在自定義3d模型表面,能夠求得具有各向同性、過渡光滑且視覺效果較好的離散采樣點,這樣能夠提高最后打印的立體二維碼的精度。
步驟(2):采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域。
具體地,采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域的具體過程包括:
步驟(2-1):根據3d打印機的打印精度p,設置p的初始值,得到目標區域的最小面積amin:
amin=[(v-1)*4+21]*p
其中v是輸入的二維碼的版本號,二維碼共有40個版本,版本1是由21*21個黑色或白色的正方形模塊構成的矩陣,之后版本號每增加1,二維碼的每行每列均增加4個正方形模塊。由用戶在自定義3d模型表面指定一塊面積大于amin的區域作為目標區域。
步驟(2-2):確定透視投影變換的關系,獲得視點和視平面所在位置。
所述步驟(2-2)中,具體包括以下步驟:
(2-2-1):計算目標區域的面積darea;
(2-2-2):確定目標區域與和視平面之間的距離;
(2-2-3):確定視平面的位置;
(2-2-4):確定透視投影變換,將普通二維碼映射到目標區域,具體為:
(2-2-4-a):根據視平面和目標區域的位置關系,確定視點所在的位置,建立透視投影變換;
(2-2-4-b):將普通二維碼放置于視平面上,根據確定的透視投影變換關系,將普通二維碼映射到目標區域。
所述步驟(2-2-2)的具體方法為:實驗表明,當掃描距離和普通二維碼大小比例為10:1時,大多數解碼器可以成功解碼,由于使用單一材料3d打印的二維碼受光照、前景背景色對比度等的影響,可以設置比例r的初始值為8:1,用戶可根據實際情況進行相應調整,從而計算出目標區域和視平面之間的距離:
dis=darea/r
所述步驟(2-2-3)的具體方法為:設置視平面的大小為解碼器識別框的大小,初始值為4cm*4cm,用戶可根據實際情況進行相應的調整,視平面垂直于目標區域的法線方向且視平面的中點位于目標區域的法線方向上。
步驟(2-3):將二維碼放置在視平面上,并把其上的每個正方形模塊網格化為兩個三角形,從視點發出一系列射線,射線穿過二維碼網格的頂點投射到三維模型,從而在目標區域生成三維模型表面的二維碼三角網格,將對應于二維碼黑色模塊的三維模型表面的二維碼三角網格標記為黑色,代表這些三角網格需要進行凹陷操作。圖2即為采用透視投影變換將普通二維碼映射到三維模型bunny某一目標區域的結果圖。如圖4所示,三維模型表面的二維碼三角網格的頂點可以通過射線穿過二維碼頂點與目標區域三角網格的面片求交獲得。求解過程如下:
s+td=(1-u-v)v0+uv1+vv2(1)
其中,c是視點位置,即為射線的起點坐標,s為二維碼圖像上正方形模塊頂點的坐標,t為射線方程中的參數,d=s-c是射線的方向,v0,v1,v2為目標區域三角面片的三個頂點,u,v為交點的紋理坐標值。令e1=v1-v0,e2=v2-v0,t=s-v0,求解(1)式即為求解線性方程組(2)
根據gramer法則可解得:
其中p=d×e2,q=t×e2。再將紋理坐標值(u,v)轉化為直角坐標系坐標即可得到最終三維模型表面的二維碼三角網格的頂點坐標p。
步驟(3):根據映射結果進行凹陷操作,在自定義3d模型表面生成具有相同凹陷深度的立體二維碼。
具體實施中,在根據映射結果進行凹陷操作之前,還包括:
對自定義3d模型的目標區域的網格進行重新三角化,使得映射到3d模型的目標區域的二維碼網格和用戶給定的3d模型網格融合在一起。
具體地,對自定義3d模型的目標區域的網格進行重新三角化的具體過程為:
將目標區域與射線相交的三角面片全部刪除獲得一個帶洞的三維模型,然后獲得洞的邊界,將洞的邊界與二維碼三角網格的邊界之間的部分采用2ddelaunay三角剖分方法進行重新三角化。圖3即為對目標區域網格進行重新三角化使得映射到三維模型目標區域的二維碼網格和用戶給定的三維模型網格融合后的結果圖,其中紅色區域的三角網格為將目標區域與射線相交的三角面片全部刪除后洞邊界與二維碼三角網格的邊界之間的部分采用2ddelaunay三角剖分方法進行重新三角化的結果。
步驟(4):物理實驗模擬真實的二維碼圖像,計算出立體二維碼的整體對比度和每個黑色模塊的對比度。
具體實施中,物理實驗模擬真實的二維碼圖像之前,還包括計算立體二維碼的每一點的可見性,其具體過程為:
步驟(4-1-a):假設只有環境光,相當于將立體二維碼放置在積分球內。積分球即一個內壁涂油白色漫反射材料的空腔球體,球內壁上涂以理想的漫反射材料,也就是漫反射系數接近于1的材料,這樣通過球壁上的窗孔進入積分球的光經過內壁涂層多次反射,在內壁上會形成均勻照度。
步驟(4-1-b):三維模型進行切片處理,獲得每一層的輪廓,求得立體二維碼上每一點沿著透視投影方向在每一層上交點q在每一層輪廓的可見多邊形p′。如圖5所示,藍色的圓圈即為立體二維碼上每一點沿著透視投影方向在一層上的交點q,彩色多邊形輪廓即為切片處理后該層的輪廓,黑色多邊形為該層的可見多邊形p′。可見多邊形p′滿足在其內部的每個點r,都有邊qr不與任何輪廓相交。將該可見多邊形p′投射到球面上求得可見球面多邊形上每個頂點的三維直角坐標。將球面多邊形每個頂點三維直角坐標轉換為經緯度坐標,計算這些球面多邊形的交集得到最終該點的可見球面多邊形p。如圖6(a)所示,立體二維碼上點p′各個切片層經緯度坐標下的可見球面多邊形;如圖6(b)所示,為對點p′處各個切片層經緯度坐標下的可見球面多邊形求交獲得的該點最終的可見球面多邊形p。
步驟(4-1-c):根據girard理論的推論求得立體二維碼上每一點可見球面多邊形p的面積ap′:
ap′=r2*e
其中r為積分球的半徑
其中,α1,α2,...,αn為球面多邊形a1a2...an對應的內角角度值。
步驟(4-1-d):計算立體二維碼每一點處的可見性vp′,即在該點可見的積分球面積ap′與積分球整體面積as之比。
其中as=4*π*r2。
具體地,物理實驗模擬真實的二維碼圖像的具體過程為:
步驟(4-2-a):設計一個大小為200×200像素的二值圖,將其分為8×8的區域,每個區域包含25×25個像素,從左往右每列的每個區域放置大小為(2i+1)×(2i+1)i=1,2…,8的黑色像素塊,然后建立一個8cm×8cm×2cm的立方體,從上到下設置每行的每個區域深度均為
步驟(4-2-b):求得每個洞中心點的可見性vh并從采用白色pla材料的打印機獲得的物理模型照片中獲得相應位置的平均灰度值gh作為中心點的灰度值,通過對可見性與灰度值擬合曲線獲得它們之間的關系。圖7即為采用白色pla材料的打印機獲得的物理實驗模型效果圖;圖8為可見性與灰度值散點圖及擬合曲線結果圖。
步驟(4-2-c):將立體二維碼每一點的可見性vp′通過可見性和灰度值之間的關系映射為立體二維碼該點處的灰度值gp′,最終即可獲得模擬出的真實二維碼圖像每個像素的灰度值gj。
本發明根據物理實驗獲得的可見性和灰度值之間的關系模擬出真實的二維碼圖像,隨后根據模擬的結果調整立體二維碼每個黑色模塊的深度,使得二維碼前景色和背景色的對比度增強,從而提高了解碼成功率。
其中,計算立體二維碼的整體對比度和每個黑色模塊的對比度的具體過程為:
步驟(4-3-a):計算每個黑色模塊的灰度
其中j為黑色模塊bi或白色模塊wi的一個像素,wj為通過高斯核求得的像素j處的權重值,gj為像素j處的灰度值。
步驟(4-3-b):計算立體二維碼整體對比度為:
c=gw-gbc∈[0,1]
其中gw為所有白色模塊的平均灰度值:
gb為所有黑色模塊的平均灰度值:
m,n分別為立體二維碼中所有白色和黑色模塊的個數。
步驟(4-3-c):計算立體二維碼每個黑色模塊的對比度為:
其中d是黑色模塊bi8連通的鄰域內的所有白色模塊的集合,k為集合d中元素的個數。
步驟(5):根據模擬結果優化立體二維碼黑色模塊的深度,在自定義3d模型表面生成立體二維碼。
具體地,設置對比度閾值為0.3,減小立體二維碼中黑色模塊的凹陷深度,直到所有的黑色模塊的對比度剛好為0.3時為止。
步驟(6):將生成的含有立體二維碼的3d模型輸入至3d打印機,并利用單一材料進行打印,最后輸出帶有立體二維碼的3d實物。
具體地,將生成的含有立體二維碼的模型導出為stl格式,并輸入至3d打印機中,進行打印制作。
本發明可以由用戶指定任意的目標區域,并且在曲率變化比較大的目標區域仍然可以形成足夠的對比度,提高了在任意三維模型上生成的立體二維碼的解碼成功率,最終生成的立體二維碼明顯優于現有3d技術打印出的二維碼。
本發明首先采用透視投影變換將二維碼映射到自定義3d模型的目標區域,并根據變換結果進行統一深度的凹陷操作,然后計算立體二維碼每一點的可見性,并根據物理實驗獲得的可見性和灰度值之間的關系模擬出真實的二維碼圖像,隨后根據模擬的結果調整立體二維碼每個黑色模塊的深度,使得二維碼前景色和背景色的對比度增強,從而提高解碼成功率,最后生成可通過單一屬性成型材料的3d打印機制造的包含立體二維碼的三維模型。
本發明生成的立體二維碼在每個黑色模塊的凹陷深度均可達到最優,大大減少了3d打印過程中所需的支撐結構。
本發明通過采用不同凹陷深度在用戶指定的任意三維模型的目標區域生成立體二維碼,使得二維碼可很容易地通過單一屬性成型材料的3d打印機制造出來,其產生的吸引力可以帶來一定的商業價值。
圖9是本發明的一種改進的面向3d打印自定義模型立體二維碼生成系統的結構示意圖。
如圖9所示,本發明的一種改進的面向3d打印自定義模型立體二維碼生成系統,至少包括:
(1)網格化和歸一化處理模塊,其用于對自定義3d模型進行網格化和歸一化處理。
具體地,所述網格化和歸一化處理模塊,如圖10所示,還包括:
(1-1)網格化模塊,其用于使用基于lloyd松弛的重采樣算法在自定義3d模型表面求得離散采樣點,通過3ddelaunay三角剖分方法實現對輸入的自定義3d模型的網格化;
(1-2)線性變換模塊,其用于使用離差標準化方法,對網格化后自定義三維模型的數據進行線性變換,將3d模型三角網格上每個點的三維坐標分量均映射到[0-1]之間。
(2)映射模塊,其用于采用透視投影變換方法將二維碼映射到自定義3d模型的目標區域。
具體地,如圖11所示,本發明的映射模塊包括:
(2-1)目標區域的最小面積計算模塊,其用于根據3d打印機的打印精度,得到目標區域的最小面積;
(2-2)視點和視平面位置確定模塊,其用于確定透視投影變換的關系,進而獲得視點和視平面所在位置;
(2-3)二維碼三角網格標記模塊,其用于將二維碼放置在視平面上,并把其上的每個正方形模塊網格化為兩個三角形,從視點發出一系列射線,射線穿過二維碼網格的頂點投射到三維模型,從而在3d模型表面的目標區域生成二維碼三角網格,將對應于二維碼黑色模塊的3d模型表面的二維碼三角網格標記為黑色,代表這些三角網格需要進行凹陷操作。
(3)凹陷模塊,其用于根據映射結果進行凹陷操作,在自定義3d模型表面生成具有相同凹陷深度的立體二維碼。
(4)模擬模塊,其用于物理實驗模擬真實的二維碼圖像,計算出立體二維碼的整體對比度和每個黑色模塊的對比度。
具體地,如圖12所示,模擬模塊包括:
(4-1)模型表面洞獲取模塊,其用于將一個預設像素值的二值圖劃分成若干個區域,將該二值圖通過透視投影變換映射到模型表面,再凹陷相應的深度得到與劃分區域數量相等的大小不同的洞;
(4-2)可見性與灰度值關系計算模塊,其用于求得每個洞中心點的可見性并從物理模型照片中獲得相應位置的平均灰度值作為中心點的灰度值,通過對可見性與灰度值擬合曲線獲得它們之間的關系;
(4-3)灰度值計算模塊,其用于將立體二維碼每一點的可見性通過可見性和灰度值之間的關系映射為立體二維碼該點處的灰度值,最終即可獲得模擬出的真實二維碼圖像每個像素的灰度值。
(5)優化模塊,其用于根據模擬結果優化立體二維碼黑色模塊的深度,在自定義3d模型表面生成立體二維碼;
(6)打印模塊,其用于將生成的含有立體二維碼的3d模型輸入至3d打印機,并利用單一材料進行打印,最后輸出帶有立體二維碼的3d實物。
另一實施例,該系統還包括:
重新三角化模塊,其用于在根據映射結果進行凹陷操作之前,對自定義3d模型的目標區域的網格進行重新三角化,使得映射到3d模型的目標區域的二維碼網格和用戶給定的3d模型網格融合在一起。
另一實施例,該系統還包括:可見性計算模塊,其用于假設只有環境光,相當于將立體二維碼放置在積分球內;將3d模型進行切片處理,求得立體二維碼上每一點沿著透視投影方向在每一層上交點在每一層輪廓的可見多邊形;根據girard理論的推論求得立體二維碼上每一點可見球面多邊形的面積;任一點可見的積分球面積與積分球整體面積之比,得到當前點的可見性。
上述雖然結合附圖對本發明的具體實施方式進行了描述,但并非對本發明保護范圍的限制,所屬領域技術人員應該明白,在本發明的技術方案的基礎上,本領域技術人員不需要付出創造性勞動即可做出的各種修改或變形仍在本發明的保護范圍以內。