• 沒有找到結果。

以結構光三角量測法為基礎之三維成像平台

N/A
N/A
Protected

Academic year: 2022

Share "以結構光三角量測法為基礎之三維成像平台 "

Copied!
48
0
0

加載中.... (立即查看全文)

全文

(1)
(2)
(3)
(4)
(5)

i

以結構光三角量測法為基礎之三維成像平台

學生:李文仁 指導教授:汪光夏博士

摘 要

影像處理技術在現今已成為許多領域競相使用且發展日漸成熟,從二維 到三維的成像技術也隨之發展,在醫學、相關科學研究也都運用影像處理技 術來輔助發展,甚至許多的工具也應運而生。在許多的三維影像重建的研究 中,經常會使用到以結構光使用三角量測法的方式以取得物體的座標來重建 三維影像模型,本研究欲提供一個成像平台,利用 OpenGL 跨平台的特性,

使得以三角量測法所取得的影像座標能輕易地成像並在將來能成為三維影像 的教學工具,或利於其他相關領域上的應用。本研究與桃園國軍總醫院牙科 部合作,將影像重建技術應用於牙周病的診療上,總共分成取像、建模、整 合系統模組三個部份,在本研究中,僅完成建模的部份,後續整合的部份將 會留待後續研究。

關鍵詞:OpenGL、材質貼圖、三維影像重建

(6)

ii

誌 謝

研究所兩年來,承蒙指導教授汪光夏博士耐心、悉心的指導,無論在課 業或是生活上均給予最大的支持,其謙沖且嚴謹的待人處事與治學態度以及 豐富且紮實的學識,皆令學生萬分敬佩,亦是學生學習的典範,能在恩師的 帶領下學習與成長是學生莫大的榮幸。

本篇論文的完成,感謝鄧維兆博士、沈一慶主任等口試委員於百忙之中 撥空指導,提供諸多寶貴意見,使得本論文得以更加完善,在此一併致謝。

研究期間,亦感謝學長姊、學弟妹以及同窗的關懷及資芳同學在課業上的討 論及協助。

最後要感謝的是我的家人,他們在背後默默的支持,是我完成論文的動 力。最後僅以本論文獻給曾經關心、照顧我的師長、朋友以及家人。

李文仁 謹識於中華科管所 中華民國 94 年 7 月 31 日

(7)

iii

目 錄

摘 要... i

誌 謝... ii

目 錄... iii

圖目錄... v

第一章 緒論... 1

1.1 研究背景 ... 1

1.2 研究動機與目的 ... 1

1.3 系統流程 ... 1

1.4 論文架構 ... 2

第二章 OpenGL... 3

2.1 OPENGL 簡介 ... 3

2.2 座標系統 ... 4

2.3 NURBS 曲面 ... 5

2.4 TEXTURE MAPPING... 7

第三章 系統架構實作...11

3.1 系統人機介面簡介 ...11

3.1 座標系統 ... 15

3.1.1 座標轉換 ... 15

3.1.2 旋轉 ... 17

3.1.3 比例尺 ... 24

3.1.4 點座標模型成像問題 ... 30

3.2 曲面繪製 ... 34

3.3 紋理貼圖 ... 35

4.3 多重貼圖 ... 36

第四章 結論與未來展望... 37

4.1 結論 ... 37

4.2 未來展望 ... 37

(8)

iv

參考文獻... 38

(9)

v

圖目錄

圖 1.1 系統流程... 2

圖 2.1 笛卡兒二維座標系統... 4

圖 2.2 三維座標系統... 5

圖 2.3 NURBS 曲面 ... 6

圖 2.4 NURBS 圓柱曲面 ... 7

圖 2.5 一維影像... 8

圖 2.6 二維影像... 8

圖 2.7 材質影像座標示意圖... 9

圖 3.1 深度控制... 11

圖 3.2 模型點座標顯示... 12

圖 3.3 貼圖控制... 12

圖 3.4 曲面繪製控制... 13

圖 3.5 比例尺... 13

圖 3.6 材質影像... 14

圖 3.7 資料表... 15

圖 3.8 掃描物體座標系示意圖... 16

圖 3.9 隸美弗定理... 16

圖 3.10 點座標成像... 17

圖 3.11 成像平台的 View ... 18

圖 3.12 滑鼠往上所做的轉動... 19

圖 3.13 滑鼠沒有旋轉時的成像... 19

圖 3.14 滑鼠往下旋轉的成像... 20

圖 3.15 以 Y 軸旋轉示意圖... 21

圖 3.16 以 Y 軸旋轉示意圖... 21

圖 3.17 滑鼠沒有左右移動時的成像... 22

圖 3.18 滑鼠往右旋轉的成像... 22

圖 3.19 原始比例的模型... 25

圖 3.20 XYZ 同時縮小 ... 26

圖 3.21 XYZ 同時放大 ... 26

圖 3.22 單獨對 X 軸縮小... 27

(10)

vi

圖 3.23 單獨對 X 軸放大... 27

圖 3.24 單獨對 Y 軸縮小... 28

圖 3.25 單獨對 Y 軸放大... 28

圖 3.26 單獨對 Z 軸縮小 ... 29

圖 3.27 單獨對 Z 放大 ... 29

圖 3.28 方型柱體... 30

圖 3.29 臼齒牙齒周圍成像結果... 30

圖 3.30 牙齒周圍成像結果... 31

圖 3.31 門牙的成像結果... 31

圖 3.32 門牙的局部成像... 32

圖 3.33 單面的門牙成像... 32

圖 3.34 鄰近八點座標... 33

圖 3.35 修正完後的曲線... 33

圖 3.36 臼齒周圍的曲面繪製... 34

圖 3.37 門牙周圍的曲面繪製... 34

圖 3.38 上半部門牙以數位影像作貼圖的結果... 35

圖 3.39 以 X 光片數位影像作貼圖... 35

圖 3.40 口內門牙影像與門牙 X 光片影像... 36

圖 3.41 多重貼圖... 36

(11)

1

第一章 緒論

1.1 研究背景

影像處理技術在許多領域中競相被開發使用之際,利用機械視覺的方法 取代人眼,提昇精確性與效率已不容忽視;有鑑於此,2D 影像轉換成 3D 影 像的技術隨之發展,特別是運用於工業檢測與醫學影像之上更為卓越。醫療 影像即運用影像處理技術來協助開發相關 X-Ray 影像檢測、病歷建檔與傳 輸,另有以影像輔助教學(CAI)的產生,許多研究亦紛紛跟進探討解決相關影 像技術的問題。本研究與桃園國軍總醫院牙科部專案產學合作,將立體影像 重建技術應用於牙周病的診療之上,研究區分成 3D 影像重構、3D 影像建模、

醫學診療整合系統模組三大部份,本研究中承接 3D 影像重構的部份進而實 作 3D 影像建模的部份,另待與醫學整合之後,研究更甄完善,可視為牙醫 科學輔助診療之一大進展。

1.2 研究動機與目的

在許多的三維影像重建的研究中,經常會使用到以結構光使用三角量測 法的方式【2、3、4、5】以取得物體的座標來重建三維影像模型,一般的作 法乃將三維影像座標轉成符合現今一些 3D 影像處理軟體的規格而進行成 像,如 AutoCAD、3D studio、Maya 等,但是要轉成這些規格需要花費較多 的時間,加上這些軟體的使用上都需要經過事先的學習才能上手,而且規格 皆不盡相同,在系統移植上不是那麼方便,所以本研究欲提供一個成像平台,

利用 OpenGL 跨平台的特性,使得以三角量測法所取得的影像座標能輕易地 成像並在將來能成為三維影像的教學工具,或利於其他相關領域上的應用。

1.3 系統流程

本論文系統分為兩個主要的部份,第一個部份為座標點成像的部份,即 由結構光三角量測法取得的二維座標經過處理以三維的座標成像在本研究的 成像平台上,並解決一些補點上的問題;第二個部份是影像貼圖的部份,在 處理好的三維座標上作貼圖並處理一些多重貼圖的問題,如圖 1.1 的系統流 程圖所示。

(12)

2

1.4 論文架構

本章簡介了本研究的動機和目的與系統流程。在第二章裡,將介紹研究 中所使用 OpenGL 繪圖介面相關功能。第三章敘述由結構光三角量測法所取 得的二維影像座標轉成三維座標的規格以及解決補點的相關問題,並說明關 於旋轉及比例尺及將三維的影像座標以 Microsoft Visual C++在 OpenGL 的環 境下繪製三維影像模型,並探討相關貼圖的問題。第四章對本研究做一個總 結與對未來研究方向。

圖 1.1 系統流程

隸美弗定理

(13)

3

第二章 OpenGL

2.1 OpenGL 簡介

OpenGL 的正式定義是「繪圖硬體的軟體介面」,亦是一個 3D 繪圖與模 型的程式庫,利用 OpenGL 所提供的功能可以繪製出相當優美的 3D 圖形,

而且 OpenGL 使用了 Silicon Graphics 公司所研發的最佳化演算法,因此,

OpenGL 繪圖效率高而且速度快,所以其應用範圍非常地廣泛,如 CAD、建 築以及動畫繪製等,且 Microsoft 也將 OpenGL 引入 Windows 的作業系統中,

因其種種的優點,最後受到大眾支持與回響。在 Windows 的系統中,OpenGL 是它內建的一個函數庫,擁有超過 300 個以上的指令以及函數,而且隨著版 本增加,指令也隨之增加,基本指令包括基本的幾何外形建構,如點、線、

多邊形等,藉著 OpenGL 的這些指令就可以繪出各樣的圖形;此外,OpenGL 也支援燈光、材質貼圖、霧等特殊效果,經過這些特殊處理可以讓整個 3D 效果顯得更加真實。OpenGL 有一個重大的優點,就是它具有平台獨立性的 優點,所以在不同作業系統與環境下都可以正常運作,因此,OpenGL 指令 中無任何鍵盤與滑鼠的相關輸入指令,也無任何與視窗有關的指令。OpenGL 並非是一種程式語言,而是一種應用程式介面,可以透過某些程式(C 或 C++) 呼叫 OpenGL 的程式庫來使用,實際的 OpenGL 軟體版本放在 Windows 系統 目錄下的 opengl32.dll 動態連結程式庫中。在大多數的作業平台上,OpenGL 工具程式庫(GLU)也都放在 Windows 系統目錄下,其檔名為 glu32.dll,而所 有的 OpenGL 函數、型態以及巨集都放在 gl.h 這個標頭檔裡頭,雖然目前常 用的繪圖應用程式介面除了 OpenGL 還有 Direct3D,但是 Direct3D 無法用在 Windows NT 下的 3D 加速,然而 OpenGL 卻可以適用於所有的 Windows、

Unix 以及 Linux;目前在 3D 的繪圖領域中,大部分都支援 OpenGL,而並非 所有都支援 Microsoft 所專屬的 Direct3D,也因此,使用 OpenGL 的優點之一 是可以跨平台,且最重要的是它完全免費,因此在開發系統上也非常符合經 濟效益,所以本文將採用 OpenGL 這一套工業界標準的繪圖函式庫,來建構 電腦中的三維影像重建。而它具有以下的特點:

一、OpenGL 是工業界標準的繪圖函式庫。

二、OpenGL 是跨平台的函式庫,在 PC、工作站、超級電腦上都可以使

(14)

4

用。

三、硬體廠商都有支援 OpenGL 標準,以 OpenGL 開發的軟體不管在任 何作業系統下,都可以得到相同的輸出結果。

四、OpenGL 擁有直覺式和邏輯式的架構,容易使用。

五、OpenGL 有完整的文件說明。

本研究是透過 Virtual C++的整合開發環境 MFC 做設定,來產生一套可 以提供作三維影像重建系統。

2.2 座標系統

本章節要探討如何在 3D 空間來描述物體。在指定物體的位置與大小之 前,必須有一個提供作為測量與定位參考的框架(frame)。在平面的電腦螢幕 上畫線與點的時候,是以行與列的方式來標明位置。

在 OpenGL 與其它多數 3D API 中,當要建立一個要繪製的視窗時,必須 一併指定座標系統以及座標與螢幕上的實際像素的對應方式。在二維繪圖中 最常用的座標系統就是笛卡兒座標系統,以 X 座標與 Y 座標來描述位置,其 中 X 座標是水平方向的位置量測值,而 Y 則是垂直方向的位置量測值。

圖 2.1 笛卡兒二維座標系統

當二維座標系統加上深度就可以延伸為三維空間。Z 軸與 X 軸及 Y 軸互 相垂直,如圖 2.2:

X Y

(0,0)

(15)

5

圖 2.2 三維座標系統

在本研究所建立的成像系統就是使用 3D 笛卡兒座標系統來描述物體的 位置。接著在下面來看 OpenGL 對曲面的支援。

2.3 NURBS 曲面

在許多的 3D 影像圖形的應用中,都會用到曲線或曲面。吾人可以將一 個曲面分成許多小四邊形或三角形,接著在每個座標點上計算法向量,然後 再使用燈光來營造出滑順而流暢的曲面。利用代數的方法,吾人可以撰寫程 式來計算曲面,使用如三角形串列或四邊形等來產生精細或粗略的視覺效果。

但是在某些情況下,遇到沒有代數式子可以下手的曲線或是曲面,想要 逆向從所看到的結果來推出所逼近的多項式,就不是一件很容易的事了。

Pierre Bezier 體認到電腦繪圖上的需要,建立了一套數學工具,只要指定一小 部份的控制點就可以用來表示曲線或曲面,如此一來,不僅簡化了曲面的表 示方法,更實現了互動式的曲線或曲面調整。

建立 3D Bezier 曲面與 2D 的作法差不多,除了定義 u 值域上的點以外,

還必須定義 v 值上的點。吾人可以使用 evaluator 來計算任何 degree 的 Bezier 曲面,但是對複雜的曲面來說,就必須要組合多個 Bezier 曲面才能夠完成。

而且在加入愈多的控制點後,就會變得很難建立起一個具有良好連續性的曲 面。但在 glu 程式庫裡頭提供了一個較高階的控制方式,叫做 NURBS。

NURBS 代表 non-uniform rational B-spline,相對於 Bezier 曲面,它是一 個更廣義的曲線或曲面,它可以產生 Bezier 曲線或曲面,以及其他種類曲線、

X Y

(0,0)

Z

(16)

6

曲面。

Bezier 曲線是由兩個端點與其他任意個數的控制點來控制整個曲線的形 狀。另一方面,B-splines ( bi-cubic splines )曲線與 Bezier 差不多,但是曲線 會被分段。每一段的形狀只有受到最接近的四個控制點所影響,也因此使得 每一段都可以保有自己的特徵,如同第四階的 Bezier 曲線;所以就算是一條 很長而且有控制點的曲線也可以變得柔順,而每一段的曲線之間都將有 C3 連續性。使用 NURBS 的好處在於我們可以透過調整任何一段曲線中的四個 控制點之影像權重,來達到所需要的柔順度,而這個動作是透過一連串的 knots 來達成。

在每個控制點都有兩個 knots 值,knots 值的範圍與 u 或 v 參數的值域相 互對應,並且不能是遞減的;knots 值決定了 u/v 空間範圍內之控制點的影響 力。在 u/v 參數參數值域上每個控制點都有一段可以隨意控制的曲線。

圖 2.3 NURBS 曲面

圖 2.3 是一四乘四的控制點所建立出來的曲面,隨著每一個控制點的拉 力,使得曲面中間往上提起形成一突起的曲面。而圖 2.4 是一類似圓柱但不 規則的柱體所建立的曲面。

(17)

7

圖 2.4 NURBS 圓柱曲面

後面在第四章將使用 NURBS 在本研究的成像平台中來建構所要呈現的 曲面。

2.4 Texture mapping

OpenGL 提供材質貼圖的函數,讓吾人可以將影像貼到所建立的模型 上。而在 OpenGL 中,每個材質都是指一張圖片,所以在使用上非常簡單且 直接,而它提供 1D 材質與 2D 材質,甚至在更新的 OpenGL 更提供 3D 材質 貼圖,但在這裡僅討論 1D 與 2D 的材質貼圖。

1D 材質是只有寬度但沒有高度的影像,或是說只有一個像素的寬或高,

而它可以取代傳統的著色技巧並且能加快繪圖的速度。下面是一個使用紅、

橙、黃、綠、藍、靛、紫的 1D 材質貼圖示範繪製彩虹的範例,而材質影像 是一行像素點,代表彩虹中的顏色,如圖 2.5 是一個使用 1D 材質的例子。

(18)

8

圖 2.5 一維影像

2D 材質是一張影像,其寬度與高度皆超過一個像素點寬,一般是使用 BMP 的檔案格式讀入。2D 材質通常可以用來替代一些表面較為複雜的幾何 形狀,而材質也可以加入透明度值使貼圖呈現透明,後面會在第四章貼圖的 部份將有詳細說明,圖 2.6 是一個以 2D 材質影像作貼圖的模型。

圖 2.6 二維影像

(19)

9

OpenGL 提 供 各 種 不 同 的 繪 圖 模 式 定 義 三 種 材 質 模 式 。 第 一 種 為 GL_MODULATE,使用此繪圖模式時,它會依照目前燈光與色彩的資訊來調 整材質影像,這也是一般較常用到的模式。第二種模式為 GL_DECAL,它只 使用材質影像,色彩資訊與燈光並不會影響到材質的外觀,這種模式大部分 用 來 作 反 射 貼 圖 , 也 能 夠 製 作 多 層 次 繪 圖 的 效 果 。 第 三 種 模 式 則 是 GL_BLEND,材質影像將與目前材質的顏色、燈光及色彩資訊混合。

OpenGL 使用材質濾鏡以內差兩材質之間的像素值。OpenGL 有兩種材質 濾 鏡 : minification filter(GL_TEXTURE_MIN_FILTER) 及 magnification filter(GL_TEXTURE_MAG_FILTER)。minification filter 比較適用於比材質影 像小的多邊形;magnification filter 則較適合比材質影像大的多邊形。

在 OpenGL 中,使用材質座標對應我們所要貼圖的多邊形的座標,而材 質影像的座標編法如圖 2.7。

圖 2.7 材質影像座標示意圖

在前面章節已經敘述過材質環繞的部份,材質影像座標通常編設都介於 0.0 到 1.0 之間,而當座標超過這個範圍的時候,影像就會被截斷(GL_CLAMP) 或是重覆貼圖(GL_REPEAT);當使用 GL_CLAMP 時,材質座標碰到影像邊 框的時候,會停下來而不會繞到另一邊去,若使用 GL_REPEAT 時,材質影 像會依照需要重複,繞至影像的另外一邊以呈現反覆的圖樣。因限於篇幅的

( 0 , 1 ) ( 1 , 1 )

( 0 , 0 ) s ( 1 , 0 )

t

(20)

10

關係,本章節僅作簡要的介紹,本研究 OpenGL 相關的應用將在將在第四章 詳述。

(21)

11

第三章 系統架構實作

3.1 系統人機介面簡介

本章節首先針對人機介面的功能做簡單的介紹,後續小節中在針對功能 實作的原理有詳細的介紹。

圖 3.1 深度控制

圖 3.1 的紅色圈圈處,是控制模型是否有深度的功能,平常預設為開啟 的狀態。

(22)

12

圖 3.2 模型點座標顯示

圖 3.2 紅色圓圈處為控制點座標是否顯示的功能,預設的狀態為關閉。

圖 3.3 貼圖控制

此部份為控制模型是否開啟貼圖功能,預設狀態為關閉,如圖 3.3 紅色 圓圈處。

(23)

13

圖 3.4 曲面繪製控制

本研究中提供曲面繪製的功能,主要以 NURBS 為主,圖 3.4 紅色圓圈處 為提供此功能的位置,後面有詳細敘述。

圖 3.5 比例尺

(24)

14

比例尺是時常會用到的功能,在本研究中也加入比例尺縮放的功能,如 圖 3.5 紅色圓圈處。

圖 3.6 材質影像

在本研究中提供了貼圖的功能,所以為了讓使用者可以選擇材質影像,

而實作這一部份,目前以牙齒為實作範例,所以僅在介面提供簡單地功能,

如圖 3.6 紅色圓圈處所示。在接下來的章節中,將針對實作一些相關的原理 做詳細的敘述。

(25)

15

3.1 座標系統 3.1.1 座標轉換

本研究從結構光三角量測法所取得的二維座標如圖 3.7 所示:

圖 3.7 資料表

從圖 3.1 中,吾人可以看到資料中有三欄,其中最左邊是角度的編號,中間 的數值是 Y 軸座標的相對位置,最右邊的資料是物體的深度值。

(26)

16

圖 3.8 掃描物體座標系示意圖

從圖 3.8 可以先得知 Y 軸的座標,又由於結構光三角量測的部份是以每 十度取一張影像來計算出其在三維空間中所對應的 Y 座標與深度值,我們可 以利用隸美弗定理來算出 X 與 Z 值,示意圖如下:

圖 3.9 隸美弗定理

所以

θ θ

cos sin X

=

=

= r Z

y Y

r

r X

Z

(r∗cos

θ

, r∗sin

θ

) θ

深度值 Y

軸 相 對 位 置

(27)

17

其中 r 為深度值,而 y 為圖 3.7 的資料欄中間的數值,在經過此計算後,

就可以得到三維的座標模型。

3.1.2 旋轉

接著將轉換好後的座標點讓成像平台讀入,以點的方式把模型成像出 來。吾人把一門牙所轉換好的座標成像後如圖 3.10 所示,模型很清楚地被呈 現出來並且整個輪廓也都很清楚,凹凸的表面也都有表現出來。

圖 3.10 點座標成像

除了將模形呈現出來,本研究希望成像平台能夠提供轉動模型的功能以 方便使用者能觀看模型其他的地方,而最方便的方式,我們希望他能支援滑 鼠的操作。但是在 OpenGL 中,並沒有支援人機互動的介面,也就是沒有支 援滑鼠操作的函式庫,因此這一部份我們以 Visual C++來實現這一個部分的 功能,也考量到日後移植上的需要,在撰寫程式碼的部份皆以物件導向的觀 念寫成類別,方便系統未來若有移植上的需要。

(28)

18

首先,我們以整個 View 的中心點為旋轉的中心點如圖 3.11。

圖 3.11 成像平台的 View

接著,讓模型有前後的轉動如圖 3.12、圖 3.13 及圖 3.14 所示。

View

(29)

19

圖 3.12 滑鼠往上所做的轉動

圖 3.13 滑鼠沒有旋轉時的成像

(30)

20

圖 3.14 滑鼠往下旋轉的成像

我們以滑鼠的 Y 軸的變化量來決定模型前後轉轉的角度,由圖 3.12、

3.13、3.14,我們可看到模型因著滑鼠的移動而模型也前後轉動起來。除了前 後的轉動,當滑鼠有 X 軸的變化量時,模型能繞著模型本身的 Y 軸做順時針 或逆時針旋轉。

(31)

21

圖 3.15 以 Y 軸旋轉示意圖

如圖 3.15 所示,當滑鼠的 X 軸變化往右時,模型以 Y 軸為軸心作逆時 針旋轉,而圖 3.16 則是當滑鼠的 X 軸變化往左時,模型則以 Y 軸為軸心作 順時針旋轉。

圖 3.16 以 Y 軸旋轉示意圖

X Y

Z

滑鼠移動方向

X Y

Z

滑鼠移動方向

(32)

22

為了方便觀察旋轉情形,我們先將模型往下拉,使使用者能看到 X-Z 軸 平面上模型的變化。圖 3.17 是模型經過往下拉後,而沒有 X 軸的變化量所成 像的模型。

圖 3.17 滑鼠沒有左右移動時的成像

圖 3.18 是我們把滑鼠往右移動讓模型轉動的成像。從圖 3.18 中,可以發 現因著滑鼠的移動,模型逆時針旋轉了將近 90 度。

圖 3.18 滑鼠往右旋轉的成像

(33)

23

在程式的撰寫部份,紀錄左鍵按下時的位置,滑鼠左鍵按住移動時的位 置以及滑鼠左鍵放掉的位置來對模型進行旋轉的操作。

void CPaintDlg::OnLButtonDown(UINT nFlags, CPoint point) {

m_MouseDownPoint = point;

SetCapture();

}

我們將滑鼠左鍵按下時的位置以 m_MouseDownPoint 來記錄並且利用 SetCapture()開始追蹤滑鼠的位置。而當滑鼠移動時,分別計算其 X 軸與 Y 軸 的偏移量並轉換成角度,再讓模型以所轉換好的角度讓整個模型的座標點以 此角度轉動。

void CPaintDlg::OnMouseMove(UINT nFlags, CPoint point) {

// Check if we have captured the mouse if (GetCapture()==this)

{

//Increment the object rotation angles

m_xAngle+=((point.y-m_MouseDownPoint.y)/3.6)*3;

m_yAngle+=((point.x-m_MouseDownPoint.x)/3.6)*3;

//Redraw the view

InvalidateRect(NULL,FALSE);

//Set the mouse point

m_MouseDownPoint=point;

};

}

計算 Y 軸變化量並轉換成角度以 m_xAngle 來記錄,而 X 軸則以 m_yAngle 來記錄其值。而當滑鼠左鍵放掉時,我們需要釋放對滑鼠的監控並 把紀錄滑鼠左鍵按下之位置的 m_MouseDownPoint 歸零。

(34)

24

void CPaintDlg::OnLButtonUp(UINT nFlags, CPoint point) {

m_MouseDownPoint = CPoint(0,0);

ReleaseCapture();

}

在這裏使用 ReleaseCapture()將對滑鼠的監控取消掉,當我們按下滑鼠左 鍵時,SetCapture()就開始追蹤滑鼠的位置,左鍵被按住而移動時,滑鼠的位 置 會 因 著 SetCapture() 而 一 直 被 更 新 , 直 到 滑 鼠 左 鍵 被 放 開 才 使 用 ReleaseCapture()取消對滑鼠的監控。

在提供完旋轉的功能後,本研究考量到在許多的應用中,時常會使用到 比例尺的縮放,方便使用者想要觀察模型局部的情形時,可以使用比例尺來 調整模型以利於觀察,在下一小節,我們將實作比例尺的部份。

3.1.3 比例尺

針對比例尺的部份,我們使用 OpenGL 所提供的函式來實作。

glScalef(m_xScale, m_yScale, m_zScale);

glScalef 可以對模型作比例尺的縮放,m_xScale 控制 X 軸的縮放,

m_yScale 控制 Y 軸的縮放,而 m_zScale 控制 Z 軸的縮放。

(35)

25

圖 3.19 原始比例的模型

圖 3.19 是沒有經過任何比例縮放的模型。為了使模型在比例尺的縮放較 有彈性,對於不同的需求各別作 X 軸、Y 軸或 Z 軸的縮放,在成像平台上有 特別的設計,我們接著在下面做詳細的說明。

在成像平台中,我們使用了幾個 Radio Button 設定對哪一個軸作縮放,

並分別提供 X、Y 及 Z 軸各一個 Slider 來進行縮放。圖 3.20 是同時對 XYZ 作 0.6 倍的縮放,而圖 3.21 是同時對 XYZ 軸作 1.4 倍的縮放,紅色圈圈處即 是使三個軸同時縮放的設定。

(36)

26

圖 3.20 XYZ 同時縮小

圖 3.21 XYZ 同時放大

接著是對單一個軸作縮放。當我們要進行單軸比例尺縮放時,要先把 Link 設為 NO,接著只要調整各軸的比例尺就可以放大或縮小。圖 3.22 是在 Link 設定為 NO 的情況下,將 X 軸縮小到 0.3 倍,圖 3.23 則是放大 1.42 倍。

(37)

27

圖 3.22 單獨對 X 軸縮小

圖 3.23 單獨對 X 軸放大

圖 3.24 是單獨對 Y 軸縮小到 0.48 倍,圖 3.25 是單獨對 Y 軸放大到 1.38 倍的成像。

(38)

28

圖 3.24 單獨對 Y 軸縮小

圖 3.25 單獨對 Y 軸放大

圖 3.26 是單獨對 Z 軸縮小到 0.38 倍,圖 3.27 是單獨對 Z 軸放大到 1.38 倍的成像。

(39)

29

圖 3.26 單獨對 Z 軸縮小

圖 3.27 單獨對 Z 放大

(40)

30

3.1.4 點座標模型成像問題

在實作旋轉及比例尺後,我們將討論點座標成像的問題。在這之前,我 們先觀察一下模型的成像。

圖 3.28 方型柱體

圖 3.28 是經由從一橡皮擦所建立而成的影像,我們從結構光三角量測法 所得的座標是較為完整,沒有缺少座標點的現象。

圖 3.29 臼齒牙齒周圍成像結果

(41)

31

而圖 3.29 為一臼齒的成像,所得的座標也趨於完整,沒有缺點的現象。

我們來觀察一下物體表面較沒有規則形狀時,成像所產生的問題。

圖 3.30 牙齒周圍成像結果

圖 3.31 門牙的成像結果

從圖 3.30 臼齒與圖 3.31 門牙的成像結果,發現結構光三角量測法會遇到 有缺點的問題,而且由前面圖 3.28 與圖 3.29 的成像結果比較,可以得知,當

(42)

32

物體曲面較為不規則、凹凸不平則愈容易有缺點的現象,我們將在下面來討 論這個問題。

以圖 3.32 的門牙為例子來探討這個問題,由圖 3.14 我們可以清楚地看到 有缺點或點與點之間一下子變化太大會造成斷層的現象或不平順的情形。

圖 3.32 門牙的局部成像

為了更清楚地看到斷層的情形,我們讓牙齒的座標成像只成像一半。由 圖 3.33 我們就更清楚地看到斷層的情形,為了讓曲線更為平順,我們可以將 缺少的座標點補起來,讓斷層的情形改善。

圖 3.33 單面的門牙成像

對於缺座標點的情形,我們採用八點鄰近補點,如圖 3.34 所示。

(43)

33

X1 X2 X3

X4 X5 X6

X7 X8 X9

圖 3.34 鄰近八點座標

假設 X5 為欲求出的點,我們以鄰近的八個點的平均值來作為 X5 的座標 值,如式子 3.1 所示。

8 / ) X9 X8 X7 X6 X4 X3 X2 X1 (

X5= + + + + + + + (3.1)

補完點經過修正後,曲線看起來比較平順一些,修正完後如下圖 3.35:

圖 3.35 修正完後的曲線

經過修正的模型,模型的面變得平滑,在下一小節,我們將加入曲面繪 製的功能,使模型看起來更真實。

(44)

34

3.2 曲面繪製

在第二章中已經討論過 OpenGL 所提供的曲面繪製相關功能,探討過 NURBS 曲面的種種優點,在本小節將利用本研究所提供的成像平台使用 NURBS 來繪製各樣的曲面。

圖 3.36 臼齒周圍的曲面繪製

圖 3.36 為一臼齒經過座標轉換後,使用 NURBS 來繪製曲面,以四乘四 的控制點所建構的曲面為一個單位,將整個牙周繪製出來,藉著使用 NURBS 曲面,使物體表面的狀況能表現出來。圖 3.37 是一門牙所建構的曲面,在曲 面的建構上可以透過燈光讓曲面更有立體感。

圖 3.37 門牙周圍的曲面繪製

(45)

35

除了曲面的繪製,我們希望能夠讓模型看起來更真實,而 OpenGL 也提 供了貼圖相關的函式庫讓我們可以讓模型以數位影像使模型能更接近真實情 況。

3.3 紋理貼圖

在模型貼圖的部份,本研究將以門牙的模型來當作例子。

圖 3.38 上半部門牙以數位影像作貼圖的結果

圖 3.38 是將本研究在第三章所提到門牙的模型,貼上牙齒口內影像後,

使模型更接近真實牙齒的情況。圖 3.39 門牙的下半部,以 X 光片影像作貼圖。

圖 3.39 以 X 光片數位影像作貼圖

(46)

36

4.3 多重貼圖

本研究中考量到在現實許多情況,我們沒有辦法以單一影像來完全表現 真實的模型,有些材質可能需要兩種或兩種以上的材質影像重疊在一起,使 材質看起來更真實,或有某些情況會需要用到多張影像合成起來進行貼圖,

基於這個考量,我們在成像平台中也提供多重貼圖的功能。

圖 3.40 口內門牙影像與門牙 X 光片影像

將圖 3.40 的口內影像與 X 光片影像作多重貼圖,先貼上 X 光片影像再 加入口內影像,合成後影像如同圖 3.41 所示,經過兩張影像合成,使材質影 像呈現出不同視覺感受。

圖 3.41 多重貼圖

在下一個章節,將針對本研究做一個結論並討論其未來研究方向。

(47)

37

第四章 結論與未來展望

4.1 結論

經由本研究所提供的三維成像平台,使三角量測法所取得的二維座標能 快速地經由隸美弗定理而轉換為三維座標而進行成像,並且提供旋轉、比例 尺的功能,提供使用者從不同的視角來觀看模型,且解決點座標模型會有缺 少點而導致曲線不平滑的問題,使得曲面看起來更加平順,並提供了模型曲 面繪製的功能,讓使用者能明顯地看出模型的表面凹凸的變化;另外,提供 了貼圖的功能,讓整個模型能透過貼圖更能模擬真實的情況,而多重貼圖的 部份,則讓使用者對於無法以單一材質影像來呈現模型的時候,可以藉著多 重貼圖來建立理想的材質影像,使模型看起來能更加接近真實的物體。

4.2 未來展望

本研究已提供了成像平台主要的架構,基本的功能已趨於完備,但在貼 圖的功能上仍稍嫌不足,後續研究可以針對貼圖的部份進行研究,目前本成 像平台在兩張材質貼圖影像中尚未做到貼圖影像接合處的相關處理,如兩張 材質影像接合處會有黑線產生、對兩張影像做顏色或色調做處理使相鄰的材 質影像能看起來更真實。在本研究結束之後,國軍桃園總醫院牙科沈主任將 整合取像及本研究建模兩部份,應用在牙周病患的診療上,也將本研究不足 之處繼續改善,使本研究的成像平台更趨於完善。

(48)

38

參考文獻

1. 大新資訊譯,Richard S. Wright, Jr. Michael Sweet 著(2000),「Open GL 超 級手冊」,碁峰資訊。

2. 胡金星(2000),「白光三維輪廓量測系統」,中原大學機械工程學研究所碩 士論文。

3. 陳嘉旗(2004),「正弦條紋投射法於錫膏三維曲面輪廓量測之應用」,中興 大學機械工程學研究所碩士論文。

4. 廖界程(2004),「數位結構光三維顯微量測系統之研發」,台北科技大學機 電整合研究所碩士論文。

5. 謝元銘(2003),「三維 BGA 檢測系統之發展與應用」,台灣大學機械工程 學研究所碩士論文。

6. Rafael C. G. and Richard E. W. (2002), Digital Image Processing, Prentice-Hall.

7.

Http://nehe.gamedev.net

參考文獻

相關文件

這些都需要把圖形描繪出來以輔助求解,平時宜培養畫圖解題的習慣。如:第 8、.

左邊有一個平面紙板圖形,右邊有數個立體圖型,左邊的紙板可合成右

以下簡單介紹魔術三角形: 如圖 1, 若三角形每邊有 三個數且數字和都是定值, 稱為 3 階 (傳統) 魔術三角形; 如圖 2, 若每邊有三 個數且較大兩數和減最小數的差都是定值, 稱為

{ 許多問題都是請受訪者以李克特尺度指出 其同意或不同意的程度,這些問題可以正

(即直角三角形斜邊中點為此三角形的外心。)

定理: : : :2.1-2 全等三角形對 全等三角形對應角的對邊相等 全等三角形對 全等三角形對 應角的對邊相等 應角的對邊相等 ... S.三角形全等定理 三角形全等定理 三角形全等定理

檢查圖形上的每一點在對稱軸之兩側等距離位置是否都有對稱點,若 有,則此圖形是線對稱圖形。. ( 若圖形可以拿起來對折,可以沿著對稱軸對折,檢查圖形是否會完全

MSS6.4.2 基於判定條件運用演繹法證明全等和相似三角形 MSS6.4.3 驗證三角形四心如內心、外心、垂心和形心的作圖法 MSS6.5 認識四邊形的性質