• 沒有找到結果。

Canny edge detection 演算法

在文檔中 即時人臉影像偵測系統 (頁 21-0)

第三章 邊緣偵測

3.2 Canny edge detection 演算法

Step1 Smoothing

將整張影像I(i,j)先經過高斯平滑濾波器 G(i,j)(3-12)式,

然後再分別對x 方向與 y 方向計算其 Laplacian (3-13)式

~(3-14)式。意思同於對影像作線性 Laplacian of Gaussian 濾 波器。實作上即利用圖3.3 (a)遮罩對影像作旋積(convolution) 可以原始圖像看起來更為平滑,避免在對圖像作運算時,少 數極端的灰階值影響偵測結果,如:雜訊、歧異點。

※註:本文使用Grayscale Morphology 代替高斯濾波器,關 於型態學介紹於3.3 應用於影像處理的形態學(Morphology)。

Step2 Gradient

計算其梯度向量和大小,梯度向量表該點在平面上變化 最大的方向。在實際運算上,水平(垂直)方向上的梯度計算是

以經過平滑處理後的灰階圖像與 Sobel 遮罩各別作旋積後再 利用(3-4)式,以及對平滑後的 Q(i ,j)與 P(i ,j)取 inverse tangent,算出梯度近似值如(3-15)式。

Step3 Non-maximum suppression

將上一步所算出的inverse tangent 值,如同圖 3.4 所劃 分的方式辨別屬於哪個區域。然後該凸起點延著梯度方向比

較前後兩點,若小於則該點設為 0。此步驟可以使偵測出來 的邊緣不會過寬。

Step4 Hysteresis Thresholding

利用雙臨界值演算法(thredholding),做邊界的判別與連

結。首先設定兩個臨界值(較小臨界值 T

L、較大臨界值 T H)。

-當梯度大於 T

H,表示該點為邊緣上的一點。

-當梯度介於 T

H與 T

L之間,表示可能為邊緣上的一點。必 須還要看看附近的點是否為邊緣,才能判定。

-當梯度小於 T

L,表示該點並非邊緣。

這一步驟主要是為了要避免因為雜訊干擾下,所造成的幾 個問題:影像的整條邊緣變得斷斷續續,將不是邊緣的部份當 成邊緣偵測出,或是扭曲原來影像的邊緣。

Canny edge detection 擁有以下幾點好處,因此本文選用此演算 法。[3]

(1) 偵測錯誤率低:幾乎可以完全偵測到影像的邊緣。

(2) 定位效能好:圖像中真實邊界與演算之後邊界距離差異小。

(3) 良好的反應值:邊緣上的點都有唯一的反應值,因此偵測出來的 邊緣不會過寬。

▲圖 3.3 (a) 3x3 mask (b) 5x5 mask

▲圖 3.4 方向畫分圖

▲圖 3.5 Hysteresis Thresholding 示意圖

3.3 應用於影像處理的形態(Morphology)[4][5][6]

形態學是一種對物件作邊界處理的演算法,其特點為減少細部資

訊又可保留邊緣。基本上是利用一個 n*m 的像素矩陣與被處理的物 件進行像素運算。其中可以分為四種,所有形態學的應用都是以四種 運算混合使用。

假設 A 像素遮罩為被處理之圖像,B 像素遮罩為運算處理之遮 罩,B 像素遮罩又稱為結構元素(structuring elements)。

(1)擴散(dilation)

定義為 A♁B=∪A x;

x∊B。擴散以結構元素形狀來定義一個鄰

域內選擇 A+B 的最大值,所以灰階影像上進行擴散的效果為:

-如果 B 值均為正,則輸出影像傾向比輸入影像明亮。

-A 的黑暗細節會依據 B 的值與形狀減少或消除。如圖 3.6。

(2)浸蝕(erosion)

浸蝕則是可以讓圖像 A 的外形均勻縮小,若以數學式表示即 A○─B={w : B

w⊆A}。浸蝕以結構元素形狀來定義一個鄰域內選擇 最小值為基礎,所以灰階影像上進行浸蝕的效果為:

-如果 B 值均為正,則輸出影像傾向比輸入影像暗。

-輸入影像中比 B 小的區域,其亮度細節將被減少,減少程度取決 B 的形狀及振幅。如圖 3.7。

(3)斷開(opening)

先對圖像 A 作浸蝕再作擴散。一般表示為 A。B=(A○─B)♁B 亦可表示為 A。B=∪{B

w : B

w⊆A}。其功用在於可以除去影像中 之雜訊小點。如圖 3.8。

(4)閉合(closing)

與斷開相反,先對圖像 A 作擴散再作浸蝕。一般表示為

A‧B=(A♁B)○─B。其功用在於可以補影像中之小洞及將一些斷線

連接起來。如圖 3.9。

本文所使用的 Grayscale Morphology 是先用斷開再作閉合,

對影像作平滑的處理。以 Morphology 代替 Laplacian of

Gaussian,是因為前者定位效能與邊緣細化效果都比後者優良。

▲圖 3.6 (a)原圖 (b)擴散示意圖

▲圖 3.7 (a)原圖 (b)浸蝕示意圖

▲圖 3.8 (a)原圖 (b)斷開示意圖

▲圖 3.9 (a)原圖 (b)閉合示意圖

第四章 色彩系統

4.1 RGB 色彩系統

RGB 系統為電腦常採用的色彩資訊,原因可推至早期 CRT 螢幕 時的設計原理,由電子槍所產生的電子流打到屏幕磷光點上反射出的

是三原色光,而 RGB 正是以此為定義的色彩系統。

RGB 色彩系統是由紅色(Red)、綠色(Green)和藍色(Blue)的色光 三原色所組成。被稱為色光三原色的原因,是由於它們無法再進行分 解,而且也不能由其他色光混合出來。因為其混合的結果會得到越明

亮的色光,稱為「加色混合」,當三原色光皆以 100%混合時,則會 呈現白色光。

RGB 彩色模式是屬於一個三維的直角座標系,可以視作為立方 體座標系,如圖 4.1。其 R 相當於 X 軸;G 相當於 Y 軸;B 相當於 Z 軸。因此若用座標來表示,(1,0,0)代表紅色;(0,1,0)代表綠色;(0,0,1) 代表藍色。黑色在原點(0,0,0)的位置,白色則在立方體的另一端,座 標(1,1,1),如圖 4.2。當 R:G:B 等比例混合時,當 R、G、B 等量相 加時,因不受 RGB 任一成份的影響可視為灰階。

▲圖 4.1 RGB 色彩系統座標係

▲圖 4.2

4.2 YCbCr 色彩系統

YCbCr 和 YUV、YIQ 是常用於視訊、電視影像傳輸的色彩模式,

如圖 4.3。原理是依據人類對於亮度的變化比顏色的改變來的敏感,

所以利用減少顏色的頻寬而增加亮度的頻寬,使頻寬達到有效利用。

YUV 主要用於 PAL 視訊標準而 YIQ 則是用於 NTSC 視訊標準 上。其中的 Y 都代表亮度,即是由彩色轉換成灰階影像的灰階值或 稱之為亮度值(luminace),而其轉換公式(4-1)主要是依據人類的眼睛 對綠色(0.587)、紅色(0.299)、藍色(0.114)三原色的不同敏感度而來,

其中係數值越大則表人的眼睛對於該顏色較為敏感。

YCbCr 色彩系統又稱為 YPbPr 系統,簡稱 YCC 系統。它是由 YUV 系統正規化而來的一種色彩空間。定義於 CCIR

Recommendation 601 規格[9],規定 YCbCr 各為 8bit(即 0-255)的編 碼,其中 Y 為明亮程度,其值為 16 到 235,代表明亮程度由暗到亮,

共分為 220 個亮度等級。16 代表黑色,235 代表白色,並將其值±16 作為補償,使其值正規化至(0, 255)。而彩度 Cb 表偏藍色差向量,

Cr 表偏紅色差向量,其值皆為-112 到+112,並將其值+128 作為補償,

使其值(16, 240),共有 225x225 種彩度。

4.3 HSI 色彩系統

人眼並不能分解色彩的組成量,所以 RGB 或是 YCbCr 系統對 於人類是難以理解的,若有一系統能先將顏色分類,然後再控制色彩 的細節,那正符合我們人眼的視覺,依照此需求所設計的色彩系統正

HSI 色彩系統。

HSI 色彩系統將顏色分為色度(Hue)、飽和度(Saturation)、亮度 (Intensity)三個部分來分別作表示,如圖 4.4。此系統將色度定義在 0~360 的角度範圍,而飽和度與亮度的值定義為 0~1 之間,其轉換公 式為(4-2)~(4-5)式。

(1) Hue 色度

色度或稱為「色相」,指的是色彩相位,因此為一個角度。色 度就像一張對照表,將顏色指定到特定角度。例如:在 H=0∘時 為紅色系,H=120∘時為綠色系,H=240∘時為藍色系。由於色度

(2) Saturation 飽和度

飽和度是指色彩混濁的程度。飽和度越高,表顏色越鮮艷,

飽和度越低,表顏色越混濁。在同一色相中,飽和度最高者稱為

「純色」,其色彩中完全不含黑白成份。例如紅色係中,其飽和度 最高的就是純紅色。

(3) Intensity 亮度

亮度又可稱「明度」,指的是物體反射光的程度,也可以說是 光的能量。因此一張彩色影像的亮度資訊,相當於該影像的灰階 影像。

HSI 彩色模式可視為一個圓柱座標系,H 對應到Φ(切線向 量),S 對應到 R(半徑),I 對應到 Z(高度),如圖 4.6 所示。

▲圖 4.4 色彩三要素

▲圖 4.5 色相環

▲圖 4.6 HSI 色彩系統座標係

第五章 演算法

5.1 演算架構

5.1.1 程式構思

本文使用的人臉偵測方法,利用「邊緣偵測」和「膚色偵測」找 出人臉的皮膚部分。再依兩者所得到的結果作判斷,找出人臉位置。

5.1.2 步驟

本文使用的人臉偵測方法的程式其流程便如圖 5.1 所示,步驟如 下:

(1) 將處理前的即時影像縮為原影像的 1/4:因為電腦無法處理 640x480 及時影像這麼龐大的資料量,因此先作縮圖的動作。

(2) 邊緣偵測(canny edge detection):主要在作抓取的人臉的形狀,

可以準確的框出人臉位置。

(3) 膚色偵測(HSI color information):利用人臉膚色色彩資料,判 別可能為人臉訊息。利用HSI 色彩系統,判別是否為膚色。

(4) 合併:將邊緣偵測和膚色偵測的結果,判斷人臉位置。

5.2 邊緣偵測

5.2.1 程式構思

因為膚色色彩非均勻分佈於臉上,只利用膚色偵測,臉部邊緣陰 影處可能無法被偵測到,造成所偵測到的人臉是不完整的。因此本文 選用 Canny edge detection 偵測邊緣,其目的在找出人臉位置。

5.2.2 步驟

本文使用的邊緣偵測方法為 Canny edge detection,其流程便如5.2 所示,步驟如下:

(1) 先將 RGB 彩色影像轉為灰階影像。

(2) Morphology smoothing 消除雜訊。

(3) 求出其每個 pixel 的梯度向量和大小。

(4) 找出每個 pixel 梯度方向最大值。

(5) 設臨界值 TH、TL 找邊緣。

▲圖 5.2 邊緣偵測

5.3 色彩資訊偵測

5.3.1 程式構思

HSI 色彩系統是經過比較後,發現最符合人眼視覺的色彩系統。

因此本文選用 HSI 色彩系統的色彩訊息來判斷皮膚部分。其目的在 找出一個最佳中心點(H0,S0,I0)和半徑 R0。以(H0,S0,I0)為球心,R0

為半徑的球體,當其值在球體內,判別為皮膚;球體之外,視為非重 要訊息。

5.3.2 步驟

本文使用的膚色偵測的色彩模式 HSI color information,其流程 如圖 5.3 所示,步驟如下:

(1) 手動設定

(2) RGB 色彩系統轉為 HSI 色彩系統 (3) 判斷是否為膚色

▲圖 5.3 膚色偵測

5.4 設定不同環境的膚色取樣範圍

5.4.1 程式構思

起初利用單張影像去找其 HSI 值,再給定 HSI 範圍,發現其偵 測效果不彰,只對該張圖像有效。又鑒於在不同的環境、光線強弱和 攝影器材的不同,都會影響膚色取樣範圍。因此開始有「手動設定偵

設定點選要測量的物體,由程式計算其中心點(H0,S0,I0)和半徑 R0,

做為之後演算的依據。

5.4.2 步驟

手動點選偵測物體,計算其中心點和半徑。其流程如圖5.4 所示,

步驟如下:

(1) 擷取一張靜態影像。

(2) 用滑鼠點選所要偵測的色彩範圍。

(3) 滑鼠點選的影像,RGB 彩色訊息轉為 HSI 色彩訊息。

(4) 計算其中心點(H0,S0,I0)和半徑 R0。

▲圖 5.4 手動設定點選偵測物體的色彩範圍

第六章 結果討論與未來研究方向

6.1 實驗結果

我們將分成視窗介面分為兩頁。第一個頁面,設定在不同環境

下,偵測顏色的平均值:中心點和半徑,如圖 6.1。圖 6.1(a) 640x480 的即時影像;圖 6.1(b) 縮為原影像 1/4 的即時影像;圖 6.1(c) 擷取影 像,用滑鼠移動視窗點選偵測物的色彩資訊;圖 6.1(d) 點選視窗的 影像。

第二頁為偵測的結果,並將 Canny edge detection 和膚色偵測所 得到的結果,將是邊緣也是膚色的部份用白色表示;非邊緣但是膚色

的部份用紅色表示;其餘視為非臉部訊息,以黑色表示。如圖 6.2。

6.2(a) canny edge detection 結果;圖 6.2(b) 膚色偵測的結果;圖 6.2(c) 合併的結果。

▲圖 6.1 實驗結果(一)

▲圖 6.2 實驗結果(二)

6.2 不同條件下實驗結果比較

本文利用在不同條件下,比較偵測的效果的不同。表 6.1 是就各 種可能發生情況的實驗結果並加以探討。

▼表6.1 不同條件下偵測結果

分類依據 結果

圖像來源

不同的攝影設備經過擷取卡,讀取進來的色彩資訊不同。

不同的攝影設備經過擷取卡,讀取進來的色彩資訊不同。

在文檔中 即時人臉影像偵測系統 (頁 21-0)

相關文件