• 沒有找到結果。

下面章節則會介紹本系統的硬體與軟體是如何設計。在硬體方面,本系統是採用一

般市售的Webcam 改制而成的,將鏡頭反轉過來,讓輸入鏡頭影像由所小轉變為放大,

並在使用特製的平頭光源,讓其光源可以均勻的散射。而軟體則是使用MathWorks 公司 生產的MATLAB 下的 Simulink 做為發展平台[9],並設計出可以追蹤草履蟲的演算法。

3-1 硬體架構

本系統是採用Logitech 公司所生產的 QuickCam Communicate STX 130 萬畫素網路

視訊攝影機為影像擷取來源。本系統的硬體架構可以從圖3-1 的自製顯微影像平台架構

圖看出來,先把我們所要觀察的草履蟲,放置在生物樣本觀察區,影像則會由 Webcam

顯微鏡透過USB2.0 傳送至電腦上做處理。圖 3-2 為光源電路圖,主要為供給光源電源,

輸入電壓為 6V~9V,並有建立一電阻值為 500 的可調式電阻,可讓觀察人員自行調整 最適當的光源強度。圖3-3 的左邊為一般的 LED 燈泡的燈罩(1383-2SYGT-S530-E2_509),

而右圖為本實驗所用的LED 燈泡平頭式的燈罩(484-10SURT-S530-A3_608),兩者差異在

於,一般的LED 燈泡是聚焦的,容易造成光源分布的不平均,而造成偵測物體的錯誤,

而本實驗所用的 LED 燈泡,在頂端經過特殊處理,可讓光源變成均勻的散佈,圖 3-4

為燈泡的照射角度,左圖為一般普通的燈泡,光照角度小,光照角度小。右圖為本系統 所用的燈泡,光照角度較大,光源散射的距離較長[18]。

圖3- 1 自製顯微影像平台架構圖

圖3- 3 LED 燈罩 1383-2SYGT-S530-E2_509 與 484-10SURT-S530-A3_608

圖3- 4 LED 光照角度 1383-2SYGT-S530-E2_509 與 484-10SURT-S530-A3_608

3-2 軟體架構

草履蟲追蹤演算法在本系統所使用的軟體為美國 MathWorks 公司生產的 MATLAB 下的Simulink(圖形化動態系統開發/模擬工具)軟體[9],如圖 3-5 MATLAB 功能方塊圖所

鬆、有效率地完成資料分析及視覺化、應用程式開發、系統設計、模擬、產生程式碼及

再來將針對上述的各個階段進一步說明,圖3-6 為系統的設計流程。程式部份,是 使用軟體–Matlab Simulink 來做為程式編寫以及人機介面的開發軟體,圖 3-7 為草履蟲 追蹤演算法的程式整體圖,而圖 3-7 中(1)~(5)則是對應圖 3-6 系統設計流程(1)~(5)的步 驟。

圖3- 6 系統設計流程

圖3- 7 草履蟲追蹤演算法

3-2-1 Webcam 影像輸入

我們是用Matlab 這套軟體,可在 Command Window 鍵入 imaqhwinfo,則可查詢與 Matlab 擁有溝通協定的攝影機資訊,當搜尋得到時,才代表可用 Matlab 與攝影機之間 的溝通是沒有問題的(圖 3-8)。

圖3- 8 攝影機資訊

而下圖3-9(為 From Video Device 的設定圖,當我們設定好之後可以按下 Preview,

來測試是否是我們所需要的圖像資料輸出。此模塊的輸出訊號可以挑選單一輸出訊號線,

或是RGB 三條輸出訊號線,而在本系統的資料輸出型態則為單一訊號線。

圖3- 9 From Video Device 模塊設定

3-2-2 影像處理

影像處理這部分主要是把草履蟲的影像給萃取出來。首先是將由Webcam 所傳遞過

來的 RGB 影像格式的資料轉換成灰階資料型態,再將灰階轉換為二值化影像,而在此

模塊雖然標示著可以自動調整閾值,但在實驗過程中學生發現,在同一環境下所培養出 來的草履蟲,會因為時間上的改變,造成水質能見度的不同,以及草履蟲大小上的改變,

為了能夠更精確的追蹤出草履蟲,所以本研究放棄了自動調整二值化閾值,改由手動調 整,圖3-10 為二值化模塊內部的設定,圈選的部分則為手動調整閾值的部分。

圖3- 10 二值化模塊設定

之後再經過 NOT 邏輯閘的反轉以及型態學閉合運算。而一般在過濾雜點時通常是

用斷開運算,也可是物體變平滑。但在這之前我們有做過一次反轉,又加上形態學擁有 交換律的規則,所以在此處我們則是需要用到閉合運算。本研究所使用的遮罩 (Mask,

即一個 M-by-N 的矩陣)為 disk,大小為 5*5 的矩陣大小,圖 3-11 為遮罩的示意圖。圖 3-12 為 Closing 模塊的設定。

圖3- 11 Disk 遮罩示意圖

圖3- 12 Closing 模塊設定

Bounding box(目標物上下左右四點的位置),Bounding box 即為我們所輸出的 BBox,

BBox 為一個 4-by-N 的輸出,即為我們所過濾出來的目標物,上下左右四個頂點。而在 Label(標記),我們選用八連通標記法(8-connected)。而在 Maximum number of blobs 的 設定內,是讓我們選擇可以追蹤的最大數量,在測試方面我們是設定最大數量為兩個。

Specify minimum/maximum blob area in pixels 則是讓我們設定兩個面積的閾值,以用來 過濾較大與較小的雜點。Fill values 是當我們所偵測出來的目標物,中間若是有少許的 空缺時,則會依照我們所設定的值將其填補滿。

圖3- 13 Blob Analysis 模塊設定

圖 3-14 為整個影像處理模塊的程式圖,此程式段,則是把上述的模塊加以連結在 一起。而下面會介紹我們所用到的所有模塊功能。

圖3- 14 影像處理區塊

程式區塊說明:

:Color Space Conversion,色彩空間轉換,將 RGB 格式轉換成灰階型態。

:Autothreshold,二值化轉換,將灰階轉換成二值化格式。

:Logical Operator,Not 邏輯閘,將白色背景轉為黑色背景,而目標物則相反,可 幫助研究人員更清楚的觀察。

:Closing,型態學閉合運算,可將一些較明顯的雜點過濾掉。

:Blob Analysis,可計算出面積、重心座標、數量以及目標物的四個頂點,

並可在內部設置兩閾值,以消除較大與較小的雜點。

3-2-3 面積計算

圖3-15 為整個面積計算模塊的程式。X-pixel 與 Y-pixel 為目前所輸入的每個 Frame 大小,本研究是在320pixel*240pixel 的環境下所進行,但考慮到每位人員在研究上會有

所不同的需求,因此把它獨立出來,讓研究人員當有需要到不同Frame 大小時,則只需

更改這部分,即可自動算出每個 Pixel 所對應的公分大小。18.5 與 13.65 是使用擁有公 制刻度的鐵尺所量測出來的(圖 3-16),將目前 Frame 的大小與公制鐵尺所量測出來的範 圍相除,則可計算出1 個 Pixel 所對應出來的 X-Y 長度,再將 X-Y 長度相乘,就可對應 出每個Pixel 所對應出的平方公分,最後會將轉換好的單位面積大小顯示在 Area cm 模 塊上。

圖3- 15 面積計算區塊

圖3- 16 Webcam 所拍攝的範圍

下圖 3-17 為一般市售的微量尺在本實驗所製作的 Webcam 顯微鏡下觀測的結果,

其長度為 0.1cm,但由於本實驗所用的 Webcam 顯微鏡的可視範圍比微量尺的長度還要 寬,因此再搭配一般市面上所能購買到的一般精確度有到公厘的尺規,兩者搭配使用圖 3-18,左圖為 X 軸右圖為 Y 軸,量測出的範圍為 0.202cm 與 0.15cm,而放大倍率大約 為放大了五倍。

圖3- 18 Webcam 顯微鏡下的鐵尺

3-2-4 對原始影像加入註解

此區塊是為方便研究人員的觀察,所特別設計的,首先是將之前所計算出來目標物 的四個頂點加入框框與以圈選出來,圖3-19 為 Draw Shapes 模塊內部設定,Value(S)為 設定框框的顏色,所對應的參數[1 2 3]分別對應的為[R G B]。而 Insert Text 則是把前一

個模塊所算出來目標物的數量標示在畫面的左上角,圖3-20 為模塊內部設定,學生在

此設定的變數為%d,可接收的資料為 8 、16、32-bit signed/unsigned integer,而 Color value 是字型的顏色,所對應的參數[X Y Z]分別對應的為[R G B]。

圖3- 19 Draw Shapes 模塊設定

圖3-21 為原始影像與標示註記過後的影像示意圖。整體的程式為圖 3-22。此區塊 的功能是將計算出來的目標物,標示在圖片的左上方,並把目標物圈選出來。

圖3- 21 影像註解示意圖

圖3- 22 對原始影像加入註解區塊

程式區塊說明:

:Draw Shapes,將之前的模塊所計算出目標物上下左右四個頂點,加 入框框圈選出來。

:Insert Text,將所算出的數量標示在畫面的左上方。

3-2-5 速度計算及軌跡紀錄

此區塊主要是在計算出目標物的速度,並將軌跡及時的繪製出來。首先由 Blob

Analysis 所傳遞過來的訊號為 2-by-N 的矩陣,N 為目標物的數量,由於在 Simulink 繪圖 的模塊(XY Graph)只能接受兩個數值(scalar)的輸入,這兩個數值分別為 X 與 Y,極為只 接受2-by-1 的矩陣,因此必須先把 2-by-N 矩陣轉為 2-by-1 的矩陣才能進行繪製的動作,

所以當訊號進入時,本研究使用區塊Multiport Selector 將 2-by-N 矩陣轉為 2-by-1 矩陣,

圖3-23 為 Multiport Selector 模塊內部的設定,在 Select 設定為 Columns(行),而在 Output 則設為第一行輸出、第二行輸出至第N 行輸出,圖 3-24 為 Multiport Selector 輸出示意 圖,而在測試階段只對兩個目標物做追蹤,因此Multiport Selector 只有兩個輸出,若是 要做多個目標則在鍵入{[1],[2]……[N]}。

圖3- 23 Multiport Selector 模塊設定

圖3- 24 Multiport Selector 輸出示意圖

To File(及速度計算與軌跡紀錄區塊的Centroid1/2)模塊並不接受矩陣形式的輸入,因 此需將Multiport Selector所傳遞過來的矩陣型態轉換成向量的型態,才可做儲存的動作,

圖3-25為Data Type Conversion模塊的內部設定。

圖3- 25 Data Type Conversion 模塊設定

為計算草履蟲速度學生使用公式(3.1),先計算出目前重心座標與前一個重心座標的 距離,在與兩種心座標訊號的時間差相除,則可計算出目標物的速度,計算出的速度單 位為Cm2/S。時間差的讀取,是使用Probe模塊來讀取,圖3-26為模塊內部的設定,輸出 的時間資料格式為,雙精確度浮點數(double)。

X X Y Y

∆T ……… ……….公式(3.1)

X1,Y1:目標物之前的重心座標。

X2,Y2:目標物現在的中心座標。

∆T:目前的重心座標與之前的重心座標時間差。

圖3- 26 Probe 模塊設定

速度計算及軌跡紀錄區塊,主要是在計算出目標物的速度,並將軌跡及時的繪製出 來,如圖3-27 所示,下面會介紹我們所用到的所有模塊功能。

程式區塊說明:

:Multiport Selector,對輸入訊號,以行或列的方式選擇輸出。

:Data Type Conversion,轉變輸入訊號的資料格式。

:To File,將資料寫入檔案。

:Math Function,對輸入訊號做開根號。

:Probe,讀取兩訊號間的時間差。

:Product,對輸入訊號做相除。

相關文件