2009年6月14日 星期日

HSL 色彩空間原理

 

各位還記得上次我們在用 AXIS 206 測試的時候,我們用了一個神奇的視覺程式,先讓 camera 校準了一下,然後它就可以抓顏色了嗎?  在此解釋一下它的運作原理: HSL 色彩空間 (Hue, Saturation, Luminance.)

在這之前,我們先回顧一下,平常我們比較用 RGB 的色彩空間來描述一個圖片或畫面。電視,LCD螢幕,投影機都有用到RGB。不熟悉 RGB 原理的朋友們可以從這邊來復習一下:

維基百科: 三原色光模式

Wikipedia: RGB color model

用在於一些基本的顏色辨識應用上,RGB 通常是夠用的,因為你只要設定你要抓的R值,G值,還有B值範圍,基本上那個顏色區塊是可以被你隔離出來的。從下面的圖片我們可以看得到,這張圖片要是用RGB的 histogram 來看的話 (左下角),RGB各個區域有三根”刺”,這其實是因為在圖片裡灰色檔案櫃佔圖片面積居多,而灰色剛好又是RGB三色合成的。

image

我們把那三個刺隔離出來給大家看一下,有沒有發現被隔離出來的區域大部份都是櫃子?

image

當然,因為打光的關係,櫃子的某些部份是沒有被抓到的。在RGB色彩空間下做色彩辨識,很容易會被不平均的光源影響 (比較沒有打到光的部份,根本就已經幾乎是另外一種灰色了…

再試試看抓綠色燈罩的部份:

image

因為打光的關係,燈罩的右側反而是比較亮的。我們只能做個取捨,抓左側面積比較大的,比較暗的綠色。如果硬要亮暗綠色統統抓的話,那可能結果就會像這樣:

image

可憐啊,看來背景的一些”綠色”的東西也被抓進去了…

如果我們可以用另外一個方式,將亮度的影響降低,那或許效果會比較好一點。於是,現在就會用到HSL了。

HSL stands for HUE, SATURATION, and LUMINANCE color space that corresponds to projecting standard RGB color space. HSL separates out HUE from SATURATION and from brightness. Thus, the problem of luminance variation can be solved in this case since the LUMINANCE plane has been separated out.

因為HSL將亮度放在另外一個平面,而不是像RGB讓它跟顏色混在一起,看起來抓顏色應該會容易許多。重點是,當光源環境一直在改時(例如,機器人跑來跑去),追蹤能力會穩定許多! 請看以下:

image

以上都是用 NI Vision Assistant 的 Color Threshold 函式來完成,函式可以直接支援RGB或HSL色彩空間。

沒有留言:

張貼留言