Professional Documents
Culture Documents
(version 0.3)
廖鎮磐∗
摘要
以㉂由軟體 GNU Octave 為基礎的㆒個運算腳本, 可以㆒次進行多
個反射光譜檔案之色差。 光譜檔的引入可以㉂動㆞移除非㈾料文字或
非合法數字, 所以使用者不需花費大量時間將光譜檔轉換為標準格式即
可進行運算。 色差的運算㊠目包括㈰間的單色與㆔色視覺、 ㊰間的單色
視覺、 與㊰間㆔色視覺在是否以色彩恆定性為前題㆘, 共 5 種結果。 在
運算之後, 腳本會㉂動㆞生成 CSV 與 XHTML 檔案, 其㆗記錄了該次
運算結果之文字或圖形。
目錄
1 重要聲明 3
∗ andrew.43@gmail.com
1
2 沿革 4
3 GNU Octave 5
3.1 簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 安裝與啟動 . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 簡單的 Octave 語法 . . . . . . . . . . . . . . . . . . . . . 6
4 數學運算 8
4.1 基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 文獻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 運算式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3.1 ㈰間模型 . . . . . . . . . . . . . . . . . . . . . . 10
4.3.2 ㊰間模型 . . . . . . . . . . . . . . . . . . . . . . 12
5 運算腳本 14
5.1 所需檔案與㈾料夾 . . . . . . . . . . . . . . . . . . . . . . 14
5.2 共同參數㈾料夾 . . . . . . . . . . . . . . . . . . . . . . . 15
5.3 光譜檔的格式與引入 . . . . . . . . . . . . . . . . . . . . . 16
5.4 設定運算光波長範圍與間距 . . . . . . . . . . . . . . . . . 17
5.5 ㆓種運算模式 . . . . . . . . . . . . . . . . . . . . . . . . 18
5.5.1 模式 I: data1 對比 data2 . . . . . . . . . . . . 19
5.5.2 模式 II: data1 或 data2 對比背景 . . . . . . . . 20
5.6 結果輸出 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 實際操作 23
7 常見錯誤與重要提醒 25
2
8 學習與工作歷程 26
9 誌謝 27
10 著作權與免責聲明 27
表目錄
1 簡單的 Octave 語法 . . . . . . . . . . . . . . . . . . . . . 7
2 數種結果輸出的類型與內容 . . . . . . . . . . . . . . . . . 22
3 常見的錯誤及可參考之頁數 . . . . . . . . . . . . . . . . . 25
1 重要聲明
1. 本文件及本運算腳本並未接受過任何專業㆟士或單位驗証。 計算是否
正確請㉂行檢驗。
2. 本程式若㈲新版本, 或是任何相關訊息, 會公告於 阿盤的色差運算程式
公告欄。1
3. 所㈲檔案, 除了本 PDF 文件外, 皆為純文字檔案, 以 Unix (LF) 斷行格
式儲存。 這種斷行格式與 Windows 預設格式不同, 故若以 Windows
XP 之筆記本開啟會出現亂碼。 解決辦法是以功能較強之純文字編輯
1 http://apancc.blogspot.com/
3
軟體 (如 PSPad) 開啟這些純文字檔,2 並設定斷行格式為 Unix (LF) 即
可。
4. 對本程式或文件㈲任何問題, 歡迎以電子郵件與作者廖鎮磐聯絡。 作者
之電子郵件: andrew.43@gmail.com。
5. 由於作者㈩分懶散怠惰, 所以本文件必定㈲許多錯別字。 請小心服用。
2 沿革
Ver. 0.1.0 於 2008 年春季釋出。
Ver. 0.1.1 於 2008 年 8 ㈪ 23 ㈰釋出。 由於本版本的運算速讀及結果輸出皆
大大優於 Ver. 0.1.0, 故我建議使用者使用新版本以取㈹舊者。 本版本
與 Ver. 0.1.0 的差異如㆘:
• 更快的運算速度。 cc.m ㆗引入光譜檔之函式幾乎我重新寫過㆒
次, 使讀取及解析光譜檔之速度為㆖㆒版本的 4 倍以㆖。
• 結果輸出之 XHTML 檔更容易被瀏覽。 我使用了由 John Resig
與 jQuery team 所撰寫的 jQuery,3 以及 Christian Bach 所撰寫
的 tablesorter,4 共兩套 javascript 函式庫, 使輸出之 XHTML 更
容易被檢閱並針對不同欄位做排序。 在排序時, 按住鍵盤㆖的
shift 鍵可以進行多重條件排序。 如果顯示不如預期, 請你確定啟
動了瀏覽器的 javascript 功能, 以及更新你所使用的瀏覽器。 此
外, 我也套用了 CSS ㆗的 hover 選取器, 使表格更易閱讀。 這
2 http://www.pspad.com/
3 http://jquery.com/
4 http://tablesorter.com/docs/
4
㊠功能在 Microsoft IE 6 並不被完全支援, 請更新㉃ IE 7 或使用
其它最新之瀏覽器。
• 修正了本說明文件㆗的㆒些筆誤。
• 我在 Google Blogger 開啟了㆒個全新的 Blog, 作為與本程式相
關之公告欄,5 請㈲需要的朋友瀏覽之。
㉃於色差之運算, 本版與㆖㆒版並沒㈲不同之處。
Ver. 0.2 於 2008 年 10 ㈪ 20 ㈰釋出。 本版本修正了引入光譜檔時, 若光譜檔
之檔㈴包含英文逗號或雙引號, 在結果輸出成 CSV 會產生錯誤之情形。
雖然如此, 仍強烈建議使用者避免使用英文逗號或雙引號於光譜檔檔㈴
㆗。
Ver. 0.3 於 2009 年 7 ㈪ 18 ㈰ 釋 出 。 本 版 本 修 正 數 ㊠ 無 法 正 常 運 作 的
bugs, 並增加於 Windows 平台運行的穩定性, 於 MAC OS X 10.4.11、
Ubuntu 9.04 及 Microsoft Windows XP SP3 以 GNU Octave 3.2.0
測試。
3 GNU Octave
3.1 簡介
如果要用我所寫的腳本, 你必須先㆘載並安裝 GNU Octave (以㆘簡稱為
Octave),6 並且在 Octave ㆘運作才行。 Octave 是㆒個 Matlab 的 clone 程
式。 它的語法幾乎與 Matlab 相同, 而 Matlab 又與 C、 Perl 或 Pascal 語言
5 http://apancc.blogspot.com/
6 http://www.octave.org/
5
相似。 換言之, 如果你學過㆖述這些程式語言, 那學習與撰寫 Octave 是非
常容易的。 Octave 是㆒個開放原始碼 (open source)、 ㉂由 (free) 且跨平台
(cross-platform) 程式。 你可以在任何作業系統㆗安裝它, 且完全免費。
最初我所使用的 Octave 為 3.01 版。 在 MAC OS X 及 Windows XP 之
㆘都能正常運作我所寫的腳本。 如果將來程式跑不出來, 試試這個版本。
3.2 安裝與啟動
Octave 的安裝在 Windows 與 Mac OS X 作業系統㆗都非常簡單。 Octave
的開發群已經製作了 Windows 安裝介面, 而 OS X 則直接㆘載 APP 即可。
在大部分 Unix-like 系統也可以採用 Port 的方式安裝。 詳情請到 Octave 官
方網站觀看。
在安裝 Octave 時, 建議你㆒併安裝 Gnuplot。 這件事通常會和 Octave
㆒併安裝或㆘載。 Gnuplot 可以為 Octave 進行繪圖的工作。 我所撰寫的腳本
也確實需要繪圖, 所以請你㆒併安裝 Gnuplot。 在 Unix-like 作業系統可能另
外需要㆒些圖形的螢幕輸出程式, 例如 Mac OS X 需要另外安裝 Aquaterm。7
在 Windows ㆘, 安裝 Octave 後在 “開始” ㆗就可以找到啟動 Octave
的捷徑。 在 Mac OS X ㆘, 直接點選㆘載來的 Octave.app 就可以開啟
Octave。 如果你是㉂己編譯或是以 Port 的方式取得 Octave, 可以在終端機㆗
鍵入 octave 以啟動 Octave。
6
表 1: 簡單的 Octave 語法, 包括了命令、 功能與範例。 斜體字表示㈹表性的用
法, 其原文字並非真實之語法。
命令 功能 範例
pwd 顯示目前路徑 pwd
cd path 前往某路徑或磁碟機 cd d:/image
who 列出目前所㈲變數 who
whos 列出目前所㈲變數之詳細㈾料 whos
ls 列出目前所在路徑之檔案清單 ls
ls path 列出 path 路徑之內的檔案清單 ls d:/
exit 結束 Octave exit
more on 開啟多頁顯示 more on;1:1000
more off 關閉多頁顯示 more off;1:1000
a:c 產生從 a 到 c 以 1 為間距的向量 1:10
a:b:c 產生從 a 到 c 以 b 為間距的向量 1:2:10
cmd; 不直接輸出 cmd 之結果 1:3;1:4
cmd... ㆘㆒列接續本列未完成之語法 1:... enter 10
#comment 同列㆗ # 後的文字成為註解 a=1#texts
ctrl + c 強迫終止運算的組合鍵 ... enter ctrl + c
7
4 數學運算
4.1 基礎
所謂的色差 (color contrast), 是量化視覺㆗㆓種顏色的差異㈲多大。 色差為界
於 0 到 1 之間的數值, 越大表示㆓者顏色在視覺㆗的對比越大。 色差在數學㆖
是分別將㆓個顏色轉換成平面座標系㆖的 2 個點, 再求出 2 點的直線距離。
要進行這樣的轉換, 必換對許多參數進行運算。 色差的計算㈲以㆘參數。
光源 光源是所㈲視覺的起點。 ㈲什麼樣的光才可再談物體反射出什麼光, 以
及視覺可以接受什麼樣的光。
物體的反射率 光源與物體反射率的乘積就是物體反射出什麼樣的光。
環境背景的反射率 當你在看某個物體時, 背景會影響你看見物體的樣子。 ㆒
張白紙放在白板㆖, 與同㆒張白紙放在黑板㆖, 後者可能會顯㆞比較白。
所以背景的反射率與光源的乘積會被作用於某物體散發出來的光量之
分母。 這個分母值越大, 也就是背景比物體還亮, 表示你越看不到該物
體。 這與色彩恆定性 (color constancy) ㈲關。
動物的光接受器 無論是什麼光, 都要被眼㆗的光接受器反應才能成為視覺。
某物體從光源㆗反射出來的光量, 與某個接受器的感光曲線之乘積就是
該接受器到看多少光。 因為同㆒個眼睛㆗可能㈲數種光接受器, 所以會
把不同接受器感受到的光量分別計算。
這些參數也就是計算色差時必須的輸入 (input)。
4.2 文獻
在我的腳本㆗, 進行的色差運算㈲:
8
• ㈰間 (diurnal) 模型
– 單色視覺 (achromatic)
– ㆔色視覺 (chromatic)
• ㊰間 (nocturnal) 模型
– 僅與背景對比的單色視覺 (achromatic)
– 不 以 色 彩 恆 定 性 為前題的㆔ 色視覺 (chromatic without color
constancy)
– 以 色 彩 恆 定 性 為 前 題 的 ㆔ 色 視 覺 (chromatic with color con-
stancy)
㈤種類型。 其㆗㈰間模型的計算方式可以參考:
而㊰間模型的計算可以參考:
9
1. S. Johnsen, A. Kelber, E. Warrant, A.M. Sweeney, E.A. Widder,
R.L. Lee Jr & J. Hernández-Andrés. 2006. Crepuscular and noc-
turnal illumination and its effects on color perception by the noc-
turnal hawkmoth Deilephila elpenor. The Journal of Experimental
Biology. 209: 789–800.
2. C.Y. Chuang, E.C. Yang & I.M. Tso. 2007. Diurnal and noctur-
nal prey luring of a colorful predator. The Journal of Experimental
Biology. 210: 3830–3837.
3. C.Y. Chuang, E.C. Yang & I.M. Tso. 2008. Deceptive color signal-
ing in the night: a nocturnal predator attracts prey with visual lures.
Behavioral Ecology. 19: 237–244.
4.3 運算式
4.3.1 ㈰間模型
10
• B(λ ): 背景 transmission 光譜。 單位: 與 I j (λ ) 相同即可。 預設單位為
百分比。
• Si (λ ), i = {1, 2, 3}: 分別為蜜蜂接受器之綠、 藍及紫外光吸收光譜。 ㆔
者的峰值皆調整㉃相同。 單位: 不重要, 運算後會相除。
• I j (λ ), j = {1, 2}: 物體 1 與物體 2 之 transmission 光譜。 單位: 與
B j (λ ) 相同即可。 預設單位為百分比。
輸出參數
• ∆d : ㆔色視覺色差。
• ∆Ei=1 : 單色視覺色差。
11
若僅考慮綠色接受器, 則可得單色視覺之色差 ∆Ei=1 ,
∆Ei=1 = Ei=1, j=1 − Ei=1, j=2 。
4.3.2 ㊰間模型
註: 以㆖ 6 ㊠常數在之後的運算㆗都會被相除, 所以對於色差值的計算可乎略。
12
• B(λ ): 背景 transmission 光譜。 單位: 與 I j (λ ) 相同即可。 在運算腳本
㆗, 本參數與㈰間相同且共同。 預設單位為百分比。
在㊰間模型㆗並沒㈲㈵別使用背景參數, 而是將背景參數也視為㆒個物體來說
明。
輸出參數
• ∆n : ㆔色視覺色差。
• ∆C: 單色視覺色差。
13
其㆗ N j=B 為以 B(λ ) 作為物體之光子量。
物體 j 的顏色在平面座標系㆖的點 x j 與 y j :
√
1 2 qi=1, j + qi=2, j
x j = √ (qi=1, j − qi=2, j ); y j = √ (qi=3, j − )。
2 3 2
㆓點之直線距離即為㆔色視覺之色差 ∆n ,
q
∆n = (x j=1 − x j=2 )2 + (y j=1 − y j=2 )2 。
5 運算腳本
5.1 所需檔案與㈾料夾
在先前已經提過, 色差的運算要㈲程式和參數。 以㆘說明了程式與參數的位置
與功能。
14
./results 運算之後, 程式會㉂動在這個㈾料夾㆗存入結果。 會㈲什麼結
果, 5.6 節會再解釋。 之後會把這個㈾料夾稱為結果㈾料夾。
./lib 這個㈾料夾只是提供 XHTML 結果輸出之 CSS 與 Javascript 之函
式庫。 在每次產生結果輸出時, 會將其㆗的㈾料複製到 XHTML 結果
輸出檔㆗。9
./database 這個㈾料夾完全與程式無關。 它存放的只是過去實驗室使用
過的㆒些共同計算參數。 你可以從㆗挑出你需要的參數, 並複製且取
㈹原本存在於 ./core_data ㆗的參數 (當然要修改檔㈴才能取㈹)。
在每個檔案㆗都記錄了它的來源, 供你參考。
5.2 共同參數㈾料夾
在共同參數㈾料夾㆗的所㈲檔案會在每次計算㆗被引入。 這些檔案的檔㈴是
固定的。 以㆘說明了本㈾料夾內所需的檔案及其內容, 並㆒併指出在 4.3 節㆗
數學式的符號。
15
n_receptor_(g/b/u).txt Ri=1,2,3 (λ ), 分別為㊰間模型動物的綠、
藍、 紫外光㆔種光接受器反應光譜 (小括號與斜線不是檔㈴的㆒部分)。
n_receptor_g_along.txt Ri=4 (λ ), ㊰間模型動物的綠色接受器反
應光譜。
5.3 光譜檔的格式與引入
在 5.1 節㆗提到了許多光譜檔。 這些光譜檔, 以及樣本光譜檔㆗的㈾料要被引
入㉃運算式㆗是藉 cc.m 內的㆒個函式所實現。 換句話說, 所㈲的光譜檔被
引入的方法完全相同。 因此, 所㈲的光譜檔都必須㈲共同的條件:
• 該列包括非數字的字元。
• 該列並非包括 2 個數字。
例如
this is a book.
1 t234
16
345
235 31 143
這些㈾料列並不會被視為被引入計算的㈾料。 ㉃於合法引入的㈾料列則必須
是該列僅包含 2 個數字。 第㆒個數字為波長, 單位為 nm; 第㆓個數字為強度、
敏感度或反射率, 視該㈾料檔而定。 ㆓個數字之間的分隔可以是 空白
鍵、 tab 鍵、 逗號或分號。 例如
233 12
253 (TAB鍵) 43
542;31
643 , 35
5.4 設定運算光波長範圍與間距
在執行 cc.m 時, 會要求使用者輸入光波長之範圍與間距:
num1:num2:num3
17
num1:num3
300:0.2:700
300:0.3:700
300:0.1:700
5.5 ㆓種運算模式
我的腳本可以進行 2 種運算模式, ㆒種是 data1 對比 data2 ㈾料夾㆗所㈲
樣本的配對 (簡稱為模式 I), 另㆒種是對比所㈲ data1 或 data2 ㆗所㈲樣
本對比背景的配對 (簡稱為模式 II)。 ㉃於如何決定採用何種運算模式, 則與你
如何將樣本分配於 data1 與 data2 ㈾料夾之㆗。
18
5.5.1 模式 I: data1 對比 data2
• data1
– 1.txt
– 2.txt
– 3.txt
• data2
– a.txt
– b.txt
則腳本會計算出
• data1/1.txt 配對
– data2/a.txt
– data2/b.txt
• data1/2.txt 配對
– data2/a.txt
– data2/b.txt
• data1/3.txt 配對
– data2/a.txt
– data2/b.txt
19
共 3 × 2 = 6 組色差值。 每 1 組色差值皆包含了
• ㈰間 (diurnal) 模型
– 單色視覺 (achromatic)
– ㆔色視覺 (chromatic)
• ㊰間 (nocturnal) 模型
– 不 以 色 彩 恆 定 性 為前題的㆔ 色視覺 (chromatic without color
constancy)
– 以 色 彩 恆 定 性 為 前 題 的 ㆔ 色 視 覺 (chromatic with color con-
stancy)
共 4 種色差。
• ㈰間 (diurnal) 模型
– 單色視覺 (achromatic)
– ㆔色視覺 (chromatic)
• ㊰間 (nocturnal) 模型
– 僅與背景對比的單色視覺 (achromatic)
10 這裡所指的背景光譜是指 core_data/background.txt。
20
– 不 以 色 彩 恆 定 性 為前題的㆔ 色視覺 (chromatic without color
constancy)
– 以 色 彩 恆 定 性 為 前 題 的 ㆔ 色 視 覺 (chromatic with color con-
stancy)
5.6 結果輸出
每次 cc.m 運行之後會㈲ 2 大類的結果輸出: Octave 視窗直接顯示色差結
果, 以及 ./results/[datetime] ㈾料夾㆗存入數個結果檔案, 其㆗
[datetime] 為當時的㈰期時間所組成的字串。 其㆗, 前者方便使用者快速
㆞取得結果, 而後者供使用者取得非常詳細之參數、 數值與圖形結果, 且儲存
於不同的 [datetime] ㈾料夾㆘故可以不斷㆞累積新結果且不會覆蓋先前
之結果。
表 2 列出了所㈲結果輸出之內容。
我要㈵別說明輸出圖形的目的。 目的很簡單, 就是你可以藉由圖形㆒眼看
出光譜檔的單位㈲沒㈲錯誤、 不㆒致, 或是光譜檔引入時是否出錯導致怪異值。
例如, 你比較 A 光譜與 B 光譜的色差, 但 A 光譜為百分比而 B 光譜的單位為
0 ㉃ 1 的比例時, 圖㆗的 B 光譜會非常貼近 X 軸; 或是, 引入某光譜時程式判
斷錯誤, 造成㆒比非常大或非常小的反射率, 則在圖形㆗會出現非常強烈的轉
折。
21
表 2: 數種結果輸出的類型與內容。 其㆗ CSV 檔可利用試算表軟體開啟 (如
Microsoft Excel 或 OpenOffice.org), 而 XHTML 檔可利用網頁瀏覽器開啟
(如 Microsoft Internet Explorer 或 Mozilla Firefox)。 所㈲輸出的檔案都會
儲存於 results/[datetime]/ ㈾料夾㆗, 其㆗ [datetime] 按運算
當時的㈰期時間而定。
種類 位置或檔㈴ 內容
螢幕直接輸出 Octave 視窗
㈰期時間、 波長範圍與間距、 所
㈲的色差值。
CSV 結果檔 text.csv 與螢幕直接輸出相似, 但可供試
算表軟體開啟。
CSV 數值檔 text_raw.csv 所㈲光譜參數經內插法作用於
運算之原始數值。
XHTML 數值檔 text.html 與 CSV 數值㈾料檔相似, 但為
網頁。
XHTML 數值圖型檔 figure.html 與 XHTML 數 值 ㈾ 料 檔 相 似,
但增加了所㈲光譜之圖形。 所
㈲的圖形會儲存於該㈾料夾㆘
的 figures ㈾料夾㆗。
22
6 實際操作
本節將按步就班㆞說明操作過程。
cd d:/cc
ls core_data
ls data1
11 不同作業系統㆘會㈲不同的安裝與啟動方法。 請再閱 3.2 節。
12 我記得比我年輕的許多朋友沒㈲用過任何
command line 型式之作業系統 (如 DOS) 並
不明白什麼是根目錄, 但我實在不知道別的㈴詞來取㈹根目錄㆔個字了! 總之, 根目錄就是指
最基層的路徑。 ㆝啊. . . . . .
13 若不記得 Octave 的基本命令, 請再閱表 1。
23
ls data2
以確定你是否已將所㈲的光譜檔都安置好了。
cc
在腳本運行的過程㆗, 你可能會遭遇㆒些錯誤或警告訊息而暫時㆗斷運
算, 必須再按 enter 鍵才能繼續運算。 這些訊息表示程式猜測你的㈾料㈲問
題。 你可以按照訊息文字檢查你的㈾料是不是真的㈲錯誤。
24
7 常見錯誤與重要提醒
為了避免你怎麼跑都跑不出東西來, 我先猜想你可能會犯什麼錯誤。 這些錯誤
在前文都㈲提過, 我在此再整理㆒次。 表 3 列出了這些錯誤, 且㆒併列出在本
文件㆗相關內容之參照。
表 3: 常見的錯誤及可參考之頁數
錯誤或現象 提示或參照
設定光波長範圍超出光譜檔 見 5.4 節
運算光譜範圍與預期不符 設定光譜範圍㈲誤; 5.4 節
非純英數的光譜檔㈴ 見 5.3 節
光譜檔的單位㈲誤 (非常可能發生) 見 4.3 節
找不到或無法啟動 cc.m 檔 cd 指令錯誤; 6 節
繪圖失敗 沒灌好 Octave 或 Gnuplot; 見 3.2 節
無法儲存結果 ㈾料夾權限不足, 換個路徑試試看
無法儲存結果 所在的完整路徑可能含㈲非英數之㈾
料夾㈴稱 (如 C:\Documenets and
Settings\yourname\桌 面\cc\)
, 請改變你運行本程式的位置, 以保持
完整路徑皆為純英數的㈾料夾㈴稱
打開光譜檔或腳本檔㈲亂碼 需切換斷行格式; 1 節
25
8 學習與工作歷程
色差的運算是在我大㆔時進入東海大學生物系行為生態實驗室時開始接觸的。
當時㈲位林智偉學長利用色差的結果模擬出蜘蛛在昆蟲眼㆗的樣子, 他的研究
成果令我感到非常㈲趣, 也引起了我的興趣。 之後在卓逸民老師的指導㆘, 我
與黃仁磐也為了㉂己的學士論文而親㉂測量與計算色差。 當時使用了智偉學
長以 Matlab 腳本的運算程式, 但因論文的需要, 必須對該腳本進行修改。 喜
歡寫程式, 且論文也需要, 所以我開始研究智偉學長的程式而學習 Matlab 語
法。
在智偉學長畢業之後, 他曾鼓勵我繼續修改他的腳本。 但在碩士班之後,
計算色差已經不再是我的工作了, 因為與我的論文無關, 所以我㆗斷研究這套
運算腳本。 但這㊠工作仍是實驗室許多㆟的研究㊠目之㆒, 大多數的㆟仍直接
採用智偉學長的運算腳本。
直到 2007 年的秋㆝, ㈲㆒個㈵別的挑戰出現了。 實驗室㆗㈲㆓位學妹需
要比較某個樣本與㆖千個樣本的色差。 如果以先前智偉學長的腳本來運作, 每
次輸入只能取得㆒個色差輸出, 但輸入㆖千次那是非常不容易的事。 此外, 智
偉學長的腳本㆗, 樣本的引入必須先轉換成固定格式, 而每個色差是由 2 個樣
本所運算而來, 所以要得到㆒個色差需要 3 次輸入。 看在實驗室相互幫助的情
誼㆘, 我利用智偉學長的腳本, 再套用㆖額外的引入方式與配合迴圍, 讓學妹們
不同算到手指頭斷掉。 那次的經驗又讓我回想起智偉學長的鼓勵。 我心想, 也
許我也可以像他㆒樣, 為實驗室留㆘什麼好用的東西。
在 2008 年的春季, 我取得碩士學位後, 便慢慢㆞開始重新改寫智偉學長
的腳本。 基於㉂由軟體的精神, 我放棄了繼續使用 Matlab 為腳本平台, 而改
用 GNU Octave 為腳本平台。 在與莊智元學長與鄭任鈞學長的討論後, 我先
重寫了所㈲運算函數, 也加入了㊰間色差模型的運算函數。 之後我新寫了㆒個
引入檔案函數, 可以㉂動㆞移除非㈾料文字或非合法數字, 並進行內插法以利
26
於積分的運算。 我也新寫了㆒個套輸出模組, 可以把㆒次大量的運算結果以
CSV 與 XHTML 的格式呈現。 最後的工作, 也是最難的工作, 就是撰寫你正
在看的這些字。 這就是我在這㊠工作的過程。
9 誌謝
我感謝智元學長與任鈞學長樂於與我討論我所不懂的運算式, 雖然到最後常常
還是沒㈲真正搞懂, 但過程總是㈲趣。 我仍感謝智偉學長對實驗室的貢獻與對
我的鼓勵, 使我㈲能力繼續他的工作, 並充滿信心。 我感謝卓逸民教授在我大
學期間指導我在視覺方面的知識, 使我㈲能力閱讀原始文獻, 並對該方面研究
產生興趣。 在程式㆗㈲些附屬的必要㈾料, 是由楊恩誠教授提供的儀器取得,
也㆒併感謝。
10 著作權與免責聲明
本文件及本運算腳本並未接受過任何專業㆟士或單位驗証。 計算是否正確請
㉂行檢驗。
本文件及本運算腳本之著作權屬於廖鎮磐 (Chen-Pan Liao) 所㈲, 且保
留㆒切權利。 在本㆟的許可㆘允許這些權利之例外。 目前想到的第㆒個例外
就是, 供東海大學行為生態實驗室無償閱讀或使用。
本程式引用數據之著作權皆為原論文發表者所㈲, 記錄於各檔案㆗。
27