• 沒有找到結果。

打光器亮度設定及保存方式

一、 緒論

2.4 打光器亮度設定及保存方式

打光器可設定的亮度值為 1 至 64,相鄰二階的亮度關係為等差關係,差距為最大亮度之 1/64。控制電路採用標準的 UART 傳輸協定,並定義特定控制字元來表示設定那一階的亮 度,在校正時可於設定後即時驗證亮度,減少實驗過程中的變因。打光器使用 EEPROM 元件 提供亮度設定值的保存功能,EEPROM 的資料讀出及寫入的傳輸方式使用 I2C 傳輸協定,只 使用二線式控制方就可以達到正確的資料傳送及儲存。

8

2.4.1 UART 傳輸協定

Universal Asynchronous Receiver/Transmitter (UART)為一非同步傳輸方式,單線傳送,單 線接收,使用傳收兩端約定好的 Baud rate 及固定位置的控制位元、資料位元、同位位元來溝 通,設計時需使用 16 倍於 Baud rate 的取樣 clock 訊號來進行資料接收及同步,完整一個訊息 框如圖 7所示。圖 8為 FPGA UART Controller 中所使用的 State Machine 工作圖,設計只使用 3 個 state,IDLE,START 及 DATA,當 IDLE state 時,檢查序列接收資料 RXD 是否為 START 位元 0,如是則到 START state;在 START state 時再次檢查 RXD 被 16 倍於 Baud rate 的 clock 取樣後得到的 MAJORITY 結果,同樣為 0 時表示正確的收到 START 位元 0,state 變為 DATA,如否表示是雜訊觸動,state 回到 IDLE;在 DATA state 時,RX_SHIFTER 會依 Baud rate 的時間移入序列接收資料,位元數量為 8 位 DATA 加 1 位同位位元及 1 位 STOP 位元,共 10 個位元,資料接收完成後即回到 IDLE state。

1

0 0 0 1 0 0 1 1 0 1

START DATA [0xCA] P STOP

16x Clock Signal

圖7 UART 訊息框

DATA IDLE

START

RXD=0

RX_SHIFTER[0]=0 MAJORITY=0 MAJORITY=1

圖8 UART State Machine 工作圖

9

2.4.2 I2C 傳輸協定

Inter-Integrated Circuit (I2C) 為一常用 2 線式同步序列傳輸介面,傳輸速率為 100KHz 或 400KHz,控制訊號如圖 9所示,將裝置分為主(Host)及從(Device)兩端,Device 端會有一個 7 位元的裝置位址供 Host 端定址用,控制訊號中由 Host 端決定讀或寫,二端在不同的控制位置 時,以 Acknowledge 方式來進行傳輸交握(Handshaking),以此方式完成雙向資料的存取。圖 10為 FPGA I2C Host Controller 所使用的 State Machine 工作圖,state 分 IDLE,START,

DEVICE ADDR,WORD ADDR,DATA,STOP 及 RESTART 共 7 個 state。

當 IDLE state 時,等待控制訊號 init_cfg=1 時改變 state 至 START state,開始讀取或寫入 I2C Device;送出 start condition 後至 DEVICE ADDR state,在 I2C_count<8 不成立時即表示 已送出 7 位元位址資料及 RW 控制位元,此時檢查是否收到 NACK,如是,state 回到 IDLE,

如否,檢查 I2C_rw 與 init_done 是否同時為 1,表示 I2C host 要進行的動作為讀取 Device,而 且 word address 已經傳送過,state 要跳至 DATA state,如為其它,state 跳至 WORD ADDR state,開始傳送要讀取或寫入 EEPROM 中那個 word address,當 I2C_Count<8 不成立時即表示 已送出 8 位元的 word address,如 init_done=1,state 跳至 DATA state,開始寫入資料至 Device,如 init_done=0,表示 I2C host 要讀取 Device,state 跳至 STOP,再判斷 I2C_ack 與 init_done 不同時為 1,則跳至 RESTART state,重新經過 START,DEVICE ADDR 到 DATA state 讀取 Device 的資料(接前述 I2C host 要進行的動作為讀取 Device 處);在 DATA state 中,

因每次讀取及寫入的資料數皆為 6 個 word,所以當 I2C_byte>=5 時即表示已讀取或寫入完 成,I2C host 存取動作結果,state 跳至 STOP 再回到 IDLE。

10

圖9 I2C 訊息框

WORD ADDR

DATA DEVICE 

ADDR IDLE

STOP

RESTART START

Init_cfg=1

I2C_count<8 NACK

I2C_rw &

Init_done Others

Init_done=1 I2C_count<8

Others

I2C_ack &

Init_done

Others

I2C_count<8

I2C_byte>=5

圖10 I2C State Machine 工作圖

11

三、 多重亮度校正方法

打光器的多重亮度校正是關於如何於 64 階打光亮度中選用 6 個亮度階來使用的方法,這 6 個亮度階的亮度關係是等差級數或等比級數,所以只要找出打光器所使用的最低打光亮度及 最高打光亮度,即可採等差或等比計算方式找出其它 4 階打光亮度。以下內容說明如何找到最 低及最高打光亮度的方法。

3.1 校正條件與實驗環境

由於打光器使用於各種不同的場景,因此校正時也必須於各場景實際打光後,再擷取影像 進行分析。校正的時打光器的打光方式處於校正模式,採隨機攝影,再進行影像分析;又考慮 到背景也會影響影像分析結果,在影像分析前需取得背景影像,因此在每一次的校正攝影中,

前 5 秒影像只可以有背景,不可有前景物。此為固定的校正條件,使用於每一個校正實驗中。

實驗環境為使用一個自行設計製作的 16W 紅外線打光器與一支可設定固定曝光時間的 1/4 吋 CCD 攝影機,經由影像擷取卡及 RS-232 轉換線連接至一台有安裝 Matlab®的電腦,示 意圖如圖 11。攝影機高度可依實驗需要調整,攝影機使用 6mm 對焦鏡頭,與景物最適合的距 離為 5 到 10 公尺。

5 ~ 10m

NB + Matlab RS-232

Video Capture Dongle

Camera

圖11 實驗環境示意圖

3.2 校正方式及流程

校正的方式是使用章節3.1 所述之校正條件,隨機擷取影像,比較不同亮度的影像內容,

判斷光源是否過亮或過暗,以找出可用的最大及最小的光源強度。在此亮度範圍內,以等比或 等差級數的計算,取得所需要的打光強度設定值。圖 12為校正之流程圖,當校正一開始,需 設定打光器的打光模式為校正模式,讓打光亮度的改變為 1 至 64 階,再進行隨機擷取影像。

12

隨機影像的產生方式為對場景進行一段時間的影像擷取,在這段時間內可以任意加入不同的 人物,以不同的行進方式及距離增加影像變化。因時間決定可取得的影像資訊多寡,因人物 及行進方式及距離的不同,造成校正結果差異非常大,因此當隨機取得的影像資訊足以表達 實際的使用情況時,其校正結果將為最佳。

在進行影像分析之前需找到第一階影像亮度的位置,分析影像時才能將不同亮度階之影 像與其對應的背景進行分析比較,提高判定過亮或暗的準確度。最後依分析後的統計結果,

決定最小及最大亮度,以等比公式來計算打光器之設定值,即完成打光器之校正。以下各節 將依校正流程圖中之各步驟來說明。

圖12 校正流程圖

13

3.3 找出 64 階亮度背景影像

因為影像為隨機擷取,所以第一張影像不固定為那一階的打光亮度,因此在進行影像分 析前,需先找出各階亮度影像的順序位置。在校正時,打光器的打光亮度為 1 至 64 階亮度依 序變化,所擷取到的影像之 Mean 值變化如圖 13所示,以此亮度之 Mean 值變化特性,可以準 確的找出每張影像所對應到的打光亮度階。如圖 13中箭頭處所示,影像亮度 Mean 值由 160 改變為 30,即表示影像亮度 Mean 值為 160 之影像是以第 64 階打光亮度所擷取到的影像;影 像亮度 Mean 值為 30 之影像是以第 1 階打光亮度所擷取到的影像。此方法是以影像亮度 Mean 值的大幅度改變來找出第 1 階打光亮度的影像,而打光亮度是以 1 至 64 階順序改變的原則,

於是就能依此確定所有影像對應各階亮度的順序位置。此方法是以亮度變化的比例來找出是 否打光亮度正在由第 64 階改變為第 1 階,與影像亮度的 Mean 值無直接關係,所以此方法適 用於各種不同場景。

圖13 64 階亮度之 Mean 值變化特性

在進行校正隨機影像擷取時,預設前 5 秒為只有背景之影像,再從這 5 秒的影像中擷取出 64 張不同亮度的背景影像。要求需 5 秒的原因為 NTSC 影像的每秒張數為 29.97 張,打光器 的亮度階數為 64 階,大約每 2.14 秒就可以得到 64 張亮度皆不相同的影像。因為打光亮度的 改變與開始擷取影像的時間無相關性,所以如果在最差情況,第 65 張影像才找到影像與打光 亮度的對應順序,所以需要多 64 張影像時間來保證影像內容只有背景,也就是總時間至少為 4.28 秒內影像只有背景,取 5 秒整數值使用。由前述方法,找出各階亮度的影像順序位置後,

影像順序最前面 64 階亮度影像即是背景影像。

3.4 影像過亮或過暗的條件

影像是否過亮或過暗是一種主觀的說法,在影像分析中必須要以數學條件來定義,符合

14

條件即判定為過亮或亮暗。利用 Histogram 分析,將影像中相同灰度的點進行統計,得到灰度 0 至 255 的數量分佈,正常影像應包含很少的最小灰度 0(黑)及最大灰度 255(白),當此二值在

定義最大亮度值 Xmax、最小亮度值 Xmin、亮度設定階數 steps、差值 Diff、比值 Geom、每一 階的亮度設定值 V[steps]

15

圖 17為圖 16 (d)影像經過 Histogram Equalization 及 Sobel Filtering 後的結果,圖 16 (d)被 判斷為正常的影像,雖看起來偏暗,但經過灰度均化後,在圖 17(a)仍可清楚偵測出人物。再

16

經過 Sobel filtering 二值化的結果顯示於圖 17(b),同樣可準確的找到人物的輪廓,也就是找到 物件。人臉的偵測結果與影像二值化後是否能表示一個物件的邊緣有直接的關係,與影像中 的點之灰度值高低無關,只要點與點之間的灰度差值足以找出邊緣,影像能偵測出人臉的機 率就提高。

圖14 前景與背景之 Mean 值比較圖

(a)背景 Frame 64 (第 64 階亮度)

(b) A 標記處 Frame 192 (第 64 階亮度) (c) B 標記處 Frame 448 (第 64 階亮度) 圖15 背景與前景 A 及 B 標記處之影像差異

17

(a)第 2 階亮度 Frame 404 (過暗) (b)第 3 階亮度 Frame 405 (過暗)

(c)第 1 階亮度 Frame 467 (過暗) (d)第 2 階亮度 Frame 468 (正常) 圖16 不同亮度階過暗與正常之影像

圖17 原圖 16 (d) 經過 Histogram Equalization 及 Sobel Filtering 後之結果

4.1.2 背景有固定過度曝光區域的場景

此場景為背景有固定過度曝光的區域,人物由遠走至近,擷取 500 張影像進行分析,包 含前 4 秒約 120 張影像為背景。對每張影像進行 Mean 值計算,與背景進行比較。比較結果如 圖 18所示,藍色曲線為只有背景時的影像亮度 Mean 值,紅色曲線為有人物移動時的影像亮 度 Mean 值。

圖 18內的 A 標記處現象為有前景之影像,此時背景如圖 19(a)所示,前景影像如圖 19(b) 所示,前景為人物剛好出現在背景固定過度曝光之區域,其亮度 Mean 值變動量大,此現象可 了解到當背景有固定過度曝光之區域時當前景物體進入此區域時,影像亮度之計算結果會接

(a) Histogram Equalization (b) Sobel Filtering

18

近於背景,造成背景與前景之過度曝光判斷不正確。圖 18內的 B 標記處現象為有前景之影 像,前景影像如圖 19(c)所示,因前景人物過於接近攝影機,造成光源完全反射,使其過度曝 光區域極大,亮度 Mean 值也極大,此現象可以作為攝影機不正常使用之判定條件。

對每一張影像轉灰階影像後進行 Histogram 統計,計算灰階值大於 240 之點數與總點數之 比例,若大於 20%則判定為過亮,同一階亮度在背景若已過度曝光,前景也機乎會出現過度

對每一張影像轉灰階影像後進行 Histogram 統計,計算灰階值大於 240 之點數與總點數之 比例,若大於 20%則判定為過亮,同一階亮度在背景若已過度曝光,前景也機乎會出現過度

相關文件