專利名稱:一種基于三維平面控件的交互式體切割方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)圖形學(xué)中的三維可視化領(lǐng)域,特別涉及利用三維平 面控件和體繪制方法來實(shí)現(xiàn)交互式的體切割。
背景技術(shù):
體繪制(Volume Rendering)出現(xiàn)于上個(gè)世紀(jì)80年代,是三維可視化 方法中非常重要的一種方法。由于體繪制不僅可以顯示三維規(guī)則數(shù)據(jù)(也 稱為體數(shù)據(jù))的表面信息,還可以顯示其內(nèi)部信息,從而能實(shí)現(xiàn)體數(shù)據(jù)的 真實(shí)感顯示,有利于體數(shù)據(jù)信息的全面理解與分析,因此在輔助醫(yī)生診斷、 工業(yè)CT缺陷檢測(cè)等方面有著非常重要的作用。
在體繪制過程中,可以通過交互調(diào)節(jié)灰度一阻光度等傳遞函數(shù)來顯示 體數(shù)據(jù)內(nèi)部組織的信息。但對(duì)于結(jié)構(gòu)比較復(fù)雜的體數(shù)據(jù),如果想同時(shí)顯示 多種組織,則需要花費(fèi)比較多的時(shí)間來調(diào)節(jié),而且得到的顯示結(jié)果并不一 定能比較清晰地反映各組織之間的相對(duì)位置等關(guān)系。體切割方法(Volume Clipping)在體繪制中引入了裁剪幾何,將不需要顯示的部分切割掉,而 只保留需要顯示的部分,從而克服了上述缺陷,可以用來探查(Explore) 結(jié)構(gòu)復(fù)雜的體數(shù)據(jù)。
國(guó)內(nèi)外研究者在體切割方面已經(jīng)做了很多工作,并取得了很大的成 果。如1998年,Westermann禾BErtl采用了基于模板緩存測(cè)試的裁剪幾何方 法來切割體數(shù)據(jù),Sommer等人在1999年利用圖形硬件的三維紋理操作實(shí) 現(xiàn)了體數(shù)據(jù)的任意裁剪平面切割,Weiskop獰人則在2003年利用基于深度 的裁剪方法和基于體的裁剪方法實(shí)現(xiàn)了復(fù)雜的裁剪幾何切割。盡管這些方 法能得到良好的體切割結(jié)果,但是在實(shí)際應(yīng)用中還需要更直觀的交互操縱 方式來調(diào)節(jié)裁剪參數(shù),而不是通過離體的方式(例如利用控制面板上的滑 塊等界面控件)來調(diào)節(jié)。
針對(duì)上述問題, 一些研究者提出了直接在繪制場(chǎng)景中進(jìn)行交互式體切割的方法,以實(shí)現(xiàn)交互而沉浸的目的。如2003年,McGuffm等人利用三維 控件來瀏覽體數(shù)據(jù),Huf傳人在2006年利用裁剪器、擦除器和挖掘器來交 互地切割體數(shù)據(jù)。但是到目前為止,據(jù)報(bào)導(dǎo)的此類交互沉浸式體切割方法 幾乎都是采用基于圖形硬件的體繪制來實(shí)現(xiàn)體數(shù)據(jù)的繪制,還沒有研究者 采用基于軟件的體繪制來實(shí)現(xiàn)交互沉浸式的體切割。在基于圖形硬件的體 繪制中,通常情況下體數(shù)據(jù)首先會(huì)被重建成三維空間中的一系列紋理多邊 形,然后再被繪制。但在基于軟件的體繪制中,體數(shù)據(jù)不會(huì)被重建成具有 深度信息的中間模型,而是直接被繪制成一幅二維投影圖像。由于缺少了 深度信息,所以在基于軟件的體繪制場(chǎng)景中實(shí)現(xiàn)交互式體切割仍然是一個(gè) 技術(shù)難題。而研究既能適合軟繪制(基于軟件的體繪制)又能適合硬繪制 (基于圖形硬件的體繪制)的交互沉浸式體切割方法則更是一個(gè)挑戰(zhàn)。
發(fā)明內(nèi)容
為了解決的技術(shù)問題,本發(fā)明的目的是突破現(xiàn)有的交互沉浸式體切割 技術(shù)局限于采用基于圖形硬件的體繪制來實(shí)現(xiàn)體數(shù)據(jù)的繪制的限制,為 此,提供一種既能適合軟繪制又能適合硬繪制的基于三維平面控件的交互 沉浸式體切割方法。
為達(dá)到所述目的,本發(fā)明基于三維平面控件的交互式體切割方法解
決問題的技術(shù)方案是
步驟S1:建立一個(gè)完整的坐標(biāo)系統(tǒng),將體數(shù)據(jù)加入該坐標(biāo)系統(tǒng),然 后在該坐標(biāo)系統(tǒng)中加入三維平面控件,從而構(gòu)建集成化繪制環(huán)境;
步驟S2:在集成化繪制環(huán)境中,首先基于體繪制和二維紋理空間映 射來實(shí)現(xiàn)體數(shù)據(jù)的繪制,然后遍歷繪制所有三維平面控件,從而完成體數(shù) 據(jù)和三維平面控件的混合繪制;
步驟S3:使用鼠標(biāo)來交互地操縱體數(shù)據(jù)和三維平面控件,并在鼠標(biāo) 動(dòng)作后返回步驟S2以更新混合繪制,從而實(shí)現(xiàn)對(duì)體數(shù)據(jù)的交互式切割。
根據(jù)本發(fā)明的實(shí)施例,所述三維平面控件由四個(gè)頂點(diǎn)、四條棱邊以及 一個(gè)透明矩形面組成,并封裝了一個(gè)裁剪平面,裁剪平面的原點(diǎn)和法矢根 據(jù)三維平面控件的計(jì)算得到。
根據(jù)本發(fā)明的實(shí)施例,所述體繪制采用基于軟件的體繪制,或采用基于圖形硬件的體繪制,并根據(jù)鼠標(biāo)消息采取層次細(xì)節(jié)的方式來繪制體數(shù) 據(jù)。
根據(jù)本發(fā)明的實(shí)施例,所述坐標(biāo)系統(tǒng)包括體素坐標(biāo)系、模型坐標(biāo)系、 世界坐標(biāo)系、視圖坐標(biāo)系和屏幕坐標(biāo)系。
根據(jù)本發(fā)明的實(shí)施例,在所述世界坐標(biāo)系中加入體數(shù)據(jù),根據(jù)體數(shù)據(jù) 大小調(diào)整各坐標(biāo)系間的變換關(guān)系,并使體數(shù)據(jù)的中心點(diǎn)位于視圖裁剪體的 中間平面上。
根據(jù)本發(fā)明的實(shí)施例,在所述世界坐標(biāo)系中加入一個(gè)或多個(gè)三維平面 控件,并根據(jù)體數(shù)據(jù)的大小和位置來初始化三維平面控件的狀態(tài)。
根據(jù)本發(fā)明的實(shí)施例,所述體數(shù)據(jù)的繪制包括以下步驟
步驟S21:提取三維平面控件所封裝的裁剪平面信息,利用體繪制計(jì) 算出體數(shù)據(jù)在視圖裁剪體近平面上的二維投影圖像;
步驟S22:從視圖坐標(biāo)系原點(diǎn)向二維投影圖像的四個(gè)頂點(diǎn)引射線,計(jì) 算各射線與視圖裁剪體中間平面的交點(diǎn),獲得二維投影圖像在中間平面上 的投影矩形,利用紋理映射將二維投影圖像影射到投影矩形上,并進(jìn)行映 射圖像的繪制。
根據(jù)本發(fā)明的實(shí)施例,所述遍歷繪制所有三維平面控件,是對(duì)每一個(gè) 三維平面控件進(jìn)行檢査,檢査是否需要顯示切割面,如果為是,則采樣得 到二維切面圖像,并繪制三維平面控件和二維切面圖像;如果為否,則只 繪制三維平面控件。
根據(jù)本發(fā)明的實(shí)施例,所述鼠標(biāo)操縱體數(shù)據(jù)是平移、旋轉(zhuǎn)和縮放;體 數(shù)據(jù)中心始終位于中間平面上;在鼠標(biāo)操縱體數(shù)據(jù)時(shí),三維平面控件始終 與體數(shù)據(jù)保持相對(duì)靜止。
根據(jù)本發(fā)明的實(shí)施例,所述三維平面控件在世界坐標(biāo)系中的狀態(tài)通過 以下鼠標(biāo)操縱方式來改變鼠標(biāo)左鍵操縱頂點(diǎn),用于實(shí)現(xiàn)三維平面控件的 任意旋轉(zhuǎn);鼠標(biāo)左鍵操縱棱邊,用于實(shí)現(xiàn)三維平面控件的伸縮;鼠標(biāo)左鍵 操縱透明矩形面,用于實(shí)現(xiàn)三維平面控件在裁剪平面內(nèi)的平移;鼠標(biāo)右鍵 操縱頂點(diǎn),用于實(shí)現(xiàn)三維平面控件在裁剪平面法矢方向上的平移;鼠標(biāo)右 鍵操縱棱邊,用于實(shí)現(xiàn)三維平面控件繞透明矩形面對(duì)稱軸的旋轉(zhuǎn);鼠標(biāo)中 鍵操縱頂點(diǎn),用于實(shí)現(xiàn)控件在裁剪平面內(nèi)的縮放。本發(fā)明的有益效果本發(fā)明將體數(shù)據(jù)、三維平面控件、體繪制、混合 繪制以及鼠標(biāo)操縱集成在了同一個(gè)環(huán)境中,從而實(shí)現(xiàn)了交互、沉浸式的體 切割。同時(shí)體繪制既可以采用基于軟件的體繪制,能夠?qū)崿F(xiàn)大規(guī)模體數(shù)據(jù) 的高質(zhì)量繪制,也可以采用基于圖形硬件的體繪制,能夠?qū)崿F(xiàn)中小規(guī)模體 數(shù)據(jù)的快速繪制。因此可以根據(jù)數(shù)據(jù)規(guī)模和軟硬件環(huán)境選擇合適的體繪制 方法,提高交互式體切割的效率,在體數(shù)據(jù)探查及可視化領(lǐng)域具有重要的 應(yīng)用價(jià)值。
圖1是基于三維平面控件的交互式體切割方法的流程圖2是構(gòu)建的集成化繪制環(huán)境;
圖3是三維平面控件的幾何結(jié)構(gòu);
圖4是利用光線投射計(jì)算二維投影圖像的過程;
圖5是映射圖像與三維平面控件的空間關(guān)系;
圖6是三維平面控件的交互操縱方式;
圖7是利用三維平面控件進(jìn)行交互式體切割的應(yīng)用實(shí)例。
具體實(shí)施例方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明技術(shù)方案中所涉及的各個(gè)細(xì)節(jié)問題。應(yīng) 指出的是,所描述的實(shí)施例僅旨在便于對(duì)本發(fā)明的理解,而對(duì)其不起任何 限定作用。
本發(fā)明基于三維平面控件和由體繪制得到的二維投影圖像來實(shí)現(xiàn)交 互式體切割。每個(gè)三維平面控件都封裝了一個(gè)裁剪平面,并可以通過鼠標(biāo) 交互操縱來改變?nèi)S平面控件的狀態(tài)。首先提取三維平面控件所封裝的裁 剪平面信息,并利用基于軟件的體繪制或基于圖形硬件的體繪制得到體數(shù) 據(jù)的二維投影圖像。然后利用紋理映射的方法將二維投影圖像重新映射到 三維空間中,并進(jìn)行映射圖像與三維平面控件的繪制,從而得到體數(shù)據(jù)和 三維平面控件的混合繪制圖像。利用鼠標(biāo)交互操縱體數(shù)據(jù)和三維平面控 件,并更新體數(shù)據(jù)和三維平面控件的混合繪制,便能夠?qū)崿F(xiàn)交互而沉浸的 體切割。下面結(jié)合附圖詳細(xì)描述本發(fā)明提出的一種基于三維平面控件的交互 式體切割方法。本發(fā)明的一種具體實(shí)現(xiàn)方案的流程圖如圖1所示,主要包 括三個(gè)步驟構(gòu)建集成化繪制環(huán)境、混合繪制、鼠標(biāo)操縱。詳細(xì)步驟如下
步驟S1:構(gòu)建集成化繪制環(huán)境
為實(shí)現(xiàn)沉浸而準(zhǔn)確的體切割,必須滿足兩個(gè)要求 一是對(duì)三維平面控 件的交互操作在視覺效果上必須是正確的,二是通過三維平面控件來調(diào)節(jié) 的裁剪參數(shù)必須是準(zhǔn)確的,而且對(duì)體數(shù)據(jù)的繪制也必須是準(zhǔn)確的。因此 必須把體數(shù)據(jù)和三維平面控件集成在一個(gè)統(tǒng)一的繪制環(huán)境下,步驟包括 建立一個(gè)完整的坐標(biāo)系統(tǒng),將體數(shù)據(jù)加入該坐標(biāo)系統(tǒng),并調(diào)整各坐標(biāo)系間 的變換關(guān)系,然后在該坐標(biāo)系統(tǒng)中加入一個(gè)或多個(gè)三維平面控件,并初始 化各三維平面控件的狀態(tài)。
在繪制環(huán)境中建立了五個(gè)坐標(biāo)系,如圖2所示,包括體素坐標(biāo)系G、 模型坐標(biāo)系M、世界坐標(biāo)系W、視圖坐標(biāo)系V以及屏幕坐標(biāo)系S。三維
平面控件3位于世界坐標(biāo)系中。視圖裁剪體2位于視圖坐標(biāo)系V中,并
決定了視圖坐標(biāo)系V的可視區(qū)域。射線1是從視圖坐標(biāo)系V的原點(diǎn)投向
視圖裁剪體近平面的方向線。從體素坐標(biāo)系G到屏幕坐標(biāo)系S的變換矩 陣^r可以表示為
&=V ,dGi (i)
其中Gz是體素坐標(biāo)系G中的坐標(biāo),而^:是變換到屏幕坐標(biāo)系S中
的坐標(biāo),G義和SX都可以表示成[X ;; z lf的形式。M b 、『rM 、 和
S7V可以寫成一個(gè)統(tǒng)一的形式〃77,表示從坐標(biāo)系/到坐標(biāo)系/的一個(gè)4x4 的坐標(biāo)變換矩陣。體素坐標(biāo)系G與模型坐標(biāo)系M之間只存在縮放關(guān)系, 縮放參數(shù)為體數(shù)據(jù)的體素間距,因此體素坐標(biāo)系G與模型坐標(biāo)系M的原 點(diǎn)始終保持一致。
三維平面控件的幾何結(jié)構(gòu)如圖3所示,由一個(gè)透明矩形面、四個(gè)頂點(diǎn) 31和四條棱邊32組成,并封裝了一個(gè)裁剪平面。把四個(gè)頂點(diǎn)分別記作為 "左上"、"左下"、"右下"和"右上",那么裁剪平面的原點(diǎn)34就是這四個(gè) 頂點(diǎn)的中心點(diǎn),裁剪平面的原點(diǎn)和法矢根據(jù)三維平面控件的計(jì)算得到,而 裁剪平面的法矢33則是兩個(gè)對(duì)角向量的叉積,四個(gè)頂點(diǎn)用圓球來實(shí)現(xiàn),四條棱邊用圓柱來實(shí)現(xiàn),四個(gè)頂點(diǎn)和四條棱邊還可以選擇其他的方式,在 此不再贅述。
在所述世界坐標(biāo)系中加入體數(shù)據(jù),根據(jù)體數(shù)據(jù)大小調(diào)整各坐標(biāo)系間的 變換關(guān)系,并使體數(shù)據(jù)的中心點(diǎn)位于視圖裁剪體的中間平面上。在所述世 界坐標(biāo)系中加入一個(gè)或多個(gè)三維平面控件,并根據(jù)體數(shù)據(jù)的大小和位置來 初始化三維平面控件的狀態(tài)。在初始狀態(tài)下,體數(shù)據(jù)的中心點(diǎn)被置于世界 坐標(biāo)系W的原點(diǎn),并且模型坐標(biāo)系M與世界坐標(biāo)系W之間沒有旋轉(zhuǎn)和
縮放關(guān)系。假設(shè)體數(shù)據(jù)在世界坐標(biāo)系W中的對(duì)角線長(zhǎng)度為L(zhǎng),則視圖坐 標(biāo)系V的原點(diǎn)被放在世界坐標(biāo)系W的z軸正方向上離體數(shù)據(jù)中心為3L 的位置,同時(shí)設(shè)置視圖裁剪體的近平面和遠(yuǎn)平面分別位于離視圖坐標(biāo)系V 的原點(diǎn)為對(duì)角線長(zhǎng)度L和5L的位置,從而使體數(shù)據(jù)的中心點(diǎn)位于視圖裁 剪體的中間平面上。三維平面控件的初始長(zhǎng)和寬分別被設(shè)置成體數(shù)據(jù)的長(zhǎng) 和寬,初始位置被設(shè)定在世界坐標(biāo)系W的xoy平面內(nèi),并使其中心位于 世界坐標(biāo)系W的原點(diǎn)。在后續(xù)的交互體切割過程中,體數(shù)據(jù)和三維平面 控件的狀態(tài)都可以通過鼠標(biāo)交互操縱來改變。 步驟S2:混合繪制
在集成化繪制環(huán)境中,我們首先基于體繪制得到體數(shù)據(jù)的二維投影 圖像。然后利用紋理映射的方法將二維投影圖像重新映射到三維空間中, 并進(jìn)行映射圖像的繪制,最后遍歷繪制所有三維平面控件,從而得到體數(shù) 據(jù)和三維平面控件的混合繪制圖像。所述混合繪制包括以下步驟
步驟S21:提取三維平面控件所封裝的裁剪平面信息,利用體繪制 計(jì)算出體數(shù)據(jù)在視圖裁剪體近平面上的二維投影圖像;
步驟S22:從視圖坐標(biāo)系原點(diǎn)向二維投影圖像的四個(gè)頂點(diǎn)引射線1, 計(jì)算各射線1與視圖裁剪體中間平面的交點(diǎn),獲得二維投影圖像在中間平 面上的投影矩形,利用紋理映射將二維投影圖像影射到投影矩形上,并進(jìn) 行映射圖像的繪制;
步驟S23:對(duì)每一個(gè)三維平面控件進(jìn)行檢查,檢查是否需要顯示切 割面,如果為是,則采樣得到二維切面圖像,并繪制三維平面控件和二維 切面圖像;如果為否,則只繪制三維平面控件。
上述步驟S21和S22基于體繪制和二維紋理空間映射來 現(xiàn)體數(shù)據(jù)的繪制,步驟S23遍歷繪制了所有三維平面控件。獲取體數(shù)據(jù)二維投影 圖像的體繪制方法既可以采用基于軟件的體繪制,也可以采用基于圖形硬 件的體繪制,并根據(jù)鼠標(biāo)消息采取層次細(xì)節(jié)的方式來繪制體數(shù)據(jù),不同體 繪制方法最大的區(qū)別在于如何提取三維平面控件所封裝的裁剪平面信息
來進(jìn)行體數(shù)據(jù)的繪制。如下以體繪制中非常經(jīng)典的光線投射方法(Ray Casting)為例來描述體數(shù)據(jù)的繪制過程。
利用光線投射來計(jì)算體數(shù)據(jù)的二維投影圖像的過程如圖4所示。首先 將體數(shù)據(jù)的八個(gè)頂點(diǎn)投影到屏幕上,計(jì)算體數(shù)據(jù)在屏幕上的投影包圍盒 4,并將投影包圍盒4中每個(gè)像素的積累顏色和阻光度初始化為零。然后 遍歷投影包圍盒4中的所有像素,對(duì)于每一個(gè)像素,采用以下步驟計(jì)算其 最終的積累顏色和阻光度
① 從視圖坐標(biāo)系V的原點(diǎn)向該像素投出射線,計(jì)算該射線1與視圖 裁剪體2的近、遠(yuǎn)平面的交點(diǎn)j和e,并初始化S^,五^;
② 然后計(jì)算^與體數(shù)據(jù)外表面的交點(diǎn)c和A并令S=c, £ =A
③ 再計(jì)算5^與兩個(gè)裁剪平面的交點(diǎn)"和6,對(duì)于每個(gè)裁剪平面,在 法矢33方向上的半平面內(nèi)的射線段將被保留,而其余射線段將被裁剪掉, 令<S=fl, £ ④最后沿^射線段步進(jìn),在每個(gè)采樣點(diǎn)計(jì)算顏色和阻光度, 并根據(jù)公式(2)遞歸混合得到該像素的最終積累顏色和阻光度。
c =s . (1 — a) + c
a = r (1 - a) + a (2)
在處理完所有像素后,便得到了體數(shù)據(jù)的二維投影圖像。
假設(shè)A、 B、 C、 D是二維投影圖像的四個(gè)頂點(diǎn),如圖5所示。O是 視圖坐標(biāo)系的原點(diǎn),從O向A、 B、 C、 D引射線,E、 F、 G、 H分別是 各射線1與視圖裁剪體2的中間平面5的交點(diǎn)。我們首先利用 glTexImage2D創(chuàng)建二維投影圖像的紋理,并利用glBegin( GL_POLYGON ) 將該紋理映射到矩形EFGH上。然后遍歷所有三維平面控件,對(duì)于每一 個(gè)三維平面控件,如果不需要顯示切割面,則利用gluSphere、 gluCylinder 和g舊egin(GL一QUADS)來繪制該控件。如果需要顯示切割面,則在透明 矩形面上對(duì)體數(shù)據(jù)進(jìn)行重采樣,獲得二維切面圖像,并利用glTexImage2D創(chuàng)建二維切面圖像的紋理,之后計(jì)算當(dāng)前視線方向與該控件裁剪平面法矢
33的點(diǎn)積。如果點(diǎn)積大于零,利用gluSphere繪制該控件的頂點(diǎn),禾廿用 gluCylinder繪制該控件的棱邊,并利用glBegin(GL—QUADS)將二維切面 圖像的紋理映射到該控件的透明矩形面上。如果點(diǎn)積小于零,則利用 gluSphere、 gluCylinder和glBegin(GL—QUADS)來繪制該控件。從而實(shí)現(xiàn) 了二維投影圖像的紋理映射以及映射圖像與三維平面控件的繪制。 步驟S3:鼠標(biāo)操縱
在對(duì)體數(shù)據(jù)進(jìn)行交互式切割的過程中,使用鼠標(biāo)來交互地操縱體數(shù)據(jù) 和三維平面控件,檢查是否有三維平面控件被操縱,是則改變?cè)摽丶谑?界坐標(biāo)系中的狀態(tài),否則使體數(shù)據(jù)平移、旋轉(zhuǎn)和縮放,并使體數(shù)據(jù)的中心 始終保持在視圖裁剪體的中間平面上,同時(shí)變換三維平面控件使其始終與 體數(shù)據(jù)保持相對(duì)靜止,在鼠標(biāo)動(dòng)作后返回步驟S2以更新混合繪制,從而 實(shí)現(xiàn)對(duì)體數(shù)據(jù)的交互式切割。
基于OpenGL的選擇機(jī)制,實(shí)現(xiàn)了對(duì)三維平面控件的交互操縱,如圖 6所示方式包括(a)使用鼠標(biāo)左鍵操縱頂點(diǎn)來實(shí)現(xiàn)控件的任意旋轉(zhuǎn);(b) 使用鼠標(biāo)左鍵操縱棱邊來實(shí)現(xiàn)控件的伸縮;(c)使用鼠標(biāo)左鍵操縱透明矩 形面來實(shí)現(xiàn)控件在裁剪平面內(nèi)的平移;(d)使用鼠標(biāo)右鍵操縱頂點(diǎn)來實(shí)現(xiàn) 控件在裁剪平面法矢方向上的平移;(e)使用鼠標(biāo)右鍵操縱棱邊來實(shí)現(xiàn)控 件繞透明矩形面對(duì)稱軸的旋轉(zhuǎn);(f)使用鼠標(biāo)中鍵操縱頂點(diǎn)來實(shí)現(xiàn)控件在 裁剪平面內(nèi)的縮放。通過這六種交互操縱方式,可以為體繪制提供任意位 置和方向的裁剪平面。
如下以方式(c)為例來描述交互操縱的實(shí)現(xiàn)。首先假設(shè)使用鼠標(biāo)左鍵 選中透明矩形面并移動(dòng)鼠標(biāo),記先前、當(dāng)前鼠標(biāo)指針在屏幕坐標(biāo)系S中 的坐標(biāo)分別為y婦w 0 lf和[x腳 ;;則,0 lF。然后可通 過
『X-^Wz (3) 計(jì)算得到這兩點(diǎn)在世界坐標(biāo)系W中的坐標(biāo)^J^。w和^L,。再計(jì)算得
到世界坐標(biāo)系下的鼠標(biāo)移動(dòng)向量A ^Z匿w-^A。w。從而可以利用
△FP * )-~ (4)計(jì)算得到鼠標(biāo)移動(dòng)在裁剪平面內(nèi)的投影向量,其中A^是投影向量, A^是裁剪平面的法矢,而*則表示點(diǎn)積。最后將三維平面控件的每個(gè)頂 點(diǎn)坐標(biāo)都加上AFp,便得到了三維平面控件在被鼠標(biāo)移動(dòng)后的新位置。
在鼠標(biāo)操縱過程中,如果沒有三維平面控件被選中,則把鼠標(biāo)移動(dòng)投 影為體數(shù)據(jù)的平移、旋轉(zhuǎn)和縮放量,實(shí)現(xiàn)方法與上述相似。我們利用鼠標(biāo) 左鍵使體數(shù)據(jù)繞自身中心旋轉(zhuǎn),利用鼠標(biāo)中鍵使體數(shù)據(jù)在世界坐標(biāo)系中平 移,并利用鼠標(biāo)右鍵使體數(shù)據(jù)相對(duì)于自身中心縮放,并使體數(shù)據(jù)的中心在 旋轉(zhuǎn)、平移和縮放過程中始終保持在視圖裁剪體的中間平面上,同時(shí)根據(jù) 體數(shù)據(jù)的狀態(tài)來變換三維平面控件,使三維平面控件始終與體數(shù)據(jù)保持相 對(duì)靜止。
在鼠標(biāo)操縱過程中,根據(jù)鼠標(biāo)消息采取層次細(xì)節(jié)(Level of Detail)
的方式來繪制體數(shù)據(jù),步驟包括在繪制前,先檢查是否有鼠標(biāo)消息,是
則采用粗繪制,增大采樣間距,減少計(jì)算量,從而提高了繪制幀率,否則 采用精繪制,減少采樣間距,增大計(jì)算精度,從而提高了繪制效果。 運(yùn)行結(jié)果
已經(jīng)將本發(fā)明所提出的方法集成到了我們自行研發(fā)的三維圖像工具
包中。該工具包采用面向?qū)ο蟮脑O(shè)計(jì)方法和軟件工程規(guī)范,是用C+十語 言實(shí)現(xiàn)的、跨平臺(tái)的三維圖像處理包。在該工具包中,除了利用光線投射 體繪制來獲得二維投影圖像外,還實(shí)現(xiàn)了利用體素投影體繪制(Splatting) 以及錯(cuò)切變形體繪制(ShearWarp)來進(jìn)行體數(shù)據(jù)的繪制。為驗(yàn)證本發(fā)明 所提方法的交互沉浸性和高效性,基于該工具包在一臺(tái)計(jì)算機(jī)上進(jìn)行了大 量實(shí)驗(yàn)。計(jì)算機(jī)的軟硬件配置為Intel Core2 1.86GHz處理器,1GB物理 內(nèi)存,ATI Radeon X300顯卡,Windows XP操作系統(tǒng)。實(shí)驗(yàn)數(shù)據(jù)是一個(gè) 大小為208x256x225x8bit的腦部CT數(shù)據(jù),該數(shù)據(jù)來源于 http: 〃www.p sy chology. nottingham. ac .uk/staff/cr 1/ct. zip 。
圖7是利用三維平面控件進(jìn)行交互式體切割的應(yīng)用實(shí)例,其中(a)基 于光線投射體繪制;(b)基于體素投影體繪制;(c)基于錯(cuò)切變形體繪制。 我們?cè)谶M(jìn)行交互體切割的過程中,可以非常直觀地對(duì)體數(shù)據(jù)和三維平面控 件進(jìn)行操縱,就像我們處于三維繪制場(chǎng)景中一樣。該定性實(shí)驗(yàn)驗(yàn)證了本發(fā) 明所提方法的交互沉浸性。如下是進(jìn)一步的實(shí)驗(yàn)??紤]到實(shí)驗(yàn)的可重復(fù)性,我們首先規(guī)范一些與 體切割效率相關(guān)的參數(shù)
① 屏幕坐標(biāo)系的窗口大小為948x618;
② 二維投影圖像大小為302x294;
③ 體繪制時(shí)不加光照;
④ 每個(gè)體素的密度值都被映射成(r, g, b, a),將密度值在0 20之間的體 素映射為(O.O, 0.0, 0.0, 0.0),將密度值為255的體素映射為(0.6, 0.6, 0.2, 0.25),其它密度值的映射通過插值計(jì)算得到;
⑤ 在繪制環(huán)境中加入一個(gè)三維平面控件,要求該控件能顯示切割面, 并調(diào)節(jié)該控件使其位于大腦的對(duì)稱平面上。然后我們用鼠標(biāo)間斷而輕微地 操縱體數(shù)據(jù)和三維平面控件,從而既能驅(qū)動(dòng)粗繪制和精繪制,又能保證體 數(shù)據(jù)和三維平面控件的狀態(tài)基本穩(wěn)定。在不同情況下的繪制幀率如表格l 所示。由于采用了層次細(xì)節(jié)繪制,我們可以在交互操縱的時(shí)候得到較高的 繪制幀率,而在停止操縱后得到較高質(zhì)量的繪制圖像。該定量實(shí)驗(yàn)驗(yàn)證了 本發(fā)明所提方法的高效性。
表格1體切割的繪制效率
體繪制器\條件操縱體數(shù)據(jù)操縱三維平面控件精繪制
光線投射0.032s/31.72^)s0.057s/17.63fj)s0.70s/1.42f^s
體素投影0.089s/11.14fps0.11s/8.94fps1.69s/0.59fps
錯(cuò)切變形0.029s/33.601i)s0.054s/18.62fps0.41s/2.44fps
以上所述,僅為本發(fā)明中的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可理解想 到的變換或替換,都應(yīng)涵蓋在本發(fā)明的包含范圍之內(nèi),因此,本發(fā)明的保 護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種基于三維平面控件的交互式體切割方法,其特征在于,包括以下步驟步驟S1建立一個(gè)完整的坐標(biāo)系統(tǒng),將體數(shù)據(jù)加入該坐標(biāo)系統(tǒng),然后在該坐標(biāo)系統(tǒng)中加入三維平面控件,從而構(gòu)建集成化繪制環(huán)境;步驟S2在集成化繪制環(huán)境中,首先基于體繪制和二維紋理空間映射來實(shí)現(xiàn)體數(shù)據(jù)的繪制,然后遍歷繪制所有三維平面控件,從而完成體數(shù)據(jù)和三維平面控件的混合繪制;步驟S3使用鼠標(biāo)來交互地操縱體數(shù)據(jù)和三維平面控件,并在鼠標(biāo)動(dòng)作后返回步驟S2以更新混合繪制,從而實(shí)現(xiàn)對(duì)體數(shù)據(jù)的交互式切割。
2. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于所述三 維平面控件由四個(gè)頂點(diǎn)、四條棱邊以及一個(gè)透明矩形面組成,并封裝了一 個(gè)裁剪平面,裁剪平面的原點(diǎn)和法矢根據(jù)三維平面控件的計(jì)算得到。
3. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于所述體 繪制釆用基于軟件的體繪制,或采用基于圖形硬件的體繪制,并根據(jù)鼠標(biāo) 消息采取層次細(xì)節(jié)的方式來繪制體數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于,所述坐 標(biāo)系統(tǒng)包括體素坐標(biāo)系、模型坐標(biāo)系、世界坐標(biāo)系、視圖坐標(biāo)系和屏幕坐標(biāo)系。
5. 根據(jù)權(quán)利要求4所述的交互式體切割方法,其特征在于,在所述 世界坐標(biāo)系中加入體數(shù)據(jù),根據(jù)體數(shù)據(jù)大小調(diào)整各坐標(biāo)系間的變換關(guān)系, 并使體數(shù)據(jù)的中心點(diǎn)位于視圖裁剪體的中間平面上。
6. 根據(jù)權(quán)利要求4所述的交互式體切割方法,其特征在于,在所述世界坐標(biāo)系中加入一個(gè)或多個(gè)三維平面控件,并根據(jù)體數(shù)據(jù)的大小和位置 來初始化三維平面控件的狀態(tài)。
7. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于,所述體 數(shù)據(jù)的繪制包括以下步驟步驟S21:提取三維平面控件所封裝的裁剪平面信息,利用體繪制計(jì)算出體數(shù)據(jù)在視圖裁剪體近平面上的二維投影圖像;步驟S22:從視圖坐標(biāo)系原點(diǎn)向二維投影圖像的四個(gè)頂點(diǎn)引射線, 計(jì)算各射線與視圖裁剪體中間平面的交點(diǎn),獲得二維投影圖像在中間平面 上的投影矩形,利用紋理映射將二維投影圖像影射到投影矩形上,并進(jìn)行 映射圖像的繪制。
8.根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于,所述遍 歷繪制所有三維平面控件,是對(duì)每一個(gè)三維平面控件進(jìn)行檢査,檢查是否 需要顯示切割面,如果為是,則采樣得到二維切面圖像,并繪制三維平面 控件和二維切面圖像;如果為否,則只繪制三維平面控件。
9. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于,所述鼠 標(biāo)操縱體數(shù)據(jù)是平移、旋轉(zhuǎn)和縮放;體數(shù)據(jù)中心始終位于中間平面上;在 鼠標(biāo)操縱體數(shù)據(jù)時(shí),三維平面控件始終與體數(shù)據(jù)保持相對(duì)靜止。
10. 根據(jù)權(quán)利要求1所述的交互式體切割方法,其特征在于,所述三 維平面控件在世界坐標(biāo)系中的狀態(tài)通過以下鼠標(biāo)操縱方式來改變鼠標(biāo)左 鍵操縱頂點(diǎn),用于實(shí)現(xiàn)三維平面控件的任意旋轉(zhuǎn);鼠標(biāo)左鍵操縱棱邊,用 于實(shí)現(xiàn)三維平面控件的伸縮;鼠標(biāo)左鍵操縱透明矩形面,用于實(shí)現(xiàn)三維平 面控件在裁剪平面內(nèi)的平移;鼠標(biāo)右鍵操縱頂點(diǎn),用于實(shí)現(xiàn)三維平面控件 在裁剪平面法矢方向上的平移;鼠標(biāo)右鍵操縱棱邊,用于實(shí)現(xiàn)三維平面控 件繞透明矩形面對(duì)稱軸的旋轉(zhuǎn);鼠標(biāo)中鍵操縱頂點(diǎn),用于實(shí)現(xiàn)控件在裁剪 平面內(nèi)的縮放。
全文摘要
本發(fā)明基于三維平面控件的交互式體切割方法,為解決如何在基于軟件和圖形硬件的體繪制場(chǎng)景中進(jìn)行交互式體切割的技術(shù)問題,本發(fā)明包括(1)構(gòu)建體數(shù)據(jù)和三維平面控件的集成化繪制環(huán)境;(2)進(jìn)行體數(shù)據(jù)和三維平面控件的混合繪制;(3)通過鼠標(biāo)操縱來完成體數(shù)據(jù)的交互切割。本發(fā)明將體數(shù)據(jù)、三維平面控件、體繪制、混合繪制以及鼠標(biāo)操縱集成在了同一個(gè)環(huán)境中,從而實(shí)現(xiàn)了交互、沉浸式的體切割。同時(shí)體繪制既可以采用基于軟件的體繪制,能夠?qū)崿F(xiàn)大規(guī)模體數(shù)據(jù)的高質(zhì)量繪制,也可以采用基于圖形硬件的體繪制,能夠?qū)崿F(xiàn)中小規(guī)模體數(shù)據(jù)的快速繪制,在體數(shù)據(jù)探查及可視化領(lǐng)域具有重要的應(yīng)用價(jià)值。
文檔編號(hào)G06T15/00GK101593357SQ20081011329
公開日2009年12月2日 申請(qǐng)日期2008年5月28日 優(yōu)先權(quán)日2008年5月28日
發(fā)明者代曉倩, 戴亞康, 鑫 楊, 捷 田 申請(qǐng)人:中國(guó)科學(xué)院自動(dòng)化研究所