劉志東
(四川城市職業(yè)學院教務部,成都 610010)
多孔材料是一種新型工程材料,具有結(jié)構(gòu)和功能的雙重用途,由于具有良好的擴散性、導熱性、滲流性等宏觀物理性質(zhì),廣泛的應用于眾多領域和學科[1-2]。為了能夠?qū)Χ嗫撞牧先S空間內(nèi)的孔隙結(jié)構(gòu)進行研究,觀察多孔材料孔隙的內(nèi)部結(jié)構(gòu),需要對三維空間內(nèi)的孔隙結(jié)構(gòu)進行三維可視化處理?,F(xiàn)有的三維可視化繪制方法可以歸納為兩種:面繪制和體繪制。對于體繪制而言,直接在三維空間內(nèi),利用不同目標的三維空間數(shù)據(jù)直接進行三維重建,獲得三維立體結(jié)構(gòu),加上光照等參數(shù)實現(xiàn)三維顯示,其過程中不會產(chǎn)生中間過程的點、線、面等中間元素。體繪制直接對三維空間數(shù)據(jù)進行計算,其數(shù)據(jù)運算量大,并且算法的復雜度較高,使得體繪制過程需要的系統(tǒng)資源較大,也從而導致體繪制需要的時間開銷增加,在實際應用過程中很難實現(xiàn)實時交互。對于面繪制而言,主要對三維空間目標的表面進行繪制顯示,其數(shù)據(jù)處理基礎是序列二維圖像數(shù)據(jù),再結(jié)合二維圖像數(shù)據(jù)之間的空間結(jié)構(gòu)關系,還原三維空間結(jié)構(gòu)。面繪制主要處理的是二維數(shù)據(jù),重建過程計算量較小,時間開銷小,使得重建速度快,更有利于實現(xiàn)實時交互。
由于面繪制相對于體繪制在資源需求、算法效率、交互效果等方面的優(yōu)勢,現(xiàn)在對于面繪制的研究也越來越多,但是對于多孔材料的三維可視化研究較少,特別是基于二維序列圖像,利用三維空間內(nèi)部數(shù)據(jù)信息,直接針對孔隙結(jié)構(gòu)三維可視化的很少。本文在相關研究基礎上,采用多孔材料CT 斷層掃描序列圖像,通過圖像預處理獲取二值圖像,在二值序列圖像標記的基礎上,采用面繪制Marching Cubes 算法,利用Visual Studio 編程技術(shù)和OpenGL 圖形接口技術(shù),充分利用三維孔隙內(nèi)部數(shù)據(jù),針對孔隙結(jié)構(gòu)實現(xiàn)了三維可視化,并利用編程技術(shù)實現(xiàn)了旋轉(zhuǎn)、縮放等交互操作功能,清晰展示了多孔材料孔隙內(nèi)部結(jié)構(gòu),為后續(xù)孔隙結(jié)構(gòu)研究墊底了基礎。
均值濾波是一種常見的濾波方法,主要利用圖像的灰度信息,采用統(tǒng)計局部信息對圖像進行噪聲消除。均值濾波主要針對圖像的椒鹽噪聲進行處理[3]。其定義如下:
其中:i,j 為待處理像素的行號和列號,i=0,1,…,H-1;j=0,1,…,W-1;W 表示圖像寬度;H 表示圖像高度;m,n 分別表示以i,j 為中心的濾波模板的寬和高,S(m,n)表示模板內(nèi)所有點的灰度值的和,NK 表示模板內(nèi)所有點的個數(shù)和,Ri,j表示以 i,j 為中心的模板內(nèi)點的集合。
其算法實現(xiàn)過程如下:
循環(huán) 1:i 從 0 到 H-1
循環(huán) 2:j 從 0 到 W-1
D(i,j)=Sum/NK
終止2
終止1
圖像分割是圖像處理的重要環(huán)節(jié),其主要目的是在復雜的圖像信息中,將目標信息通過處理算法從不相干信息中分割出來,便于后續(xù)對目標區(qū)域進行相應處理。采用閾值的圖像分割方法,具有算法簡單、效率高等特點,該方法利用的主要是圖像的灰度信息,是輸入圖像f 到輸出圖像g 的如下變換:
其中,T 為閾值,目標元素 g(i,j)=1,背景元素 g(i,j)=0。
閾值分割方法最核心的內(nèi)容就是如何準確、快速的對分割閾值進行計算。本文采用了自動閾值迭代的方法計算閾值,算法流程如下[4];
a.遍歷圖像,通過比較所有像素灰度值,獲得最大值Max 和最小值Min。
b.假設最佳閾值OptTh 為零,初始閾值InitTh=(Max+Min)/2
c.將OptTh 的值設置為InitTh 的值
d.將像素值高于InitTh 值的像素歸于高像素區(qū),像素值低于InitTh 值的像素歸于低像素區(qū)
e.根據(jù)d 中劃分的區(qū)域,分別計算兩個區(qū)域中的像素值的平均值LowV 和HighV
f.計算LowV 和HighV 的平均值,將其作為新的初始閾值InitTh
g.比較InitTh 和OptTh 的值,如果兩者相等,程序轉(zhuǎn)到h;否則程序轉(zhuǎn)到c,繼續(xù)執(zhí)行。
h.返回最佳閾值OptTh,迭代結(jié)束。
為了更好地展示三維孔隙結(jié)構(gòu)的標記效果,本文采用基于體素的移動立方體法Marching Cube 算法進行三維可視化。
Marching Cube 算法是三維可視化常用的算法,屬于面繪制算法中的一種。面繪制算法實現(xiàn)的過程,其實就是等值面查找構(gòu)建的過程,所謂等值面就是將在三維重建的數(shù)據(jù)場中與指定的數(shù)值相等的數(shù)據(jù)點尋找到,并將尋找到的數(shù)據(jù)點定義為一個或多個曲面。對于由一系列二維灰度圖像組建的數(shù)據(jù)場而已,數(shù)據(jù)值就是圖像的灰度級別。Marching Cube 算法實現(xiàn)過程中,Lorensen 構(gòu)建了一個查找表,其長度為256。該查找表包含了一個空間立方體等值面分布的所有情況。對所有分別情況進行總結(jié),可總結(jié)為15 中基本立方體構(gòu)型。Lorensen 總結(jié)和構(gòu)建的基本立方體依據(jù)的是空間立方體的旋轉(zhuǎn)對稱性和顛倒對稱性。立方體等值面的計算過程,就是比較立方體頂點和設定的閾值大小的過程。根據(jù)比較的大小關系,通過查找表,可以得出立方體的邊與等值點的關系。將有關聯(lián)的等值點連接起來就構(gòu)成了等值面[5-6]。三維空間數(shù)據(jù)和等值面的示意圖如圖1 和圖2 所示。
圖1 數(shù)據(jù)場示意圖
圖2 等值面示意圖
Marching Cube 算法實現(xiàn)過程圖3 所示。
圖3 Marching Cube算法流程圖
Marching Cube 算法僅僅完成了對三維重建模型的構(gòu)建過程,完成了等值面和法向量的計算,而要形成真實感的三維畫面,還必須結(jié)合適當?shù)墓庹漳J胶蛯崿F(xiàn)工具。本研究三維重建采用OpenGL 圖形用戶接口實現(xiàn)。OpenGL 具有良好的編程接口,能夠在不同的操作系統(tǒng)平臺,不同的編程語言上實現(xiàn)三維可視化處理。OpenGL 提供了大量專業(yè)的圖形程序處理API,具有豐富的圖形處理功能,并且對于網(wǎng)絡也是透明的,在眾多領域具有廣泛的應用。
本文基于Microsoft Visual Studio 2008 建立基于OpenGL 的圖像處理編程環(huán)境,多孔材料的孔隙結(jié)構(gòu)的三維可視化過程如下:
(1)導入多孔材料CT 序列圖像。
(2)對序列圖像采用批處理方式,進行圖像濾波與二值化處理,獲取二值化數(shù)據(jù)。
(3)依據(jù)Marching Cube 算法,對二值化的序列圖像進行等值面計算,獲取三維數(shù)據(jù)場的等值面信息。
(4)在OpenGL 中初始化光照模型、著色描述表等基礎數(shù)據(jù)。
(5)在OnPaint 函數(shù)中對MC 算法處理的三維等值面數(shù)據(jù)進行繪圖并顯示。
三維可視化過程中應用到的OpenGL API 函數(shù)主要有 glShadeModel、glMatrixMode、glLightModelfv、glEn?able、glPushMatrix、glTranslatef、glRotatef、glScalef、glNor?mal3f 等。通過OpenGL 實現(xiàn)多孔材料孔隙結(jié)構(gòu)數(shù)據(jù)的三維可視化,結(jié)合鼠標操作,實現(xiàn)縮放、旋轉(zhuǎn)等功能,將多孔材料內(nèi)部孔隙結(jié)構(gòu)直觀呈現(xiàn)出來,可以多視角的對內(nèi)部孔隙結(jié)構(gòu)特征進行觀察。
本文采用CT 掃描多孔材料得到的序列斷層圖像進行三維可視化研究,圖像大小為256×256,層數(shù)為25層,其某一層的斷層掃描圖像如圖4 所示。圖4 中像素灰度值為0 的部分是多孔材料的孔隙。從圖中可以看出,圖像中存在大量的噪聲,會對后續(xù)三維可視化產(chǎn)生干擾。根據(jù)本文的均值濾波和自動閾值分割算法獲取的二值圖像。二值圖像如圖5 所示,可以看出,采用本文的濾波和分割算法,很好的去除了圖像中的噪聲,為后續(xù)重建奠定了基礎。
圖4 原始圖像
圖5 濾波、分割后的二值圖像
在圖像分割基礎上,直接對序列圖像進行三維重建,其重建結(jié)果如圖6 所示。從圖6 可以看出,雖然可以完成多孔材料的三維重建可視化,但是對于各個孔隙的內(nèi)部結(jié)構(gòu)、連通性等特征無法直接進行可視化觀察,不利于后續(xù)對各個孔隙具體特征的研究。本研究提出了基于孔隙結(jié)構(gòu)三維重建可視化的方法,其三維重建結(jié)果如圖7 所示。通過圖6 和圖7 中重建結(jié)果的對比,可以看出,直接對孔隙進行三維重建可以對孔隙結(jié)構(gòu)特征進行直觀的研究。圖8 是將圖7 旋轉(zhuǎn)180 度后呈現(xiàn)的重建情況。通過圖像的旋轉(zhuǎn)、縮放等交互功能,實現(xiàn)了對多孔材料孔隙三維結(jié)構(gòu)特征的360 度全方位、多細節(jié)的三維可視化查看。本文提出的三維可視化方法,對于研究多孔材料內(nèi)部孔隙的形狀、連通性、分布情況的結(jié)構(gòu)特征具有重要的應用意義。
圖6 直接三維重建結(jié)果
圖7 基于孔隙的三維重建結(jié)果
圖8 水平旋轉(zhuǎn)180°后的三維重建結(jié)果
本文采用OpenGL 技術(shù),利用MC 算法對濾波、分割后的多孔材料的CT 序列掃描圖像進行了三維孔隙內(nèi)部結(jié)構(gòu)可視化研究。根據(jù)實驗結(jié)果顯示,采用本文研究方法,可以有效地對三維多孔材料孔隙內(nèi)部結(jié)構(gòu)進行三維可視化,實現(xiàn)了旋轉(zhuǎn)、縮放等交互功能,多視角、細節(jié)化的觀察多孔材料內(nèi)部的孔隙結(jié)構(gòu),為計算三維孔隙結(jié)構(gòu)參數(shù)計算提供了可能。雖然本文算法可以有效的對多孔材料進行三維可視化,但是并未對每一個獨立孔隙進行單獨標記,無法識別每一個獨立的孔隙,后續(xù)將重點開展對三維孔隙標記的研究。