• 沒有找到結果。

使用 OpenCL 應用於影像對位

N/A
N/A
Protected

Academic year: 2022

Share "使用 OpenCL 應用於影像對位 "

Copied!
38
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

使用 OpenCL 應用於影像對位

Applications of OpenCL in Image Registration

系 所 別 : 生物資訊學系碩士班 學號姓名 : M10020002 林偉聖 指導教授 : 林 志 陽 博 士

中 華 民 國 103 年 1 月

(2)
(3)
(4)

i

摘 要

本論文提出一個使用開放式計算語言(Open Computing Language, OpenCL)的平 行處理能力加速影像對位(Image Registration)的方法,可以廣泛地應用在生物或醫 學影像上,例如同步輻射(Synchrotron Radiation)影像在拍攝的過程當中,常因機器 的震動而導致拍攝出來的圖片會產生位移的現象,如果以單線程程序來進行影像對位,

會因計算量龐大,而消耗不少時間,因此我們使用開放式計算語言的平行處理特性來 加速對位計算。影像對位方法則是使用對位效果較好的共同資訊(Mutual Information) 量,但單線程的計算所花費的時間較長,因此我們把共同資訊量的計算分配線程,並 利用 GPU 做平行處理,以達到增加程式執行效率。實驗結果顯示在開放式計算語言 環境下實做影像對位,效能可提升約 35%以上。

關鍵字:影像對位、共同資訊量、開放計算語言

(5)

ii

ABSTRACT

This paper proposed a method which accelerate the speed of image registration by using OpenCL with parallel processing capacity. The method can be apply in Biomedical Images widely. For example, when synchrotron radiation image is shooting that would be usually destructed by machine vibration and this destruction could result in image displacement. If we use single-threaded program to registration images could waste much time due to huge amount of calculation. So that we use OpenCL to accelerate registration calculation. Mutual information is a good method widely used in image registration, so that we use the mutual information to register images. Single-threaded program would cost much time when it is running. So that we use GPU to calculate mutual information, it will raise program execution efficiency. The experimental result shows that the efficiency could raise above 35% when we do image registration by using OpenCL.

Keywords:Image Registration, Mutual Information, Open Computing Language

(6)

iii

致謝

能夠順利完成這篇論文,首先要感謝林志陽老師的指導,使我在碩士班的日子裡,

除了學習到許多相關領域的專業知識,還學習到做事情的態度與方法。承蒙交通大學 荊宇泰老師與本校曾文慶老師對本論文的指導並提供許多寶貴的意見。在此向三位老 師致上最誠摯的謝意。

感謝在碩士生涯與我共同努力的同學凱傑、喜偉、葉融、啟婷、宜慧及日旭的互 相勉勵,以及感謝學姊欣怡、益菁及嘉蓉在課業生活上的幫助,同時感謝學弟冠甫、

利偉和許多大學部的學弟妹在生活上帶來的樂趣及歡笑。

最後感謝我的家人,感謝她們辛苦的栽培及默默的支持與關心,使我才得以順利 完成此論文,並感謝在外地支持關心我的朋友宛鷺及憲君,感謝他們所給予的關心及 祝福。再次感謝所有幫助過我及關心我的人,希望你們可以跟我一起分享這份榮耀與 喜悅。

(7)

iv

目錄

摘 要 ... i

ABSTRACT ... ii

致謝 ... iii

目錄 ... iv

圖目錄 ... vi

表目錄 ... vii

第一章 緒論 ... 1

1.1 研究動機及目標 ... 1

1.2 圖形處理器高效能運算 ... 2

1.3 影像對位概述 ... 3

第二章 影像對位與開放計算語言 ... 4

2.1 共同資訊量 ... 4

2.1.1. 共同資訊量計算 ... 5

2.1.2. 共同資訊量特徵分析 ... 7

2.2 圖形處理器設備架構 ... 7

2.2.1. 平台模組 ... 8

2.2.2. 內存模組 ... 9

2.2.3. 執行模組 ... 10

2.2.4. 編程模組 ... 12

第三章 方法 ... 14

3.1 影像對位實作 ... 14

第四章 實驗結果 ... 20

4.1 實驗環境 ... 20

4.2 實驗成果 ... 21

(8)

v

4.3 執行結果 ... 22 第五章 結論與未來發展 ... 27 參考文獻 ... 28

(9)

vi

圖目錄

圖 1-1 CPU 和 GPU 的簡易架構 ... 1

圖 1-2 CPU 與 GPU 每秒浮點數運算 ... 2

圖 1-3 CPU 與 GPU 記憶體頻寬 ... 2

圖 1-4 (a)同步輻射影像對位前(b)同步輻射影像對位後 ... 3

圖 2-1 共同資訊量 ... 4

圖 2-2 (a)5×5 影像 A (b)5×5 影像 B ... 5

圖 2-3 二維影像數值對 ... 6

圖 2-4 二維影像直方圖 ... 6

圖 2-5 平台模型 ... 9

圖 2-6 OpenCL 設備架構概念模型 ... 10

圖 2-7 索引空間示意圖 ... 11

圖 2-8 執行模組流程 ... 12

圖 2-9 編程模組 ... 13

圖 3-1 Entropy 範圍示意圖 ... 14

圖 3-2 取得 Eb示意圖 ... 15

圖 3-3 處理單元配置數量示意圖 ... 16

圖 3-4 影像大約性對位示意圖 ... 17

圖 3-5 影像對位程式流程圖 ... 19

圖 4-1 圖片取邊緣 ... 23

圖 4-2 直方圖 ... 24

圖 4-3 (a)未對位的原始圖片 (b) 對位移動後圖片 ... 25

圖 4-4 圖像對位結果 ... 26

(10)

vii

表目錄

表 2-1 共同資訊量特性 ... 7

表 2-2 內存分配訪問表 ... 10

表 3-1 有無大約性比對對照表 ... 17

表 4-1 桌上型電腦程式執行時間表 ... 21

表 4-2 筆記型電腦程式執行時間表 ... 22

表 4-3 OpenCL 效能提升數值表 ... 22

(11)

1

第一章 緒論

1.1 研究動機及目標

現今的醫療診斷系統當中,時常利用攝影技術來得到相關的資訊,利用連續播放 多張二維影像,來達到三維立體影像的效果。但在連續拍攝的過程當中,往往會因為 機器的一些微小震動,導致拍攝出來的影像在連續撥放的同時目標會跟著上下左右移 動,使得觀測人員在觀察的過程中無法精確的判斷。而影像對位則是把多張影像對位 並使相似的目標物移動到同一座標上,使得在連續輸出的同時,達到讓目標物減少位 移,以利於觀測人員在觀測時可以做出更精確的判斷。

開放計算語言(Open Computing Language, OpenCL)原作為蘋果公司,之後交給 Khronos Group 開發,是一種異構平台編寫程式的框架,能夠支援不同平台與不同供 應商的設備,讓開發人員可以高效且充分的利用異構平台處理,透過 CPU 及 GPU 的 平行處理,把重複性的運算分配到每個處理單元,利用平行作業的方式,可降低程式 重複性運算的時間。

CPU 和 GPU 有著不同的執行計算能力,CPU 的計算邏輯單元(arithmetic logic unit, ALU)比 GPU 強,但相對的計算邏輯單元數目 CPU 就比 GPU 少如圖 1-1,以至於造 成平行處理的效能會有所差異。本論文在開放計算語言環境下做影像對位,降低影像 對位計算上所花費的時間,以達到提高整體工作的效能。

圖 1-1 CPU 和 GPU 的簡易架構[1]

(12)

2

1.2 圖形處理器高效能運算

目前的圖形處理器(Graphics Processing Unit, GPU)在記憶體的大小、核心的數 量與舊有的設備相比都有著明顯的增加,而記憶體的頻寬與浮點數的運算在近年來也 都高於中央處理器(Central Processing Unit, CPU),如圖 1-2、圖 1-3。以至於在做大 規模運算的同時,會利用 GPU 所具有單指令多數據(Single Instruction Multiple Data, SIMD)的特性,把運算工作交給 GPU,而這種利用 GPU 做繪圖處理以外的運算可 稱為通用圖形處理(General-purpose computing on graphics processing units, GPGPU)。

圖 1-2 CPU 與 GPU 每秒浮點數運算[1]

圖 1-3 CPU 與 GPU 記憶體頻寬[1]

(13)

3

1.3 影像對位概述

影像對位(Image Registration)就是將兩張或兩張以上的影像類似的部分相交起 來,也可說是把多張影像融合起來[2]。圖 1-4 的例子就是把兩張同步輻射影像利用 共同資訊量 ( Mutual Information )來做融合,結合之後可以使觀測者能夠更精準快速 的判斷其中所包含的資訊。

(a)

(b)

圖 1-4 (a)同步輻射影像對位前(b)同步輻射影像對位後

(14)

4

第二章 影像對位與開放計算語言

影像對位(Image Registration)的方法有很多種,可分為 Area-based methods 和 Feature-based methods 。 Area-based methods 是 把 重 點 放 在 特 徵 點 的 對 位 上 , Correlation-like methods、Fourier methods 和 Mutual information methods 都是屬於 Area-based methods。而 Feature-based methods 則是把重點放在影像結構特徵(如:特 殊背景、點、線)的搜尋,spatial relations 和 invariant descriptors 就屬於 Feature-based methods[2]。而文獻[3]中有提及 Mutual information methods 在影像上的使用較為廣泛,

而且準確性也很高,因此本論文採用共同資訊量(Mutual information)做影像對位,

並實作於開放計算語言。

2.1 共同資訊量

共同資訊量是取得兩筆統計資料的相互訊息,如圖 2-1。本論文利用 Shannon Entropy[4]在影像上做計算,取得影像的二值化直方圖並由直方圖算出每個值所出現 的機率,由機率算出影像的熵(Entropy)值,再由 Hill et al.[3] 所提出的聯合直方圖

(Joint Histogram)算出兩張二值化影像對應點對的機率,取得聯合熵(Joint Entropy), 再由公式 2-1 取得共同資訊量。

; ,

(2-1)

圖 2-1 單獨 H(A)、H(B),聯合 H(A,B),共同資訊量 I(A;B)

(15)

5

2.1.1. 共同資訊量計算

本小節將用簡單的範例介紹共同資訊量的基本算法。

(a) (b)

圖 2-2 (a)5×5 影像 A (b)5×5 影像 B

一開始我們先用公式 2-2 算出影像 A 跟影像 B 的熵(Entropy)值,影像 A 出現的值 有 5、6、7、8、9,其機率分別為 、 、 、 、 ,影像 B 出現 的值有 5、6、7、8、9,其機率分別為 、 、 、 、 ,分別帶 入公式 2-2。

( )

(2-2)

影像 A 得到 : H(A)=-3/25+(log 3/25) - 5/25+(log 5/25) - 7/25+(log 7/25)-6/25+(log 6/25)- 4/25+(log 4/25)

影像 B 得到 : H(B)=-6/25+(log 6/25)*2- 7/25+(log 7/25)- 4/25+(log 4/25) -2/25+(log 2/25)

再把兩張影像的值做對應,之後會得到兩張影像的 Joint Histogram,如圖(2-3)。

(16)

6

圖 2-3 二維影像數值對

由二維影像直方圖推出數值對的機率如圖 2-4。

圖 2-4 二維影像直方圖

取得二維影像數值對機率,在把機率數值帶入公式 2-3 求得聯合熵(Joint Entropy)。

(2-3)

5, 5 5, 5 5, 5 6, 5 6, 5 6, 5

6, 6 6, 6 7, 6 7, 6 7, 6 7, 6

7, 7 7, 7 7, 7 8, 7 8, 7 8, 7 8, 7

8, 8 8, 8 9, 8 9, 8

9, 9 9, 9

0 1 2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8 9 10

(17)

7

得到 : H(A,B)= -3/25+(log 3/25)*3 - 2/25+(log 2/25)*4 - 3/25+(log 3/25)*2

取得影像 A 和影像 B 的熵(Entropy)跟聯合熵(Joint Entropy),帶入公式 2-1 即可 得到影像 A 和影像 B 的共同資訊量。

2.1.2. 共同資訊量特徵分析

由表 2-1 可以了解,共同資訊量的數值如果為零,就表示兩張影像沒有相關,而 共同資訊量不會為負值,如果兩張影像相同,熵(Entropy)值跟共同資訊量(Mutual information)的值會相同

表 2-1 共同資訊量特性[5]

Non-negativity : I(A;B)≧0

Independence : I(A;B)=0 <->

Symmetry : I(A;B)=I(B,A)

Self information : I(A;A)=H(A)

Boundedness : I(A;B)≦ min(H(A), H(B)

I(A,B)≦(H(A)+ H(B))/ 2 I(A,B)≦ max(H(A), H(B))

I(A,B)≦ H(A,B)

I(A,B)≦ H(A)+ H(B)

2.2 圖形處理器設備架構

現在很多的設備都在追求效能的提升,從增加 CPU 的效能到增加 CPU 的數量,

由於增加 CPU 的數量實在有限,所以就發展出利用 GPU 去做運算。GPU 的核心比

(18)

8

起 CPU 要高上許多,加上 GPU 的架構與強大的計算能力,有利於大量資料的平行處 理運算、大大縮短執行時間,增加效率。

過去通常是使用 NVIDIA 所提出的計算統一設備架構(Compute Unified Device Architecture, CUDA),利用 CUDA 的 API 和 C 語言去編譯、分配資料在 GPU 的平行 運算。現在的平台設備越來越多元化,在這種情況下 CUDA 只適用於自家的處理器,

無法運用在其他的平台設備上,所以蘋果公司就連合 NVIDI、AMD、Intel 和 IBM 等 廠商合作,提出可以跨平台的開放計算語言(Open Computing Language, OpenCL)。

OpenCL 是異構平台編寫程序的開放框架,由編寫 Kernel 的語言和定義控制平台 的 API 所組成,其支持的異構平台則由多核 CPU、GPU 所組成[6]。主要是用於數據 分割和任務分割的平行計算。其架構可分為四大類:平台模型 (Platform Model)、内 存模型 (Memory Model)、執行模型 (Execution Model)、编程模型 (Programming Model) 。

2.2.1. 平台模組

在平台模型當中,一個主機(Host)可以搭配許多個設備(Device)如圖 2-5,

每個設備裡可有一個或多個計算單元(Compute Unit),計算單元中又可分為一個或 多個處理單元(Processing Element),計算的部分則是在處理單元上做運算。主機會 發出命令使設備去執行任務,處理單元會依照單指令多數據(Single Instruction, Multiple Data, SIMD)或單程序多數據(Single Program, Multiple Data, SPMD)去執 行命令。

(19)

9

圖 2-5 平台模型[6]

2.2.2. 內存模組

一般的情況下主機的記憶體通常是跟設備的記憶體獨立分開的,雖然設備可以直 接讀取主機的記憶體,但由於這樣會降低處理運算的效能,所以當有任務要計算的同 時,會把數據從主機上的記憶體拷貝到設備上的記憶體再做運算。而設備上的記憶體 又可分為全域記憶體(Global Memory)、區域記憶體(Local Memory)、常量記憶體

(Constant Memory)和私人記憶體(Private Memory)四大類,如圖 2-6:

1. 全域記憶體(Global Memory):所有的處理單元都可以對此區域做讀寫的動作,

讀寫可能會被緩存起來。

2. 區域記憶體(Local Memory):每個計算單元都有自己的區域記憶體,計算單元 內的所有處理單元都可以對此區域做讀寫,可映射到全域記憶體上。

3. 常量記憶體(Constant Memory):在內核執行的過程中保持不變,由主機端負責 格式初始化。

4. 私人記憶體(Private Memory):每個處理單元都有自己的私人記憶體,別的處理 單元無法讀寫別的處理單元的私人記憶體。

(20)

10

表 2-2 列出了主機跟內核端對這些記憶體的分配與訪問方式。

圖 2-6 OpenCL 設備架構概念模型[6]

表 2-2 內存分配訪問表

Global memory Local memory Constant memory Private memory

Host 端

分配 動態分配 動態分配 動態分配 不可分配

訪問 可讀可寫 不可訪問 可讀可寫 不可訪問

Kernel 端

分配 不可分配 靜態分配 靜態分配 靜態分配

訪問 可讀可寫 可讀可寫 只可讀 可讀可寫

2.2.3. 執行模組

由主機上的主程式程序(Host Program)和設備上的內核(Kernel)所組成,通 過主程序來定義上下文(Context)並管理內核在設備上的執行。一開始主機會先定 義出索引空間如圖 2-7,利用每個作業項的座標來標示 Global ID,執行的命令相同,

但其中的數據不同。

(21)

11

OpenCL 中的索引空間又稱 NDRange,是一個 N 維的索引空間,可以是一維、

二維或三維,圖 2-7 包含作業項的 Global ID 和相對應的其他 ID 組,作業項的索引空 間為( , ),作業組大小為( , ),Global ID 的偏移量為( , )。作業像 也可以用 Global ID ( , )表示,或用作業組 ID( , )、作業組的大小( , ) 和在作業組中的局部 ID( , )三項加起來表示[6],如公式 2-4。

( , ) ( , )

(2-4)

作業組的數目計算如公式 2-5 :

( , ) ( , )

(2-5)

作業項所屬作業組 ID 如公式 2-6:

( , ) ( ,

(2-6)

圖 2-7 索引空間示意圖,Global ID(6,5)、Local ID(2,1)、Work - Group ID(1,

1)

定義完索引空間之後,接下來主機會利用 OpenCL 的 API 為執行的內核創建和使

用上下文(Context),上下文中包含設備、內核、程式對象與內存對象,可用來處理

內核執行命令、內存命令和同步命令,而同步命令又可分成順序執行與亂序執行。

(22)

12

圖 2-8 執行模組流程

2.2.4. 編程模組

編程模組可分成數據平行、任務平行與數據任務混合平行,而這些平行模式都有 支援在同一工作組中的所有節點同步、同一個 context 不同 command queue 的同步和 同一個 command queue 不同 commands 的同步。

數據平行利用索引空間所定義的 ID 去取得作業項所要處理的數據,而作業項又 分為顯示和隱示兩種分級,顯示分級是可以設定平行處理的作業項總數,並將作業像 劃分到作業組當中。而隱示分級則是可以設定平行處理的作業項總數,劃分的工作則 交給 OpenCL 管理。

任務平行在執行中每個作業組中只有一個作業項,獨立於任何的索引空間,把所 有任務與內核都入隊。

(23)

13

圖 2-9 編程模組 編程模型

任務平行模式 數據平行模式

每個工作組只有一個計 算單元,工作組裡面只有

一個工作項在執行任務

利用 Global ID 或 Local ID 來映射內存元素

顯式分級模型 隱式分級模型

需指出工作項數目 和所屬的工作組

只需指出工 作項數目

(24)

14

第三章 方法

在此章節裡,將會介紹如何把影像對位的技術利用開放式計算語言(OpenCL)

的平行處理來達到增加效能的結果。在 OpenCL 的環境下,利用 GPU 多核平行處理 的特性,把須執行多次的程式片段,依照核心的數目安排線程與順序後,執行平行計 算。

3.1 影像對位實作

影像對位的運算主要是耗費在求出共同資訊量,假設我們把兩張影像 A 和 B 做 對位,一開始我們會在影像 A 上框選出 ROI 算出影像 A 的 entropy Ea,之後會在影像 B 上延伸 ROI 的範圍,如圖 3-1。之後依照順序求出影像 B 上的 entropy Eb,如圖 3-2。

我們把影像 B 上的每個 entropy 分配處理單元,使得影像 B 上的 entropy 可以利用平 行處理的方式計算。計算完成後求出影像 B 內最大共同資訊量的 ROI,再把影像 B 的 ROI 移動到與影像 A 上 ROI 相同的位置。

(a) (b)

圖 3-1 Entropy 範圍示意圖。(a)紅色為一開始框選出的 ROI。(b)紅色為圖(a)上 ROI 的 範圍,藍色為 ROI 的延伸。

(25)

15

(a) (b)

(c) (d)

(e) (f)

圖 3-2 取得 Eb示意圖,紅色邊框(---)為選取範圍,藍色邊框(==)為計算範圍。(a)為一 開始所選範圍與計算範圍。(b)綠色邊框( )為一開始計算的位置,而(C)是第二 個計算位置,之後以此類推向右邊移動,移動至最右邊後計算位置向下移動如(d),

之後也是向右移動一直到(e),(f)為最後一個 entropy(2)計算位置。總共有 25 個 entropy 數據。

在處理單元的分配,我們首先會取得一開始 ROI 的 XY 軸長度與 ROI 延伸過後 XY 軸長度,之後處理單元的數量就用 ROI 延伸過後的 X 軸減掉 ROI 的 X 軸在乘以

(26)

16

ROI 延伸過後的 Y 軸,也就是(X2-X1)*Y2,如圖 3-3。每個線程計算自己的 Eb,計算 完成後,再統計範圍內像素出現的次數,等所有線程都計算完成後,再把結果加起來。

圖 3-3 處理單元配置數量示意圖

為了增加對位的精確度,通常我們會先把圖片做 Sobel 的處理並把延伸軸設定的 稍微大一點。但延伸軸越大,所花費的時間也會越多。因此我們利用影像縮小的方式 先進行大約性的對位,如圖 3-4。紅色為比對範圍,黃色為 XY 軸延伸比對區域,原 本需比對位置有 25 個,縮小成只需比對 16 個,之後再利用坐標,以延伸的方式進行 較精確性的比對。而由表 3-1 可得知,除了可提升準確度,也可大幅降低所花費的時 間。

(27)

17

(a) (b)

(c) (d)

圖 3-4 影像大約性對位示意圖。紅色(=)為比對範圍,黃色(---)為 XY 軸延伸比對區 域。(a)原始圖片大小。(b)為(a)圖縮小 2 倍,裡面數字為相對應的 pixel 位置。(c)假設 比對出紅色(=)範圍為最適合的區域。(d)還原回原始大小,比對區域範圍縮小。原本 需比對位置有 25 個,縮小成只需比對 16 個。

表 3-1 有無大約性比對對照表

計算設備 XY 延伸軸 有無大約性比對 縮小倍數 時間

OpenCL_GPU (20,20) O 8 1 sec

OpenCL_GPU (20,20) X X 11 sec

縮小

還原

(28)

18

圖 3-5 為 OpenCL 環境下影像對位程式流程圖,OpenCL 藉由 C 語言與 OpenCL 的 API 來控制並管理 GPU。首先我們會在 Host 端設定 Device 端所需執行的 Kernel 程式、

線程的大小、任務分配與記憶體的配置,再把資料傳至 GPU 進行運算。以下為 Host 端與 Device 端的任務分配。

Host 端 :

1. 讀取圖片資訊存至 Host 記憶體中。

2. 使用 OpenCL API 編譯 Kernel。

3. 配置 GPU 記憶體與線程的大小。

4. 算出第一張圖片所框選範圍之 Ea。 5. 配置 GPU 記憶體與線程的大小。

6. 讀回 GPU 所傳回資料,算出 Joint Entropy 與 Mutual Information,選取最佳的 Eb, 存取其座標,用 Eb取代 Ea再移動圖片位置。

Device 端 :

1. 把原始圖片做 Sobel 運算,計算完成傳回 Host 記憶體。

2. 每個線程讀取 Kernel 做平行處理,算出下一張圖片延伸 ROI 的 Eb

(29)

19

Host Device

圖 3-5 影像對位程式流程圖 開始

讀取圖片資訊到 Host 記憶體

選擇影像 ROI

編譯 Kernel

算出第一張圖片選取範圍的 Ea

配置 Device 記憶體大小與線 程

每個線程讀取 Kernel 做平行 處理,計算出第二張圖片延伸

ROI 的 Eb

算出 Joint Entropy 與 Mutual Information

選取最佳的 Eb,存取其座標,用 Eb取代 Ea再移動圖片位置

是否完成 所有影像 對位?

Complete NO YES

配置 Device 記憶體大小與線 程

把原始圖片做 Sobel 運算,計 算完成傳回 Host 記憶體

(30)

20

第四章 實驗結果

4.1 實驗環境

以下是實驗軟硬體設備:

桌上型電腦:

1. CPU:Intel(R) Core(TM) 2 Quad CPU Q6600 @ 2.40GHz

● Compute units:4

2. GPU:NVIDIA GeForce GTX 260 @ 1242MHz

● GPU 記憶體:869 MB ● Processing Element:112 3. 記憶體 : 4.00 GB

4. 系統類型:64 位元

5. 作業系統:Windows7 企業版

6. 開發軟體:Microsoft Visual Studio 2010 7. 計算語言:OpenCL 1.1 CUDA 4.2.1 8. 解析度:1920 * 1200

筆記型電腦:

1. CPU:Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz

● Compute units:4

2. GPU:AMD Radeon HD 6630M @ 485MHz

● GPU 記憶體:1024 MB

● Processing Element:480 3. 記憶體 : 8.00 GB

4. 系統類型:64 位元

5. 作業系統:Windows7 家用進階版

(31)

21

6. 開發軟體:Microsoft Visual Studio 2010

7. 計算語言:OpenCL 1.1 AMD-APP-SDK-v2.4 (595.10) 8. 螢幕解析度:1366 * 768

4.2 實驗成果

表 4-1 與表 4-2 為程式執行於筆記型電腦和桌上型電腦所花費的時間,而表 4-3 為 OpenCL 效能提升數值表,由表可得知使用 OpenCL 平行處理技術可大幅提升執行 效率、降低程式執行所需花費的時間。

表 4-1 桌上型電腦程式執行時間表

Event CPU OCL_CPU OCL_GPU Number

Negative

0.6 sec 0.138 sec 0.558 sec 20

Binarization

1.084 sec 0.838 sec 0.844 sec 20

Sobel

12.11 sec 0.921 sec 0.978 sec 20

Rotation

45.77 sec 14.62 sec 22.44 sec 1

Registration

377.97 sec 239.053 sec 244.404 sec 100

Histogram

0.505 sec 0.362 sec 0.434 sec 20

(32)

22

表 4-2 筆記型電腦程式執行時間表

Event CPU OCL_CPU OCL_GPU Number

Negative

0.447 sec 0.336sec 0.29 sec 20

Binarization

0.782 sec 0.459 sec 0.455 sec 20

Sobel

7.59 sec 1.263 sec 0.631 sec 20

Rotation

34.42 sec 14.91 sec 14.6 sec 1

Registration

248.83 sec 166.38 sec 164.24 sec 100

Histogram

0.349 sec 0.258 sec 0.232 sec 20

表 4-3 OpenCL 效能提升數值表

Device Negative Binarization Sobel Rotation Registration Histogram

Notebook

35.12% 41.82% 95.21% 59.01% 34.00% 33.52%

Desktops

7.00% 22.14% 93.79% 50.62% 35.34% 14.06%

4.3 執行結果

圖 4-1 和圖 4-2 為程式利用 OpenCL GPU 執行取邊緣和直方圖之結果。本文同步 輻射影像皆為同步輻射中心胡宇光博士提供。

(33)

23

圖 4-1 左邊為原圖,右邊為圖片取邊緣結果

(34)

24

圖 4-2 直方圖

(35)

25

當圖片進行對位時,會進行圖片移動,移動至與上一張對位最好的位置,圖 4-3 (b) 圖白色部分就是移動的距離,而圖 4-4 為圖片對位後結果。

(a)

(a)

圖 4-3 (a)未對位的原始圖片。(b) 對位移動後圖片,白色部分為移動距離。

(36)

26

圖 4-4 圖像對位結果

(37)

27

第五章 結論與未來發展

在本研究中,我們在 OpenCL 環境下使用了 Mutual Information 的方法來做影像 對位。我們利用平行處理的特性,使得 CPU 和 GPU 能達到多核心同時執行任務,再 加上影像對位前先縮小圖片做大約性比對的方法,使得影像對位的時間更能大幅降 低。

OpenCL 能支援許多的平台,可是這次只測試了在 Windows 7 環境下 AMD、

NVIDIA 和 Intel i5 這些設備,未來可以繼續測量 Linux 系統與其他設備。而在 OpenCL 的環境下做影像對位,未來也可以嘗試用相同的 Kernel,但不同寫法與排列使設備的 內存訪問可以提升,進而可榨出設備更多的效能與使用率。

(38)

28

參考文獻

[1] Cuda, C., CUDA C PROGRAMMING GUIDE. NVIDIA Corporation, October, 2012.

[2] Zitova, B. and J. Flusser, Image registration methods: a survey. Image and vision computing, 2003. 21(11): p. 977-1000.

[3] Pluim, J.P., J.A. Maintz, and M.A. Viergever, Mutual-information-based registration of medical images: a survey. Medical Imaging, IEEE Transactions on, 2003. 22(8): p.

986-1004.

[4] Shannon, C.E., A mathematical theory of communication. ACM SIGMOBILE Mobile Computing and Communications Review, 2001. 5(1): p. 3-55.

[5] Maes, F., et al., Multimodality image registration by maximization of mutual information. Medical Imaging, IEEE Transactions on, 1997. 16(2): p. 187-198.

[6] Group, O.W., The OpenCL Specication, version : 1.2, Document Revision : 19.

Khronos, 2012.

參考文獻

相關文件

An information literate person is able to recognise that information processing skills and freedom of information access are pivotal to sustaining the development of a

In this chapter we develop the Lanczos method, a technique that is applicable to large sparse, symmetric eigenproblems.. The method involves tridiagonalizing the given

In digital systems, a register transfer operation is a basic operation that consists of a transfer of binary information from one set of registers into another set of

n The information contained in the Record-Route: header is used in the subsequent requests related to the same call. n The Route: header is used to record the path that the request

 The IEC endeavours to ensure that the information contained in this presentation is accurate as of the date of its presentation, but the information is provided on an

Centre for Learning Sciences and Technologies (CLST) The Chinese University of Hong Kong..

– S+U can also preserve annotations of synthetic images – Refined images really help improving the testing result – Generate &gt; 1 images for each synthetic

The revelations of this study would also provide the much needed and useful information that will help traditional higher education institutions to formulate