• 沒有找到結果。

數位 相片的合併條件以及合併方式將在第四節詳盡說明

N/A
N/A
Protected

Academic year: 2021

Share "數位 相片的合併條件以及合併方式將在第四節詳盡說明"

Copied!
16
0
0

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

全文

(1)

第三章 實驗方法

參考各篇文獻所使用的影像分析方式以及分類演算法之後,本實驗系統將

各個效率表現較好的部分加以實作,以期製作一個分類效果良好的人性化數位

相簿。第一節說明正規化的實作方式,將使用者輸入的數位相片正規化長寬為

80x60 或 60x80 的大小,使資料數據一致。第二節詳述資料的擷取以及運算方 式。第三節說明本實驗系統所設計的資料儲存結構,以增進分類的效能。數位

相片的合併條件以及合併方式將在第四節詳盡說明。另外,分類結束之後可由

使用者執行數位相片的尋找功能,尋找功能所使用的方法在第五節有清楚的描

述。第六節則是說明本實驗系統的執行環境以及電腦配備。

第一節 正規化 JPG 圖像檔案

由於目前市面上的數位相機,多是將數位相片以 JPG 檔案格式加以儲存,

因此本實驗系統所讀取的原始圖像檔案,將以 JPG 檔案格式為主加以說明。

因為使用者所輸入的 JPG 圖像檔案之解析度是未知的,為了避免讀入的檔

案大小不一而造成計算的數值產生偏誤,本實驗系統設計一個“正規化"的函

式,將所有 JPG 圖像檔案依照原長寬比例正規化成 80x60 或是 60x80 的四比三

尺寸,並且儲存至新增的資料夾之下,以保持原始 JPG 圖像檔案的完整性,其

後的資料運算將從正規化後產生的檔案加以處理。

(2)

本實驗系統的正規化方式是在 Borland C++ Builder 5 中,將讀入的圖像檔

案以 TJPEGImage 宣告一個 jpg 的變數名稱儲存,接著再以 Graphics::TBitmap

宣告一個 bmp 變數名稱,用以儲存轉換 JPG 圖像檔案之後的 BMP 檔案。轉

換檔案格式的詳細作法是先判斷 JPG 圖像檔案的長寬比例,若 JPG 圖像檔案

是橫向的,就把 bmp 變數宣告成 80x60 的大小;反之則是將 bmp 宣告成 60x80

的尺寸。最後呼叫 Tbmp->Canvas->CopyRect 的函式即可將未知尺寸的 JPG 圖

像檔案轉換成統一尺寸的 BMP 檔案,再利用 Assign 函式就可以將 BMP 檔案

格式轉換回 JPG 圖像檔案,如此以完成正規化的功能。

從實驗結果發現,正規化所花費的時間會隨著原始檔案解析度的提高以及

數量的增加而延長。以解析度為 2048x1536、檔案大小約為 1.2MB 左右的數位

相片為例,執行十張數位相片的正規化時間歷時約 3.5 秒;執行五十張數位相

片的正規化時間為 17 秒左右;執行一百張數位相片的正規化時間則大約為 34

秒;執行一千張數位相片的正規化時間則為 346 秒左右。因此可以得知正規化

所花費的時間與檔案數量和大小成正比關係成長,因此在執行此正規化之前,

也應該要考量硬體條件以及檔案的數量及大小,以免系統不能負荷而造成當機。

執行圖像檔案的正規化之後,系統自動產生一個名稱為「80x60_pic」的資

料夾,並且將正規化後的檔案儲存到資料夾內,最後也是由這些正規化過的小

圖像呈現分類的結果。採用以上的作法有兩項優點。第一:讀取檔案較小的圖

像所花費的時間相對較短,當圖像檔案數量很龐大的情況之下,呈現分類結果

(3)

時的效率會比較好。第二:在分類運算的過程中並不會修改到原始圖像的檔案

內容,如此可以確保原始檔案的完整性。圖 3.1 以及圖 3.2 是正規化十張數位相

片的前後結果。

圖 3. 1 正規化之前

圖 3. 2 正規化之後

(4)

第二節 讀取圖像檔案並進行資料運算

將圖像檔案正規化之後,開始對圖像檔案進行分析計算。Borland C++

Builder 5 的設計環境之下,可以在一開始開出一個 From 視窗,然後在 Form 裡 新增一個按鈕的元件,並將程式執行的過程設計在該按鈕所對應的函式中,該

按鈕即為使用者操作系統的一個便利的介面,只要按一下按鈕即可執行對應的

函數。新增按鈕完畢之後即可利用滑鼠左鍵雙擊該按鈕,滑鼠雙擊之後就會跳

出一個預設檔名為 Unit.cpp 的檔案以供程式設計者進行設計。

實驗系統開啟輸入的 JPG 圖像檔案之後,可以利用 Borland C++ Builder 5

所提供的轉換檔案格式的函式功能加以處理。先個別新增一個用來儲存 JPG 以

及 BMP 檔案格式的變數,然後將開啟的 JPG 檔案載入到 jpg 的變數名稱之中,

接下來運用 Assign 的函式功能將 JPG 檔案格式轉換成 BMP 檔案格式,如此一

來就可以直接對 BMP 檔案進行資料的擷取。

轉換成 BMP 檔案格式之後即統計影像檔案的 Histogram,利用迴圈將所有

像素的 R、G、B 數值一一取出。這裡要特別注意的是,因為讀取的顏色依序

是 B、G、R,所以在儲存資料時必須要仔細對應,以免造成資料錯誤而影響運

算的準確性。讀取像素的 R、G、B 數值後隨即轉換成 CIE 1976 的 u’、v’標準

定義,其轉換的數學式如公式 3.1。

4 15 3 u R

R G B

= + +

9 15 3 v G

R G

= + + B (3.1)

(R:紅色、G:綠色、B:藍色)

(5)

利用公式將 R、G、B 轉換成 u、v 之後,參考 J. C. Platt(2000)所等分的

u’、v’範圍,判斷該像素轉換後的 u、v 是落在哪一組 u’、v’數值上,若是轉換 的 u、v 數值沒有確切落在等分的 u’、v’數值上,即選擇數值最接近的一組 u’、

v’。最後統計該影像圖檔的 u’、v’數值之 Histogram,以瞭解其顏色的分佈情況,

並且將統計的 Histogram 轉換成 Lx 數值。

完成 BMP 圖像檔案的 u’、v’之 Histogram 統計之後,參考 J. C. Platt(2000)

所使用的數學式子轉換成 Lx 數值,此 Lx 數值即可視為該 BMP 檔案圖像的內

容代表數值,將 Lx 數值兩兩互減以求得與前後圖像檔案的內容差距,實驗系

統將數值差距視為與前後圖像檔案的差異。

另外,實驗系統設計一個時間計算的小函式,利用抓取時間的方式計

算程式執行所需要的時間。一開始開啟 JPG 圖像檔案時,先抓取在處理圖像檔

案之前的時間,等到圖像檔案都處理完畢之後,再抓取一次當時的時間,利用

前後的時間相減,即可測量出本實驗系統任何一個階段的執行時間。

(6)

第三節 資料儲存方式

在分析計算每一張圖像檔案之後,實驗系統設計兩種資料結構以儲存圖像

檔案的各項數據。設計雙向鏈結的資料結構以儲存圖像檔案的資訊,另外設計

MinHeap Tree 資料結構以排序前後張圖像內容的差距。資料的儲存方式在以下 各點詳細描述。

壹、雙向鏈結的 DataList

讀取輸入的每一張 JPG 圖像檔案時,必須將之後運算所需要的資料儲存在

設計的資料結構中,因此當實驗系統處理完第二張圖像時,便開始儲存一些必

要的資料到設計的 DataList 結構,例如:檔名、前後張影像的 Lx 數值等等,

每多處理一張圖像就必須新增一個節點以儲存資料。

每次新增節點所要儲存的資料包括:該圖像以及前一張圖像的 Lx 值、兩張

圖像的 Lx 差距絕對值、兩張圖像的 Histogram 統計資料以及兩張圖像的檔案名

稱,並且建立與前後節點的雙向指標鏈結。在讀取、計算所有的圖像檔案之後,

就會產生一條雙向鏈結的 DataList,DataList 的每一個節點都包含該圖像和前一

張圖像的關係與彼此的資訊,差距越小代表兩張圖像越相近,其示意如圖 3.3。

圖 3. 3 DataList 鏈結關係圖

(7)

貳、MinHeap Tree

為了稍後有效率地執行檔案的合併,設計一個 MinHeap 的資料結構儲存每

張圖像之間的 Lx 數值差距之絕對值大小。當 DataList 每次產生一個新的節點

並儲存資料時,MinHeap 隨後也新增一個該節點的指標,用以取得節點上的 Lx

數值差距,並且調整 MinHeap Tree 中相對的排序位置。使用 MinHeap 資料結

構的優點在於實驗系統開始進行檔案的合併時,可以立即在眾多數位相片中得

知前後差距最小的兩張相片位置以及相關資料,進而將兩張相片合併成同一個

分類資料夾。圖 3.4 為 MinHeap Tree 的建構圖。

圖 3. 4 MinHeap Tree

(8)

第四節 合併數位相片

當所有圖像檔案都已經分析完畢而且相關資料都已經儲存之後,就要開始

執行分類的合併動作。因為已經使用 MinHeap tree 架構數位相片的內容差距順

序,所以從抓取 MinHeap 的第一個節點可以很快地找出相片中差距最小的兩

張,然後合併成同一個分類資料夾。以下將分點描述合併的方式、合併所使用

的演算法和分類架構以及停止合併的參考條件。

壹、數位相片的合併過程

合併數位相片的過程中,必須先判斷該兩張相片是否已經被合併至某一個

分類資料夾,如果都尚未被合併,則可以直接產生一個新的資料夾,將該兩張

相片合併在資料夾下而成為同一個分類,並且以資料夾的編號作為這兩張數位

相片的分類編號。若是其中某一張已經被合併過,則直接將尚未合併的相片納

入已合併相片的分類資料夾即可。如果兩張數位相片都分別被合併過了,則可

以將這兩張相片各自所屬的資料夾合併成一個資料夾,合併的方式是將編號較

多的資料夾中所有的相片,移動到編號較少的資料夾裡面。

執行兩張相片的合併之後,該分類資料夾與前後張相片的內容差距都會變

化,因此必須先重新計算合併之後的內容,以新的 Lx 數值代表合併之後的分

類資料夾。本實驗系統的作法是取 Histogram 的平均值,然後重新計算合併之

後的 Lx 數值,再計算與前後張相片的 Lx 數值差距即可。合併後計算出的新資

(9)

料以及鏈結的變化,也必須更新至 DataList 和 MinHeap tree 裡,如此即可完成

一次合併的動作。圖 3.5 及圖 3.6 是資料結構的變化結果。

圖 3. 5 合併一次時,DataList 的變化

圖 3. 6 合併一次時,MinHeap Tree 的變化

數位相片完成合併一次的動作之後,實驗系統隨即在該分類資料夾下產生

一個資料的文字檔,以記錄數位相片合併之後的新 Histogram 以及 Lx 數值。當

執行數位相片的尋找功能時,可以從該分類下的資料文字檔迅速地得到代表資

料,以節省數位相片尋找功能的時間。

(10)

如果持續週而復始地執行合併功能而沒有設定停止的限制,最後會將所有

的數位相片合併在同一個分類資料夾裡,如此一來分類系統就沒有發揮功能,

所以如何設定合併的停止條件是很重要的。本實驗系統執行合併的功能時,對

於最小的 Lx 數值差距會作一個限制。使用者可以根據圖像檔案的數量多寡,

或是認定圖像檔案的差異到某一個程度時,實驗系統即應該停止合併。使用者

可以自行調整 Lx 的界限值,未曾使用本實驗系統的使用者不瞭解應該如何設

定 Lx 數值,因此系統會根據輸入的相片數量而顯示出 Lx 的建議界限值,此外

也可以參考本文在下一章實驗分析結果,依照使用者的需求調整 Lx 界限值的

大小。參考的數值範圍大小以及分類的組織方式將於其後詳細說明。

貳、合併的分類架構

J. Chen, A.Bouman, and J. C. Dalton(1998)使用金字塔式建構出數位相片 的分類架構,使用者在瀏覽分類的結果時,能較有效率地找到其所以要找的數

位相片。這裡用一個三階層的分類呈現方式來加以說明,其樹狀結構如圖 3.7。

圖 3. 7 三階層的四元樹

(11)

此種分類的方法是用 agglomerative(由下而上)的方式來建構。最底層

(L=2)表示全部的數位相片,每四張相片合併成一個分類資料夾,再從該四

張相片中,挑選一張較具代表性的相片當作第二層瀏覽的相片,之後再從第二

層的四張相片中,挑一張較具代表性的相片當作頂點以供使用者瀏覽。

使用者的瀏覽方式即從 L=0 的第一層開始找起,在該層相片中選取一張跟

目標相片較相似的相片後,再進入 L=1 的第二層繼續瀏覽選擇,依此再進入最

底層的四張相片做選擇,在最後的四張相片中,極有可能包含了使用者欲搜尋

的目標相片。若使用者在最後一層尚未找到目標相片,可以退回上一層選擇其

他張類別的相片,然後再次進入並瀏覽該資料夾是否包含目標相片。如此的分

類及瀏覽方式的效果,通常比瀏覽一整個大資料夾還要好。

分類的方式並不侷限於三層或每一層包含四張相片的結構,可以動態地延

伸為四層或是五層(甚至於六層),而每一個資料夾所包含的相片數量也可以擴

大成五張或六張(甚至更多張)相片。實驗系統把每一層的分類資料夾數量控

制在十到十六個以下,每一個資料夾所包含的相片數量可以依照使用者的需求

而定,若包含太多張相片則可以繼續分類出下一層,因此必須從相片的數量以

及實驗的分析來探討。

根據實驗的結果看來,數量在一百張數位相片左右(或以下)時,可以將

分類結構建構成兩層即可;而數量在一百五十張以上時,則建議建構成三層甚

(12)

至更多層的組織方式,如此一來就可以避免每一層需要瀏覽的數量太多,讓使

用者方便瀏覽、搜尋。除此之外,每一個資料夾所包含的相片數量並沒有一個

定數,至於其數量應該如何選擇,合併動作應該何時停止,將於下一點詳細說

明。

參、停止合併的參考條件

本實驗系統並不硬性限制每個資料夾所包含的檔案數量,原因在於考量使

用者拍攝數位相片的過程中,可能有很多連續拍攝的相片會很類似,而連續拍

攝的數量並不一定,無論如何應該將連續拍攝的相片合併在同一個分類資料夾

內。反之,若使用者拍攝的前後張數位相片內容差距太大,則應該將其分類成

兩個分類資料夾會比較恰當,而不是將一個定量的數位相片合併在同一個資料

夾之下。

經過多次的實驗發現,當數位相片的數量介於五十張左右(或以下)時,

前後分類資料夾之間的 Lx 數值差距約是介於 600 到 1200 左右。也就是說在執

行合併的動作時,Lx 數值差距超過 1200 即應該停止合併。當合併一百張左右

的數位相片時,Lx 界限值約略在 1500 到 2000 左右,因此建構兩層的分類即可,

而 Lx 界限值設定在 2000 以下,實際的分類情況也可以依照使用者的需求彈性

地設定。若使用者希望將數位相片分類的分明一點,Lx 界限值就可以設定低一

點,但是產生的資料夾數量也相對會多一些。若使用者希望第一層的分類資料

(13)

夾數量少一點,則可以將 Lx 界限值設定高一點,而每一個資料夾中所包含的

數位相片也相對比較多。

數位相片合併結束之後,或許還會有些數位相片尚未被合併,本實驗系統

將這些剩下來未被合併的數位相片繼續進行合併。若這些數位相片是連續的,

則將該連續相片都合併成同一個分類資料夾。若只是零星一張數位相片,則將

其分類成一個獨立的資料夾。因此經過本實驗系統的分類之後,會產生若干一

個資料夾中只有一張或兩張數位相片的情況,如圖 3.8 所示。

圖 3. 8 未被分類的一張相片,最後將其獨立分成一類

當數位相片數量超過一百五十張以上,大多需要建構三階層才適合使用者

進行瀏覽、搜尋。三階層的建構方式是在第一層的合併提高 Lx 的界限值,例

如數位相片的數量在一百五十張左右,Lx 約略設定在 2000 左右。若數量達到

一千張左右時,Lx 界限值設定在 4500 左右。如此一來就可以先粗略的將大量

的相片合併成十六個分類資料夾以下,以方便使用者在第一層的瀏覽。等待第

一層的合併完成之後,再個別進入資料夾進行第二層的合併動作,第二層的合

併就可以將 Lx 界限值設定低一點,如果該資料夾包含的數位相片數量還是很

多,則可以再往下多合併一層,直到架構出方便使用者瀏覽結構即可。

(14)

第五節 數位相片的尋找

若使用者在進行所有數位相片的合併之後,另外找到一張屬於該相簿的數

位相片,並且希望找出該數位相片在合併之後的分類資料夾位置,然後再歸納

成類,或是有一張一模一樣的數位相片,而想在合併完畢之後察看該數位相片

是屬於哪一個分類資料夾,因此本實驗系統設計了一個數位相片的尋找功能以

進行判斷。

經過本實驗系統分類大量的數位相片之後,使用者可以再任意輸入一張與

該相簿中類似(或一模一樣)的數位相片,實驗系統即對使用者所輸入的數位

相片進行分析,分析方式都和前述的方法一樣,先計算出數位相片的 Lx 數值,

然後再依照使用者所選擇的資料夾下,直接開啟每一個分類資料夾下的資料文

字檔,之後再進行 Lx 數值的比較,並且輸出最接近該張數位相片 Lx 值的前五

個資料夾編號供使用者參考,以尋找出最相近於該張數位相片的分類資料夾位

置。實驗數據的詳細分析在下一章節詳細說明之。

第六節 實驗系統環境

以下分點描述實驗系統所使用的程式語言及其使用介紹,並說明本實驗所

使用的作業系統以及電腦配備。

(15)

壹、實驗系統的設計開發環境

本研究設計的數位相片自動分類系統是使用 Borland C++ Builder 5 來完成

系統設計。Borland C++ Builder 5 提供許多方便使用的按鈕、文字、圖像等元

件,讓使用者可以利用滑鼠點選的方式,輕鬆產生使用者所想要運用的元件。

從 Borland C++ Builder 5 開啟一個預設名稱為 Form 的視窗介面,讓使用者直接

在上面進行設計,其設計出來的樣式即為使用者的操作介面。另外還有一個元

件的屬性顯示視窗可以提供使用者選擇修改,例如更改 Button 的名稱、Text 或

是 Memo 的大小屬性設定,讓程式設計者可以設計出適合使用者閱讀、使用的

操作介面,因此在介面上的設計可以省去不少時間。其視窗如圖 3.9。

圖 3. 9 Snapshot Form of Borland C++ Builder 5

(16)

每一個元件都直接對應到該元件的 Unit 程式碼檔案裡。在產生元件之後,

只要在元件上雙擊滑鼠左鍵,Borland C++ Builder 5 就會自動幫使用者產生呼

叫的副函式,使用者只需要在上面直接設計程式碼即可。圖 3.10 是在雙擊 Form

裡的“清除"按鈕之後所跳出的視窗。

圖 3. 10 Snapshot Unit of Borland C++ Builder 5

貳、實驗系統的執行環境

本實驗系統在以下的軟、硬體配備下運行:

z OS:Microsoft Windows XP SP2

z PL:Borland C++ Builder 5

z CPU:Pentium 4,2.66 GHz

z RAM:256 MB

z VGA:SiS 651,32 MB

數據

圖 3. 1    正規化之前
圖 3. 4  MinHeap Tree
圖 3. 7    三階層的四元樹
圖 3. 9    Snapshot Form of Borland C++ Builder 5
+2

參考文獻

相關文件

SF11112 歐宴泉 一個開放、隨機、多中心的臨床試驗,比較每三週使用 Prednisone 合併不同劑量 Cabazitaxel 25 mg/m2 和 20

陶7處相片 結合定向運動,小組共同尋找相片中的 交趾陶位置,並以該圖片進行推銷嘉義 的微廣告創作. 海報

對外商品貿易指數的資料是源於進出口貨物准照及申報單的資料,而有關指數主要包括:價值指

[r]

Shift +a 新增方塊物件→使用 Scale 來調整物 件的大小→Translate 來調整方塊的位置→排 列成樓梯的形狀.. 使用 import 匯入躺椅的

紅色 : 當今在的 Heap 被使用為合併後的 Heap...

„ „ 利用電腦來安排與整合多種媒體,可產生 利用電腦來 更多樣化的作品。如某一段背景配樂在影 片中的哪個時間點開始播放、新聞播報中 子母畫面的相對位置、文字字幕出現在畫

將一群統計資料由小而大排成一列,則中位數(Me)前段數值之中位數稱為第 一四分位數(Q1),中位數(Me)後段數值之中位數稱為第三四分位數(Q3),而中