• 沒有找到結果。

第五章 實驗介紹與結果

5.4 分析與比較

以上兩個實驗,我們對人臉偵測系統以 DirectShow Filter 和 DLL 兩種不同 的模組化方式進行過封裝,對於這兩種模組化他們都有兩個共同的好處,一個就 是原始碼的保護,每個人所開發的原始碼都是自己的財產,但是當自己開發的功 能想與人分享又不想把自己辛苦撰寫出來的原始碼讓他人知道時,透過這些封裝 的方式就可以輕鬆的達到目的,只需給他人 CLSID 或者 dll、lib 檔,不需要給 原始碼就可以分享自己開發的新功能又可以兼顧到自己的智財權是其一好處。另 一個好處是程式維護修改的方便性,以這種模組化方式來撰寫程式一來可增加程 式的可讀性,不會像一般程式裡一大堆函式,模組化程式或許只會有一個主函式 而已,再者當程式需要更新修改功能時,只需更動到要修改的那個模組即可,無 須更動到整體架構,要更新也只需加入新的模組。

當兩種模組分別分析時,DirectShow Filter 的形式對於應用程式開發者是

74

比較方便,因為以 Filter 而言,應用程式開發者只需使用一個 CoCreateInstance 的指令即會自動幫我們連結我們的函式庫以方便使用模組內的函式,但是 DLL 卻都要手動去連結函式庫,以顯性連結來說要自己寫連結指令,以隱性連結來說 要自己手動去設定連結,相較於 Filter 的自動連結是麻煩了一些。但是以模組 開發者而言就是 DLL 方式比 Filter 方式來的簡單,以 DLL 而言只需增加個幾行 指令便能封裝完成,但以 Filter 而言就複雜許多,依功能取向不同需要多實現 兩個以上的必要函式,所以 DLL 在封裝上是非常簡單的,因此兩者各有利弊。

75

第六章 結論

一般開發應用程式若不是模組化開發,一旦編譯完成後,若要再更新其中一 個小函式,就得把整個應用程式再重新編譯只為了更新一個小函式,但是如果改 成模組化開發,則這個問題就只需對要修改的模組函式做重新編譯即可,如此一 來軟體開發完成後要新增功能或更新就變的方便許多只需加入新模組或修改模 組即可達成,不必整個程式再重新編譯過。

再者,一個模組開發完成後要可以給其他外部使用者能快速又簡單的使用,

這個模組才算是一個好模組,解決這個問題的一般作法就是把程式封裝成 DLL,

然後透過產生的 Lib 檔以及 H 檔給外部使用者,而外部使用者拿到這兩個檔後設 定好連結路徑,才可以開始使用這個模組內的功能函式,但是根據本論文實做過 後發現如果是要開發多媒體應用程式,選擇 DirectShow Filter 的模組方式對於 外部使用者是更方便的,因為它只需一個 CoCreateInstance 的指令就可以完成 DLL 需手動的所有連結動作,節省了開發時間也達到簡單使用的效果。

本研究重點著重在模組化的觀念,這觀念對於學術研究的程式開發者是重要 的,因為學術研究常常會開發各種不同演算法的功能函式,如果把這些歷年來開 發的函式模組化將有利於我們去管理甚至更新修改它。因此我們藉由研究 DirectShow 的架構來了解模組化的觀念,進而封裝出我們自己的一個人臉偵測 Filter 出來,也藉由與 DLL 的比較來讓我們更了解不同模組化形式差異性,讓 之後想模組化的開發者能依自己的取向去選擇適合自己的模組化形式,或者藉由 這些模組化的觀念為基礎而發展出另一套新的模組規範出來。

76

參考文獻

[1]MSDN-Win32&COM http://msdn.microsoft.com/en-us/library/aa139672.aspx [2]COM http://www.vckbase.com/document/viewdoc/?id=212

[3]COM AddRef http://www.vckbase.com/document/viewdoc/?id=926 [4]陸其明 著,DirectShow 開發指南,北京 - 清華大學出版社 2003

[5]華亨科技股份有限公司,XSB270(EELiod) ADS/Linux/WinCE 實驗開發與實務 [6]黃泰一等 著,Windows CE:嵌入式系統理論與實務,2004

[7]胡宏達,『比較 Real 和 Gentle Adaboost 應用於人臉偵測』,國立交通大學,

碩士論文,98 學年度。

[8]Open Source Computer Vision Library (OpenCV)

http://www.intel.com/technology/computing/opencv/index.htm

[9]MSDN-DLL http://msdn.microsoft.com/en-us/library/ms682589(VS.85).aspx [10]DLL http://forum.slime.com.tw/thread99559.html

77